Quando eu baixei o CSV a coluna referente a o usuário comprou ou não com marcações de SIM ou NÃO, nesse caso usei o get_dummies com drop first, ( Já como get_dummies(y_df)[1] não estava funcionando ) para separar as colunas e pegar apenas a da direita (SIM). O que aconteceu é que durante o modelo.fit e a linha de acerto ( acerto = [d for d in diferenca d == 0]) apresenta-se os seguintes erros:
C:\Python27\lib\site-packages\sklearn\utils\validation.py:526: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
y = column_or_1d(y, warn=True)
Traceback (most recent call last):
File "class_busca.py", line 29, in <module>
acertos = [d for d in diferencas if d == 0]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Segue o meu código abaixo:
import pandas as pd
from sklearn.naive_bayes import MultinomialNB
dataframe = pd.read_csv('busca.csv')
y_dataframe = dataframe['comprou']
x_dataframe = dataframe[['home','busca','logado']]
xdummies_df = pd.get_dummies(x_dataframe)
ydummies_df = pd.get_dummies(y_dataframe,drop_first=True)
X = xdummies_df.values
Y = ydummies_df.values
tamanho_de_treino = int(0.9 * len(Y))
tamanho_de_teste = int(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:]
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
Alguém poderia me ajudar a solucionar esse erro? Obrigado. :)