No final da aula 3, fiz algumas variações até treinar somente com 1 elemento e testar com os outros 999. Para minha surpresa, o algoritmo deu 83% de acerto. Além disso, quando diminui de 90% para 80, 70, 50% dos dados para treino a taxa de acerto aumentou. Isso era para acontecer mesmo? Treinar com mais dados pode ser pior?
O meu código é o seguinte:
import pandas as pd
df = pd.read_csv('buscas.csv')
X_df = df[['home','busca','logado']]
Y_df = df['comprou']
Xdummies_df = pd.get_dummies(X_df).astype(int)
Ydummies_df = Y_df
X = Xdummies_df.values
Y = Ydummies_df.values
porcentagem_treino = 0.001
tamanho_de_treino = int(len(Y) * porcentagem_treino)
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)
diferencas = resultado - teste_marcacoes
acertos = [d for d in diferencas if d == 0]
total_de_acertos = len(acertos)
total_de_elementos = len(teste_dados)
taxa_de_acerto = 100.0 * total_de_acertos / total_de_elementos
print(taxa_de_acerto)
print(total_de_elementos)