Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro ao tentar o primeiro predict

Traceback (most recent call last):
  File "classificacao.py", line 19, in <module>
    print (modelo.predict(misterioso))
  File "/Users/josecarlosferreira/machinelearning/lib/python3.6/site-packages/sklearn/naive_bayes.py", line 66, in predict
    jll = self._joint_log_likelihood(X)
  File "/Users/josecarlosferreira/machinelearning/lib/python3.6/site-packages/sklearn/naive_bayes.py", line 724, in _joint_log_likelihood
    X = check_array(X, accept_sparse='csr')
  File "/Users/josecarlosferreira/machinelearning/lib/python3.6/site-packages/sklearn/utils/validation.py", line 441, in check_array
    "if it contains a single sample.".format(array))
ValueError: Expected 2D array, got 1D array instead:
array=[1 1 1].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

Apareceu isto no meu terminal!

5 respostas

Esqueci de mandar meu código. Aqui está:

from sklearn.naive_bayes import MultinomialNB

pig1 = [1, 1, 0]
pig2 = [1, 1, 0]
pig3 = [1, 1, 0]
dog1 = [1, 1, 1]
dog2 = [0, 1, 1]
dog3 = [1, 0, 1]

dados = [pig1, pig2, pig3, dog1, dog2, dog3]

marcacoes = [1, 1, 1, -1, -1, -1]

misterioso = [1, 1, 1] 

modelo = MultinomialNB()

modelo.fit(dados, marcacoes)
print (modelo.predict(misterioso))

Se alguém puder por favor me ajudar!

3 dias e nada de resposta...

José, bom dia,

Não sou um expert em Machine Learning, mas posso tentar ajudar. Já tive problemas parecidos com o erro que você está recebendo, formato do array esperado. Mas eu utilizava a biblioteca Numpy do python para trabalhar com os arrays (NumpyArrays no caso).

O que o método predict espera é um array bidimensional e não um simples array (com uma dimensão, no caso "misterioso = [1,1,1]". Tente usar a sugestão que ele dá, usando o método Reshape.

solução!

Olá Daniel, então eu tentei utilizar o Reshape e não funcionou. Mas agora estou com outro problema que é o fato de o Terminal não estar reconhecendo o pacote SKLEARN. Ele diz que esse pacote não exite, olha que já verifiquei tudo, reinstalei e tudo mais!

Vi uma sugestão que talvez funcione que é misterioso = [[1,1,1]], pois assim o código seria tratado como um Array bidimensional!