2
respostas

problema na execução

galera quando executo o código aparece a seguinte mensagem: File "classifica_buscas.py", line 27, in modelo.fit (treino_dados, treino_marcacoes) ValueError: Found array with 0 sample(s) (shape=(0, 3)) while a minimum of 1 is required.

Segue o Código:

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)
Ydummies_df = Y_df

Xdummies_df.values
Ydummies_df.values

porcetagem_de_treino = int(0.9) 

tamanho_de_treino = porcetagem_de_treino * len(Y_df)
tamanho_de_testes = len(Y_df) - tamanho_de_treino

treino_dados= X_df [:tamanho_de_treino]
treino_marcacoes= Y_df [:tamanho_de_treino]

tamanho_de_dados = X_df[-tamanho_de_testes:]
tamanho_de_marcacoes = Y_df [-tamanho_de_testes:]


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)
2 respostas

Oi Antenor, tudo bem?

Veja que na linha 12 (porcetagem_de_treino = int(0.9)) você está convertendo o valor da porcentagem de treino para inteiro. Portanto, o valor da variável é 0.

Por isso os demais cálculos ficam com valores errados e acontece o erro. Para resolver, basta retirar a conversão para inteiro:

porcetagem_de_treino = 0.9

boa noite, prezado mesmo com a alteração o erro continua. Porém um novo erro segue abaixo:

TypeError: cannot do slice indexing on <class 'pandas.core.indexes.range.RangeIndex'> with these indexers [900.0] of <type 'float'>