1
resposta

Aula 3 - Resultado da previsão sempre dando '1' (comprou)

Ola, executei os codigos da aula 3, tudo funcionou como esperado, inclusive o resultado da precisão do algoritmo, mas ao analisar os dados que o modelo previu percebe-se que ele previu '1' (comprou) para todas as linhas inclusive se fizer o teste com os dados de treino.

Gostaria de saber se seria isso msm

def calcula_precisao(marcacoes_testes, resultados):
    diferencas = marcacoes_testes - resultados
    acertos = 0
    for d in diferencas:
        if d == 0:
            acertos = acertos + 1
            pass
        pass    
    total_de_elementos = len(marcacoes_testes)
    precisao = (acertos / total_de_elementos) * 100.0
    return precisao
    pass

import pandas as pd

df = pd.read_csv('busca.csv')

X_df = df[['home', 'busca', 'logado']]
Y_df = df['comprou']

Xdummies_df = pd.get_dummies(X_df)
Ydummies_df = Y_df

X = Xdummies_df.values
Y = Ydummies_df.values

porcentagem_treino = 0.9

tamanho_de_treino = int(porcentagem_treino * len(Y))
tamanho_de_teste = len(Y) - tamanho_de_treino

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

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

analise = df[-tamanho_de_teste:]

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

previsao = modelo.predict(teste_dados)

analise['Previsao'] = previsao
analise['Correto'] = analise['comprou'] == analise['Previsao']

analise = analise.sort_values(['Correto','comprou','busca'])

precisao = calcula_precisao(teste_marcacoes, previsao)

print(analise)
print(precisao)
print(previsao)

Resultado do cod:

      home       busca  logado  comprou  Previsao  Correto
932     0  algoritmos       0        0         1    False
939     1  algoritmos       0        0         1    False
981     0  algoritmos       0        0         1    False
992     1  algoritmos       0        0         1    False
915     0        ruby       0        0         1    False
919     1        ruby       0        0         1    False
930     1        ruby       0        0         1    False
931     1        ruby       0        0         1    False
935     1        ruby       0        0         1    False
973     1        ruby       1        0         1    False
976     1        ruby       0        0         1    False
977     1        ruby       0        0         1    False
978     0        ruby       0        0         1    False
980     1        ruby       0        0         1    False
985     1        ruby       1        0         1    False
994     0        ruby       1        0         1    False
995     0        ruby       0        0         1    False
999     0        ruby       1        0         1    False
902     1  algoritmos       1        1         1     True
904     1  algoritmos       1        1         1     True
905     1  algoritmos       1        1         1     True
908     0  algoritmos       0        1         1     True
910     1  algoritmos       1        1         1     True
911     1  algoritmos       0        1         1     True
912     0  algoritmos       1        1         1     True
913     1  algoritmos       0        1         1     True
914     0  algoritmos       1        1         1     True
916     1  algoritmos       1        1         1     True
922     1  algoritmos       1        1         1     True
924     1  algoritmos       1        1         1     True
...
[100 rows x 6 columns]
82.0
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
1 resposta

Olá Rheidner, tudo bem?

Realmente, esse nosso algoritmo prevê um para todos as entradas. Esse algoritmo será debatido um pouco mais adiante no curso.