ao Executar:
X[:tamanho_de_treino]
aparece o seguinte erro:
Traceback (most recent call last): File "", line 1, in TypeError: slice indices must be integers or None or have an index method
Alguem pode me ajudar?
ao Executar:
X[:tamanho_de_treino]
aparece o seguinte erro:
Traceback (most recent call last): File "", line 1, in TypeError: slice indices must be integers or None or have an index method
Alguem pode me ajudar?
Oi Gene,
Provavelmente a variável tamanho_de_treino
não é um inteiro. Onde ela está sendo inicializada?
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
X = Xdummies_df.values
Y = Ydummies_df.values
tamanho_de_treino = 0.9 * len(Y)
tamanho_de_teste = len(Y) - tamanho_de_treino
Faltou converter para int
tamanho_de_treino = int(0.9 * len(Y))
mas quando tento execultar dar esse erro!
Isso provavelmente é um problema de versão. Você utiliza Python 2.7.10?
Bom dia, também cai na mesma dúvida e tinha resolvido utilizando int(). Estou usando o python 2.7. O erro não acontece em uma versão superior?
Acabei de olhar no vídeo e o instrutor está usando Python 2.7.10 e minha versão é o Python 2.7.12.
É difícil dizer com certeza se isso é a causa. Outra possibilidade é a versão do numpy. De qualquer forma, o ideal é sempre utilizar int() nesses casos.
Obrigado Gabriel!
Pessoal,
tentei rodar e apareceu esse erro:
modelo.fit(treino_dados, treino_marcacoes) TypeError: fit() missing 1 required positional argument: 'y'
Alguém consegue me ajudar?
Insira o código pra gente poder debugar
import pandas as pd df = pd.read_csv('busca.csv')
x_df = df[['home', 'busca', 'logado']] y_df = df['comprou']
x_dummies = pd.get_dummies(x_df['busca']) y_dummies = y_df
x = x_dummies.values y = y_dummies.values
porcentagem_de_treino = 0.9 tamanho_de_treino = int(porcentagem_de_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)
comentei onde estava errado
import pandas as pd
df = pd.read_csv('busca.csv')
x_df = df[['home', 'busca', 'logado']]
y_df = df['comprou']
x_dummies = pd.get_dummies(x_df['busca'])
y_dummies = y_df
x = x_dummies.values
y = y_dummies.values
porcentagem_de_treino = 0.9
tamanho_de_treino = int(porcentagem_de_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 falto parenteses
modelo = MultinomialNB()
modelo.fit(treino_dados, treino_marcacoes)
resultado = modelo.predict(teste_dados)
print(resultado)
print(teste_marcacoes)
#reveja algum ponto, pois aqui o conteudo de resultado e teste_marcacoes agora são strings 'sim' ou 'não'
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)
Carlos,
mudei algumas coisas e nada. Tentei transformar alguns resultados em int, mas sem sucesso.
Pessoal,
já tentei mudar diversas vezes essa parte:
from sklearn.naive_bayes import MultinomialNB modelo = MultinomialNB() modelo.fit(treino_dados, treino_marcacoes)
resultado = modelo.predict(teste_dados) print(resultado) print(teste_marcacoes)
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)
Não consigo sair desse erro de 'sim' 'não'
Alguém pode me ajudar?
Meu código tbm estava dando o erro por não ser um inteiro. Arrumei e deu certo. A porcentagem de acerto foi pra 82%, enquanto do professor era de 53%. Isso pode ocorrer?
Alice
O meu também foi para 82% Creio que aumentou pela natureza dos dados mesmo