Oii Tiago, como você está?
Sinto muito pela demora em obter um retorno.
Esse erro ocorre quando chamamos a função passando o argumento de forma nomeada e o nome que passamos não condiz com o nome original do parâmetro.
Para exemplificar, veja a função soma
que possui dois parâmetros: a
e b
:
def soma(a, b):
return a + b
Ao chamarmos a função passando os argumentos de forma posicional, ou seja, primeiro o valor de a
e depois o valor de b
teremos o seguinte resultado:
soma(3, 4)
# Resultado: 7
Agora, passando os argumentos de forma nomeada, ou seja, dizendo qual valor é o a
e qual valor é o b
:
soma(b=3, a=4)
# Resultado 7
Nada mudou, certo?! Porém, se passamos os argumentos de forma nomeada e o parâmetro não existir, por exemplo o x, obteremos o mesmo erro que foi obtido em seu código:
soma(a=3, x=4)
# Resultado: TypeError: soma() got an unexpected keyword argument 'x'
E isso porque a função não possui o parâmetro x
, mas sim o parâmetro a
e b
.
Tendo como base isso, e o log de erro apresentado, a sua função distanciaTodos
não possui o parâmetro n
, provavelmente está escrito com outro nome, e ao fazer distanciaTodos(voceID, n = n)
a função desconhece o parâmetro n, por isso o erro é apresentado.
No código da aula o parâmetro n é chamado de numero_de_usuarios_a_analisar
, como mostro abaixo:
def distancia_de_todos(voce_id, numero_de_usuarios_a_analisar = None):
todos_os_usuarios = notas['usuarioId'].unique()
if numero_de_usuarios_a_analisar:
todos_os_usuarios = todos_os_usuarios[:numero_de_usuarios_a_analisar]
distancias = [distancia_de_usuarios(voce_id, usuario_id) for usuario_id in todos_os_usuarios]
distancias = list(filter(None, distancias))
distancias = pd.DataFrame(distancias, columns = ["voce", "outra_pessoa", "distancia"])
return distancias
E a chamada é feita da seguinte forma:
mais_proximos_de(1, n_mais_proximos = 2, numero_de_usuarios_a_analisar=300)
Faça a análise desses trechos e tente efetuar a correção. Caso não obtenha êxito, compartilhe seu notebook completo para que eu possa te ajudar melhor.
A título de curiosidade, se quiser entender sobre a diferença entre argumento e parâmetro, neste tópico explico a diferença dessas duas palavrinhas.
Qualquer dúvida fico à disposição.
Abraço e bons estudos!