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

Erro na execução do comando

[é gordinho?, tem perninha curta?, faz auau?]

porco1 = [1, 1, 0] porco2 = [1, 1, 0] porco3 = [1, 1, 0] cachorro1 = [1, 1, 1] cachorro2 = [0, 1, 1] cachorro3 = [0, 1, 1]

dados = [porco1, porco2, porco3, cachorro1, cachorro2, cachorro3]

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

misterioso = [1, 1, 1]

from sklearn.naive_bayes import MultinomialNB

modelo = MultinomialNB()

modelo.fit(dados, marcacoes)

print(modelo.predict(misterioso))

Executei o comando: ~/Documents/Cursos/Machine Learning - Introdução à classificação $ python3 classificacao.py

Apareceu o erro:

Traceback (most recent call last): File "classificacao.py", line 22, in print(modelo.predict(misterioso)) File "/Users/fmourafe/opt/homebrew/lib/python3.6/site-packages/sklearn/naive_bayes.py", line 66, in predict jll = self._joint_log_likelihood(X) File "/Users/fmourafe/opt/homebrew/lib/python3.6/site-packages/sklearn/naive_bayes.py", line 724, in _joint_log_likelihood X = check_array(X, accept_sparse='csr') File "/Users/fmourafe/opt/homebrew/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.

Como devo proceder ???

2 respostas
solução!

Olá Francisco, tudo bem?

você consegue resolver esse erro passando uma lista contendo o elemento misterioso (print(modelo.predict([misterioso]))):

#[é gordinho?, tem perninha curta?, faz auau?]

porco1 = [1, 1, 0]
porco2 = [1, 1, 0]
porco3 = [1, 1, 0]
cachorro1 = [1, 1, 1]
cachorro2 = [0, 1, 1]
cachorro3 = [0, 1, 1]

dados = [porco1, porco2, porco3, cachorro1, cachorro2, cachorro3]

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

misterioso = [1, 1, 1]

from sklearn.naive_bayes import MultinomialNB

modelo = MultinomialNB()

modelo.fit(dados, marcacoes)

print(modelo.predict([misterioso]))

Funcionou. Obrigado Yuri Matheus