1
resposta

resultado divergente ao da aula

Quando eu rodo o código "from sklearn.model_selection import GroupKFold

SEED = 301 np.random.seed(SEED)

cv = GroupKFold(n_splits = 10) modelo = SVC() results = cross_validate(modelo, x_azar, y_azar, cv = cv, groups = dados.modelo,return_train_score=False) imprime_resultados(results)"

o resultado deveria ser:

"Accuracy médio 58.00 Accuracy Interavalo [56.10 59.89]"

mas o resultado é: "Accuracy médio 77.27 Accuracy Interavalo [74.35 80.20]"

Alguém pode me ajudar?

1 resposta

Oi, Gabriel! Tudo bem?

Pode ser que essa questão esteja relacionada à necessidade de escalar os dados antes de usar o SVC, que é sensível à escala das features. Na aula, foi mencionado que o SVM (SVC) precisa que as features sejam escaladas, e isso pode estar causando a diferença nos resultados.

Você pode criar um Pipeline que inclua o StandardScaler para escalar os dados antes de aplicar o modelo SVC. Isso garantirá que o escalonamento seja feito de forma correta durante cada iteração do GroupKFold.

Vou deixar abaixo um exemplo de como você pode fazer esse ajuste:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.model_selection import GroupKFold, cross_validate
import numpy as np

SEED = 301
np.random.seed(SEED)

# Criando o pipeline com o scaler e o modelo
pipeline = Pipeline([
    ('transformacao', StandardScaler()),
    ('estimador', SVC())
])

# Definindo o GroupKFold
cv = GroupKFold(n_splits=10)

# Realizando o cross-validate com o pipeline
results = cross_validate(pipeline, x_azar, y_azar, cv=cv, groups=dados.modelo, return_train_score=False)

# Função para imprimir os resultados
def imprime_resultados(results):
    media = results['test_score'].mean()
    intervalo = results['test_score'].std() * 2
    print(f"Accuracy médio: {media * 100:.2f}")
    print(f"Accuracy intervalo: [{(media - intervalo) * 100:.2f}, {(media + intervalo) * 100:.2f}]")

imprime_resultados(results)

→ Ao usar o Pipeline, garantimos que o StandardScaler é aplicado antes do SVC em cada iteração do GroupKFold.

Espero ter ajudado!

Abraço! ✨✨

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!