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

Valores de acurácia mudam

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('%.2f' % (acuracia))

Quando executo mais de uma vez o código acima, ele apresenta valores de acurácia diferentes. Já verifiquei e os dados de teste e de treino estão sendo divididos sempre com os mesmos valores, porém as previsões que estão mudando a cada vez que o código está sendo executado.

2 respostas
solução!

Oi Marcelo, também estou fazendo o curso mas acho que posso ajudar.

O Guilherme acaba mencionando isso algumas aulas mais para frente (na aula 3 se não me engano)

O LinearSVC, assim como o train_test_split, também possui como parâmetro o random_state. E da mesma forma se for omitido vai utilizar o valor random do numpy.

Se você adicionar o SEED como parâmetro para o random_state no LinearSVC as previsões serão sempre as mesmas (até que mude o valor do SEED):

modelo = LinearSVC(random_state = SEED)

Referência do LinearSVC: https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html

Oi guilherme

Muito obrigado pela explicação :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software