Pipelines sans fuite
Enchaîner préparation et modèle proprement.
Le seul ordre honnête
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.dummy import DummyRegressor
prep = ColumnTransformer([
("num", make_pipeline(SimpleImputer(strategy="median"), StandardScaler()), ["poids_kg"]),
("cat", make_pipeline(SimpleImputer(strategy="most_frequent"), OneHotEncoder(handle_unknown="ignore")), ["transporteur"]),
])
pipe = make_pipeline(prep, DummyRegressor(strategy="median"))
pipe.fit(X_train, y_train) # tout est appris sur train
print(pipe.score(X_test, y_test)) # une seule fois
Pourquoi c'est non négociable
Le modèle de l'exemple est volontairement la référence constante DummyRegressor (leçon précédente mia-baseline) : l'objet de cette leçon est le pipeline sans fuite, pas la puissance du modèle. Les modèles riches arrivent au Ch15 et suivants.
En validation croisée, le pipeline réapprend imputation et échelle dans chaque fold : aucune info du fold test ne fuit. Sans pipeline, vous devez le refaire à la main et vous vous tromperez. Retenez : fit sur train, transform/predict ailleurs, jamais l'inverse.
Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.