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)