Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro no código

estou executando esse código:

import pandas as pd df = pd.read_csv('busca.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.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)

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)

mais ele apresenta esse erro!

diferencas = resultado - teste_marcacoes TypeError: unsupported operand type(s) for -: 'str' and 'str'

2 respostas

Oi Carlos, tudo bem?

Estranho esse erro, eu rodei o seu código na minha máquina e funcionou normalmente. Talvez seja algo relacionado a versão do Pandas.

Tenta converter o Ydummies_df para inteiro, igual você fez com o X:

Ydummies_df = Y_df.astype(int)

solução!

Oi Carlos, com vai?

Tente abrir, na pasta em que esta desenvolvendo o projeto, o arquivo 'busca.csv' que está sendo lido pelo pandas e verifique se na ultima coluna (comprou) os valores são numéricos (0 ou 1) ou são strings de caracteres ('sim' e 'não).

Me parece que seu código não consegue fazer a subtração uma vez que ele não suporta o operador '-' entre strings.

TypeError: unsupported operand type(s) for -: 'str' and 'str'

Se for esse o problema, baixe novamente o arquivo com os valores numéricos ou substitua sim-> 1 e nao -> 0 e tente outra vez.

Ps: Tive o mesmo problema a roda no meu computador uma vez que meu arquivo estava com a última coluna literal.