Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

mesmo com o SEED e stratify esta variando a minha acuracia

Fiz igual a aula, mas minha acuracia esta variando ainda, mesmo com o valor da SEED

from sklearn.model_selection import train_test_split #faz as divisões de treino e teste com base no size
from sklearn.svm import LinearSVC
from sklearn.metrics import accuracy_score

SEED = 5 #define a ordem de numeros aleatorios para que não varie o resultado

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) #treinar com valores

previsoes =  modelo.predict(teste_x) #testar previsoes

acuracia = accuracy_score(teste_y, previsoes) * 100
print("A acuracia foi %.2f%%" % acuracia)
1 resposta
solução!

Oii Jose, tudo bem por ai?

Então, o que aconteceu no seu código que é você precisa utilizar a SEED no LinearSVC() também, dessa forma aqui:

modelo = LinearSVC(random_state = SEED)

Então seu código ficaria dessa forma:

from sklearn.model_selection import train_test_split #faz as divisões de treino e teste com base no size
from sklearn.svm import LinearSVC
from sklearn.metrics import accuracy_score

SEED = 5 #define a ordem de numeros aleatorios para que não varie o resultado

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(random_state = SEED)
modelo.fit(treino_x, treino_y) #treinar com valores

previsoes =  modelo.predict(teste_x) #testar previsoes

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

Para que você não precise colocar a SEED durante o código, você pode definir que todos os comandos que utilizam o random_state recebam a mesma SEED, dessa forma:

SEED = 5
np.random.seed(SEED)

Ai o seu código ficaria assim:

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

SEED = 5
np.random.seed(SEED)

treino_x, teste_x, treino_y, teste_y = train_test_split(x, y, 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)

Se você tiver mais alguma dúvida, estou por aqui!

Bons estudos ^^