2
respostas

Elementos ambíguos

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. :)

2 respostas

Oi Rafael, estou tentando achar alguém que possa te ajudar. Espero conseguir :).

Bom dia Rafael,

Pode testar com o arquivo a seguir: https://www.dropbox.com/s/itst5m8scix9i86/buscas.csv?dl=0

Mais para a frente do curso mudaremos para analisar sim e não

att