Tenho diversas dúvidas quanto ao utilização do SEED no curso, visto que a partir do momento que os resultados começaram a ser plotados, meus resultados divergiram MUITO aos apresentados em aula (embora isso não faça sentido uma vez que o SEED está sendo o mesmo). Entendo que o fato de ter que utilizar o (dual = False) no LinearSVC() para tirar o Warning tenha interferido nos resultados, visto que na própria documentação há algo sobre isso (embora que no SVC() eu não utilizei o dual = False e mesmo assim os resultados foram diferentes dos do instrutor), mas tentarei me ater a uma pergunta apenas:
- Nessa aula de utilização do SVC(), mesmo usando o SEED = 5 e o np.random.seed(SEED), quando eu executo meu código, a acurácia sempre ALTERNA entre dois valores: 66.85% (como está na aula, OK), e 55.19%. Por que isso ocorre?
Acredito eu que meu código não está incorreto, já que verifiquei inúmeras vezes (inclusive para tentar entender do porquê meus resultados anteriores divergirem TANTO), mas segue ele:
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
import numpy as np
SEED = 5
np.random.seed(SEED) # Essa função determina uma SEED específica para todo o modelo, não precisamos repetir para outras funções
raw_treino_x, raw_teste_x, treino_y, teste_y = train_test_split(x,
y,
test_size = 0.25,
stratify = y) # estratificando de acordo com o y para ficar os resultados ficarem mais proporcionais
print('Treinaremos com %d elementos, e testaremos com %d elementos.' % (len(treino_x), len(teste_x)))
scaler = StandardScaler()
scaler.fit(treino_x)
treino_x = scaler.transform(raw_treino_x) # esse scaler.transofrom() transforme o df Pandas em uma array de arrays
teste_x = scaler.transform(raw_teste_x)
modelo = SVC()
modelo.fit(treino_x, treino_y)
previsoes = modelo.predict(teste_x)
acuracia = accuracy_score(teste_y, previsoes) * 100
print('A acurácia foi de %.2f%%.' % acuracia)
Output: Ora é Treinaremos com 1617 elementos, e testaremos com 540 elementos. A acurácia foi de 66.85%.
Ora é Treinaremos com 1617 elementos, e testaremos com 540 elementos. A acurácia foi de 55.19%.