1
resposta

Minha acuracia está dando outro valor

Olá pessoal! Tudo bem?

x = dados[["horas_esperadas", "preco"]]
y = dados["finalizado"]
from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
from sklearn.metrics import accuracy_score 

##retirar aleatoriedade do teste
SEED = 20  

treino_x, teste_x, treino_y, teste_y = train_test_split(x, y, 
                                                        random_state=SEED, test_size=0.25, 
                                                        stratify = y)
print('Treinaremos %d elementos e testaremos %d elementos' % (len(treino_x), len(teste_x)))

modelo = LinearSVC(random_state=SEED)
modelo.fit(treino_x, treino_y)
previsoes = modelo.predict(teste_x)

acuracia = accuracy_score(teste_y, previsoes) * 100
print("A acuracia da previsão é de %.2f%%" % acuracia)

O resultado é

Treinaremos 1617 elementos e testaremos 540 elementos
A acuracia da previsão é de 55.37%
/usr/local/lib/python3.6/dist-packages/sklearn/svm/_base.py:947: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)

Por que a acurácia está diferente?

Dese já obrigado.

1 resposta

Olá Salatiel.

Na verdade, nessa aula o instruor ainda não tinha comunicado o fato do LinearSVC ter aleatoriedade, então ele não colocou um SEED, sendo portanto improvável reproduzir o mesmo resultado que ele.

from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
from sklearn.metrics import accuracy_score

SEED = 20

treino_x, teste_x, treino_y, teste_y = train_test_split(x, y,
                                                         random_state = SEED, test_size = 0.25,
                                                         stratify = y)
print("Treinaremos com %d elementos e testaremos com %d elementos" % (len(treino_x), len(teste_x)))

modelo = LinearSVC()
modelo.fit(treino_x, treino_y)
previsoes = modelo.predict(teste_x)

acuracia = accuracy_score(teste_y, previsoes) * 100
print("A acurácia foi %.2f%%" % acuracia)

Então seu código está correto, mesmo que não tenha a mesma precisão obtida na aula, posteriormente o instrutor vai apresentar esse ponto e então poderia reproduzir os mesmo resultados que ele.

Bons Estudos.