8
respostas

Erro no código

Rodei o código sugerido mas estou recebendo os seguintes erros:

D:\Cursos Alura\Machine Learning 1>python classifica_acessos.py
Traceback (most recent call last):
  File "classifica_acessos.py", line 12, in <module>
    modelo.fit(treino_dados, treino_marcacoes)
  File "C:\Users\marrey.PTIN-NB001908\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\naive_bayes.py", line 604, in fit
    self._count(X, Y)
  File "C:\Users\marrey.PTIN-NB001908\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\naive_bayes.py", line 707, in _count
    if np.any((X.data if issparse(X) else X) < 0):
TypeError: '<' not supported between instances of 'numpy.ndarray' and 'int'

D:\Cursos Alura\Machine Learning 1>

Alguém poderia me orientar sobre estes erros e como fazer para prosseguir?

Obrigado,

8 respostas

Oi Marrey, tudo bem? Estou procurando por alguém pra te ajudar, mas nesse meio tempo queria saber: você já resolveu o problema? Ainda precisa de ajuda? Desculpa a demora...

Caro Wanderson,

Obrigado pelo retorno. Espero que você consiga encontrar alguém que possa me ajudar. Ainda estou parado nesse mesmo problema. No caso específico deste curso, não vejo vantagem em prosseguir sem antes resolver esse bug.

Obrigado!

Entendo, já estou vendo isso. Pra facilitar, compartilha aqui o código do classifica_acessos.py ?

Marrey, parece que você está comparando um array com um integer, tipo:

[1,2,3] < 4

De uma maneira que não está funcionando. Sugiro imprimir os dois lados da comparação para entendermos o que está acontecendo

att

Caro Guilherme, obrigado pelo retorno. O código que estou rodando é simples, conforme segue:

from dados import carregar_acessos
X,Y = carregar_acessos()

treino_dados = X[:90]
treino_marcacoes = Y[:90]

teste_dados = X[-9:]
teste_marcacoes = Y[-9:]

from sklearn.naive_bayes import MultinomialNB
modelo = MultinomialNB()
modelo.fit(treino_dados, treino_marcacoes)

resultado = modelo.predict(teste_dados)
print(resultado)

Não consigo achar nenhuma comparação como a que você citou.

Alguma ideia?

Obrigado!

Bom dia Marrey, como o erro é na linha do fit, e internamente tem uma comparação (na mensagem de erro):

    if np.any((X.data if issparse(X) else X) < 0):

Vou assumir que tem algo de estranho com o treino_dados. Pode compartilhar seu módulo carregar_acessos também por favor? Ai consigo rodar exatamente o mesmo código que você e achamos o problema.

Qual a versão do python que está usando?

att

Guilherme, o carregar_acessos está em um arquivo chamado dados.py e o código é o seguinte:

#importar acessos

import csv

def carregar_acessos():
    dados = []
    marcacoes = []

    arquivo = open('acesso.csv', 'r')
    leitor = csv.reader(arquivo)

    for home,como_funciona,contato,comprou in leitor:

        dados.append([home,como_funciona,contato])
        marcacoes.append(comprou)

    return dados, marcacoes

A versão do python é :

D:\Cursos Alura\Machine Learning 1>python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

Obrigado,

Obrigado! Achei aqui. O csv vem com um cabeçalho que você quer ignorar, por isso o next no código a seguir. Além disso, precisamos converter os valores para inteiros, repara na diferença no meu codigo:

def carregar_acessos():
    dados = []
    marcacoes = []

    arquivo = open('acesso.csv', 'r')
    leitor = csv.reader(arquivo)
    next(leitor)

    for home,como_funciona,contato,comprou in leitor:

        dados.append([int(home),int(como_funciona),int(contato)])
        marcacoes.append(int(comprou))

    return dados, marcacoes

[]s e bons estudos!