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

Modelo sem Scale tem mais precisão que meu modelo com Scale

Olá, estou realizando as atividades do curso e me deparei com o seguinte:

Precisão do modelo sem StandardScaler: 77% Precisão do modelo com StandardScale: 76%

Já realizei o split e segui a aula de acordo. Gostaria de saber se isso é normal e o por quê disso estar acontecendo.

Obrigado antecipadamente!

Segue o trecho do código

#Treinando o modelo
model = SVC()
model.fit(x_train, y_train)
previsao = model.predict(x_test)

# Precisão modelo
accuracy = accuracy_score(y_test, previsao)
print(f'Precisão do modelo: {round(accuracy*100)}%')


# Escalar os dados
scaler = StandardScaler()
scaler.fit(x_train)
x_train_scale = scaler.transform(x_train)
x_test_scale = scaler.transform(x_test)

#Treinando o modelo scale
model_scale = SVC()
model_scale.fit(x_train_scale, y_train)
previsao_scale = model_scale.predict(x_test_scale)

# Precisão modelo Scaler
accuracy = accuracy_score(y_test, previsao_scale)
print(f'Precisão do modelo Scale: {round(accuracy*100)}%')
1 resposta
solução!

Olá Lucas boa tarde, sou outro aluno aqui da plataforma.

Vamos lá que é bastante coisa rs.

Primeiro a diferença de 1% na acurácia de teste do seu modelo não reflete necessariamente uma piora. Apenas um porcento é pouco para afirmar melhoria ou piora.

Continuando. As vezes isso é normal e pode-se trocar o tipo de transformação de váriavel que está sendo empregada para ver se apresenta melhoria. No caso, eu tentaria agora ao invés de padronizar (scale) eu tentaria ver se a normalização teria efeito. (sklearn.preprocessing.normalize)

Outra coisa bastante importante. Se estiver usando um split de treino e teste verifique se são os mesmos conjuntos X e Y que estão sendo usados para a comparação. Também é valido trocar a SEED do split para verificar se o comportamento da ácuracia se mantém com a padronização ou a normalização (vai que tu pegou um split azarado)

Grande abraço e espero ter ajudado!