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

problema ao rodar código com a tabela acesso

quando tento executar isso:

from dados import carregar_acessos
from sklearn.naive_bayes import MultinomialNB

x,y = carregar_acessos()

modelo = MultinomialNB()
modelo.fit(x,y)

print(modelo.predict([[1,0,1]]))

tenho esse erro:

/home/karl/.local/lib/python3.8/site-packages/sklearn/utils/validation.py:63: FutureWarning: Arrays of bytes/strings is being converted to decimal numbers if dtype='numeric'. This behavior is deprecated in 0.24 and will be removed in 1.1 (renaming of 0.26). Please convert your data to numeric values explicitly instead.
  return f(*args, **kwargs)
Traceback (most recent call last):
  File "/home/karl/.local/lib/python3.8/site-packages/sklearn/utils/validation.py", line 710, in check_array
    array = array.astype(np.float64)
ValueError: could not convert string to float: 'acessou_home'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/karl/projetos/machine_learning/main.py", line 7, in <module>
    modelo.fit(x,y)
  File "/home/karl/.local/lib/python3.8/site-packages/sklearn/naive_bayes.py", line 612, in fit
    X, y = self._check_X_y(X, y)
  File "/home/karl/.local/lib/python3.8/site-packages/sklearn/naive_bayes.py", line 477, in _check_X_y
    return self._validate_data(X, y, accept_sparse='csr')
  File "/home/karl/.local/lib/python3.8/site-packages/sklearn/base.py", line 433, in _validate_data
    X, y = check_X_y(X, y, **check_params)
  File "/home/karl/.local/lib/python3.8/site-packages/sklearn/utils/validation.py", line 63, in inner_f
    return f(*args, **kwargs)
  File "/home/karl/.local/lib/python3.8/site-packages/sklearn/utils/validation.py", line 871, in check_X_y
    X = check_array(X, accept_sparse=accept_sparse,
  File "/home/karl/.local/lib/python3.8/site-packages/sklearn/utils/validation.py", line 63, in inner_f
    return f(*args, **kwargs)
  File "/home/karl/.local/lib/python3.8/site-packages/sklearn/utils/validation.py", line 712, in check_array
    raise ValueError(
ValueError: Unable to convert array of bytes/strings into decimal numbers with dtype='numeric'

2 respostas

ainda sem solução ;-;

solução!

Oii Kaique, tudo certo por ai? Espero que sim!

Testei seu código por aqui e ele deu certinho, vou deixar a imagem a seguir para que você veja que estou tendo a mesma resposta que o instrutor, então pode ser algum passo anterior que está gerando problemas, vamos fazer por partes, ok?

rodando o código que o aluno disponibilizou na questão dele. A IDE usada é o VSCode, e tem 3 arquivos abertos, classificacao.py, dados.py e classifica_acessos,py, os 3 foram usados no curso, o tema da IDE é escura, então os códigos tem cores bem fortes mesclado com letras em branco para destaque

Durante as aulas, o instrutor trocou alguns nomes, como de acesso_home para home, e o código de dados.py ficou dessa maneira aqui:

import csv

def carregar_acessos():
    X = []
    Y = []

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

    next(leitor)

    for home, como_funciona, contato, comprou in leitor:

        X.append([int(home),
            int(como_funciona),
            int(contato)])
        Y.append(int(comprou))

    return X, Y

Depois de alterar esses nomes no código, foi necessário alterar os nomes no arquivo csv que temos, para isso você pode abrir ele em algum editor de texto e alterar os nomes da primeira linha, e ele vai ficar como essa imagem:

Cabeçalho do arquivo csv depois das alterações dos nomes de cada coluna. O arquivo foi aberto no VSCode, que está com tema escuro, então a imagem é predominantemente azul escura, com as letras em branco.

Você consegue conferir se esses outros pontos estão dessa forma também?

Estarei aqui esperando seu retorno!