1
resposta

Retornando valor diferente do da aula

Na aula Utilizando o algoritmo MultinomialNB, meu código retorna uma valor diferente, acredito que ele não esteja conseguindo ler os valores corretamente, utilizo python3

arquivo dados.py

import csv
from re import X
#define a funcao e cria as string para dados e marcacoes
def carregar_acessos():
    X = []
    Y = []
#abre o arquivo dos dados e le com reader()
    arquivo = open('acesso.csv', 'r')
    leitor = csv.reader(arquivo)
    next(leitor)
    #cria as classes e define os valores
    for home, como_funciona, contato, comprou in leitor:

#utiliza append() para add os dados nas classes
        X.append([int(home),
            int(como_funciona),
            int(contato)])
        Y.append(int(comprou))

        return X, Y

arquivo classificacao_acessos.py

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],[0,1,0],
                     [1,0,0], [1,1,0], [1,1,1]]))

Ele retorna sempre zero [0,0,0,0,0]

1 resposta

Oi, Willian! Tudo bem com você?

Desculpa a demora em te trazer um retorno.

Verificando o código do professor e o seu código, encontro uma pequena divergência que pode ser o motivo de o resultado de valores serem diferentes da aula. No arquivo dados.py o comando de retorno da função, return X, Y, está dentro da estrutura do laço for, no entanto, no código do instrutor este comando se dá fora do laço:

import csv
from re import X

# define a funcao e cria as string para dados e marcacoes
def carregar_acessos():
    X = []
    Y = []
    #abre o arquivo dos dados e le com reader()
    arquivo = open('acesso.csv', 'r')
    leitor = csv.reader(arquivo)
    next(leitor)
    #cria as classes e define os valores
    for home, como_funciona, contato, comprou in leitor:
        #utiliza append() para add os dados nas classes
        X.append([int(home),
            int(como_funciona),
            int(contato)])
        Y.append(int(comprou))
    return X, Y

Pelo que testei, ao colocar o return X, Y fora da estrutura do laço, o retorno fica semelhante ao mostrado em aula: [1 0 0 0 0]

Espero ter te ajudado! Quaisquer outras dúvidas em relação a isso estarei disponível,

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software