Atelier : choisir honnêtement
Batter baseline, CV et test final sans tricher.
Énoncé
Sur un jeu tabulaire : deux références (médiane vs moyenne) puis un seul modèle riche déjà vu si disponible, en pipelines avec CV 5 folds (moyenne ± std), choix sur CV, évaluation finale unique sur test avec métrique adaptée + matrice ou résidus. À ce stade du cursus (Ch14), comparez surtout médiane contre moyenne : les modèles riches arrivent au Ch15 et suivants.
Contraintes
Transformations dans les pipelines, graines notées, test touché une seule fois pour le verdict. Fiche d'une page avec limites.
Indices
cross_validate(pipe, X_train, y_train, cv=5, scoring=...), puis fit du gagnant et predict test. Écart < marge = égalité → plus simple.
choix sur CV, puis fit test une fois
Si votre gagnant CV perd sur test au-delà de la marge, suspectez fuite ou non-stationnarité : c'est un diagnostic, pas un échec. Documentez-le.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
from sklearn.model_selection import cross_validate
from sklearn.dummy import DummyRegressor
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
base_med = make_pipeline(StandardScaler(), DummyRegressor(strategy="median"))
base_mean = make_pipeline(StandardScaler(), DummyRegressor(strategy="mean"))
for name, m in [("mediane", base_med), ("moyenne", base_mean)]:
r = cross_validate(m, X_train, y_train, cv=5, scoring="neg_mean_absolute_error")
print(name, -r["test_score"].mean().round(3), r["test_score"].std().round(3))