1
resposta

Erro ao Executar python classificacao.py

Boa Tarde, ao rodar o programa da Aula 01 Item 04 de Machine Learning, python3 classificacao.py, aparece o seguinte erro:

Traceback (most recent call last): File "classificacao.py", line 22, in print(modelo.predict(teste)) File "/usr/local/lib/python3.6/dist-packages/sklearn/naive_bayes.py", line 66, in predict jll = self.jointlog_likelihood(X) File "/usr/local/lib/python3.6/dist-packages/sklearn/naive_bayes.py", line 730, in jointlog_likelihood X = check_array(X, accept_sparse='csr') File "/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py", line 570, in check_array % (array.ndim, estimator_name)) ValueError: Found array with dim 3. Estimator expected <= 2.

Segue o meu código que está sendo executado.


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]

misterioso1 = [[1, 1, 1]]
misterioso2 = [[1, 0, 0]]

teste = [misterioso1, misterioso2]

from sklearn.naive_bayes import MultinomialNB

modelo = MultinomialNB()
modelo.fit(dados, marcacoes)
print(modelo.predict(teste))

1 resposta

Olá Alessandro.

O problema está na declaração do misterioso1 e misterioso2, da maneira que foi declarado ficou uma lista dentro de uma lista.

misterioso1 = [[1, 1, 1]]
misterioso2 = [[1, 0, 0]]

E depois é declarado uma lista a teste , então é uma lista com listas dentro.

teste = [misterioso1, misterioso2]

Dessa maneira o predict não aceita, pois não é o formato que ele está esperando:

print(modelo.predict(teste))

Gerando o erro:

ValueError: Found array with dim 3. Estimator expected <= 2.

Para corrigir basta remover os colchetes:

misterioso1 = [1, 1, 1]
misterioso2 = [1, 0, 0]

Espero ter ajudado, qualquer duvida não hesite em perguntar.

Bons Estudos.