from collections import Counter
import sys
sys.path
sys.path.append('/python27/lib/site-packages/naive_bayes.py')
#teste inicial: home, busca, logado
#home, busca
#home, logado
#busca, logado
#busca: 85,71% (7 testes)
import pandas as pd
df = pd.read_csv('buscas2.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_teste = 0.1
porcentagem_treino = 0.8
tamanho_de_treino = int(porcentagem_treino * len(Y))
tamanho_de_teste = int(porcentagem_teste * len(Y))
tamanho_de_validacao = len(Y) - tamanho_de_treino - tamanho_de_teste
treino_dados = X[:tamanho_de_treino]
treino_marcacoes = Y[:tamanho_de_treino]
fim_de_treino = tamanho_de_treino + tamanho_de_teste
teste_dados = X[tamanho_de_treino:fim_de_treino]
teste_marcacoes = Y[tamanho_de_treino:fim_de_treino]
validacao_dados = X[fim_de_treino:]
validacao_marcacoes = Y[fim_de_treino:]
#codigo generico de um unico valor
def fit_and_predict(nome ,modelo, treino_dados, treino_marcacoes, teste_dados, teste_marcacoes):
modelo.fit(treino_dados, treino_marcacoes)
resultado = modelo.predict(teste_dados)
acertos = resultado == teste_marcacoes
total_de_acertos = sum(acertos)
total_de_elementos = len(teste_dados)
taxa_de_acerto = 100.0 * total_de_acertos / total_de_elementos
msg = "Taxa de acerto do algoritmo {0}: {1}".format(nome, taxa_de_acerto)
print(msg)
return taxa_de_acerto
def teste_real(vencedor, validacao_dados, validacao_marcacoes):
resultado = vencedor.predict(validacao_dados)
acertos = resultado == validacao_marcacoes
total_de_acertos = sum(acertos)
total_de_elementos = len(validacao_marcacoes)
taxa_de_acerto = 100.0 * total_de_acertos / total_de_elementos
msg = "Taxa de acerto do vencedor entre os dois algoritmos no mundo real: {0}".format(taxa_de_acerto)
print(msg)
from sklearn.ensemble import AdaBoostClassifier
modeloAdaBoost = AdaBoostClassifier()
resultadoAdaBoostClassifier = fit_and_predict("AdaBoostClassifier", modeloAdaBoost, treino_dados,treino_marcacoes, teste_dados, teste_marcacoes)
from sklearn.naive_bayes import MultinomialNB
modeloMultinomial = MultinomialNB()
resultadoMultinomial = fit_and_predict("MultinomialNB", modeloMultinomial, treino_dados,treino_marcacoes, teste_dados, teste_marcacoes)
if resultadoMultinomial > resultadoAdaBoostClassifier:
vencedor = resultadoMultinomial
else:
vencedor = resultadoAdaBoostClassifier
teste_real(vencedor, validacao_dados, validacao_marcacoes)
acerto_base = max(Counter(validacao_marcacoes).itervalues())
taxa_de_acerto_base = 100.0 * acerto_base / len(validacao_marcacoes)
print("A taxa de acerto base: %f" % taxa_de_acerto_base)
total_de_elementos = len(validacao_dados)
print("Total de teste: %d" % total_de_elementos)
Só mostra a taxa de acerto dos algoritmos e o restante que era pra mostrar também da esse erro: Taxa de acerto do algoritmo AdaBoostClassifier: 85.7142857143 Taxa de acerto do algoritmo MultinomialNB: 85.7142857143 Traceback (most recent call last): File "D:\codigos\machine_learning\classifica_buscas.py", line 89, in teste_real(vencedor, validacao_dados, validacao_marcacoes) File "D:\codigos\machine_learning\classifica_buscas.py", line 65, in teste_real resultado = vencedor.predict(validacao_dados) AttributeError: 'float' object has no attribute 'predict'