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

Dúvidas sobre modelo.predict Python3

o python3 não esta rodando a aula do classifica_acessos.py, tentei duas formatações diferentes, separei por persona, depois reduzi ao modelo mais simples do próprio exemplo, igualmente rodei no console (terminal bash do mac), e tentei no ambiente do Pycharm, instalando evidentemente o pip e o sci*** nessa IDE , me aparece a seguinte mensagem no PyCharm, que são mensagens mais centradas' "DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). y = column_or_1d(y, warn=True)"

Ao espaçar me veio resultado, porém com warning da seguinte mensagem. "DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). y = column_or_1d(y, warn=True)"

Ps.: estou apanhando um bocado, nessa lib. se puder me ajudar eu agradeço

forte abraço e segue o código original

from dados import carregar_acessos

x, y = carregar_acessos()

from sklearn.naive_bayes import  MultinomialNB
modelo = MultinomialNB()
modelo.fit(x, y)

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

Olá Durval, tudo bem?

Esse erro está acontecendo porque a biblioteca está falando que a variável y não é um array de uma dimensão, pode me mostrar o seu código do arquivo carrega_acessos, por favor? Talvez esse problema esteja ocorrendo na hora de carregar esses dados.

claro meu herói Yuri, primeiramente é uma honra que meu querido professor me responda... agradeço antecipadamente.

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:
        dado = [int(home), int(contato), int(contato)]
        x.append(dado)
        y.append([int(comprou)])

    return x, y

Opa Durval, tudo certo?

Veja que no seu arquivo carrega_acessos, você coloca os dados da variável comprou em uma lista ([ ]) e depois adiciona essa lista na variável y:

y.append([int(comprou)])

Na verdade, basta você remover os colchetes que o código código volta a funcionar. Dessa forma, a lista y terá apenas uma dimensão. No final, o código do carrega_acessos pode ficar assim:

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:
        dado = [int(home), int(contato), int(contato)]
        x.append(dado)
        y.append(int(comprou))

    return x, y
solução!

Muito obrigado amigo, você com olhos de águia viu o erro do noob aqui! (´-`).。oO