2
respostas

Aula 7 - atividade 4 - Erro no treino do MLkNN

Boa noite pessoal, tudo certo?

Estou com um erro aqui e não sei o que estou fazendo de errado.

O meu código:

classificador_mlknn = MLkNN(k=10)

classificador_mlknn.fit(perguntas_treino_tfidf, tags_treino_array)
resultado_mlknn = classificador_mlknn.score(perguntas_teste_tfidf, tags_teste_array)

print(f'Acurácia: {round(100 * resultado_mlknn, 2)}%')

previsao_mlknn = classificador_mlknn.predict(perguntas_teste_tfidf)
hamming_loss_mlknn = hamming_loss(tags_teste_array, previsao_mlknn)


print(f'Hamming Loss: {round(hamming_loss_mlknn, 2)}')

E o erro:

TypeError                                 Traceback (most recent call last)
<ipython-input-26-8b4f0e30d2c9> in <module>()
      1 classificador_mlknn = MLkNN(k=10)
      2 
----> 3 classificador_mlknn.fit(perguntas_treino_tfidf, tags_treino_array)
      4 resultado_mlknn = classificador_mlknn.score(perguntas_teste_tfidf, tags_teste_array)
      5 

/usr/local/lib/python3.7/dist-packages/skmultilearn/adapt/mlknn.py in fit(self, X, y)
    216         self._prior_prob_true, self._prior_prob_false = self._compute_prior(self._label_cache)
    217         # Computing the posterior probabilities
--> 218         self._cond_prob_true, self._cond_prob_false = self._compute_cond(X, self._label_cache)
    219         return self
    220 

/usr/local/lib/python3.7/dist-packages/skmultilearn/adapt/mlknn.py in _compute_cond(self, X, y)
    163         """
    164 
--> 165         self.knn_ = NearestNeighbors(self.k).fit(X)
    166         c = sparse.lil_matrix((self._num_labels, self.k + 1), dtype='i8')
    167         cn = sparse.lil_matrix((self._num_labels, self.k + 1), dtype='i8')

TypeError: __init__() takes 1 positional argument but 2 were given

Assim, no método fit() do classificador MLkNN eu não tenho que passar os dois argumentos, as perguntas de treino e as tags de treino? Não entendi pq ele tá me retornando esse erro.

E nem é problema com a errata que colocaram antes da aula.

Alguém poderia ajudar?

2 respostas

Mesmo problema aqui...

Parece q é um problema recente com o scikit learn.

Tentei essa solução q achei no stack overflow mas não funcionou:

https://stackoverflow.com/questions/69734051/mlknn-int-takes-1-positional-argument-but-2-were-given-with-fit-method#comment124249802_69734051