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

Código completo para demonstração da importância de se utilizar mesmos dados

Veja a importância da utilização dos mesmo dados para compararmos dois algoritmos de comparação:

Alterou-se os valores do algoritmo base de 'Y' para 'teste_marcacoes'.

Aparentemente são os mesmos dados, porém, na prática são diferentes! Pois o teste_marcacoes faz parte de 10% do Y, ou seja, precisamos fazer com que o algoritmo base utilize também esses mesmo 10%.

RESULTADO:

A importância de utiliarmos os mesmos dados.
Observe o que acontece se utilizarmos os dados diferentes nos algoritmos
Substituimos para a taxa de acerto base, o valor de 'Y' por 'teste_marcacoes'
Teremos como resultado: 'Taxa de acerto do algoritmo = Taxa de acerto base'

Taxa de acerto do algoritmo: 82.000000
100
Taxa de acerto base: 82.000000

CÓDIGO COMPLETO:

import pandas as pd
from collections import Counter

# buscas com sim e nao
df = pd.read_csv('buscas_sim_nao.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

# Forma Genérica. Seja: 1 e 0, ou sim e não, ou outros...
acerto_base = max(Counter(Y).values())
taxa_de_acerto_base = 100.0 * acerto_base / len(Y)
print("Taxa de acerto base: %f" % taxa_de_acerto_base)

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:]

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

resultado = modelo.predict(teste_dados)

acertos = resultado == teste_marcacoes

total_de_acertos = sum(acertos)
total_de_elementos = len(teste_dados)

print("A importância de utiliarmos os mesmos dados.")
print("Observe o que acontece se utilizarmos os dados diferentes nos algoritmos")
print("Substituimos para a taxa de acerto base, o valor de 'Y' por 'teste_marcacoes'")
print("Teremos como resultado: 'Taxa de acerto do algoritmo = Taxa de acerto base'")

taxa_de_acerto = 100.0 * total_de_acertos / total_de_elementos
print("Taxa de acerto do algoritmo: %f" % taxa_de_acerto)
print(total_de_elementos)

acerto_base = max(Counter(teste_marcacoes).values())
taxa_de_acerto_base = 100.0 * acerto_base / len(teste_marcacoes)
print("Taxa de acerto base: %f" % taxa_de_acerto_base)

2 respostas
solução!

Olá Givaldo.

Testei seu código e está tudo certo, parabéns.

Bons Estudos.

OK!

Obrigado!