Évaluer = comparer plusieurs modèles sur un même problème pour choisir le meilleur. Outil clé : cross_val_score + pipelines pour standardiser le prétraitement.
1. fixer le random_state pour la reproductibilité
2. utiliser la MÊME cross-validation pour tous les modèles
3. utiliser des PIPELINES pour intégrer le prétraitement (StandardScaler si nécessaire)
4. rapporter moyenne ± écart-type, pas un seul score
5. inspecter les modèles avec une différence statistiquement significativeClassification
Régression
LinearRegression
RandomForestRegressor
GradientBoostingRegressorimport numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipelinenp.random.seed(42)
X = np.random.randn(300, 5)
y = (X[:, 0] + 0.5*X[:, 1] - X[:, 2] > 0).astype(int)models = {
'Logistic': Pipeline([('s', StandardScaler()), ('m', LogisticRegression())]),
'Tree': DecisionTreeClassifier(max_depth=5),
'Forest': RandomForestClassifier(n_estimators=50, random_state=42),
'KNN': Pipeline([('s', StandardScaler()), ('m', KNeighborsClassifier())]),
}for name, model in models.items():
scores = cross_val_score(model, X, y, cv=5, scoring='accuracy')
print(f'{name:12s}: {scores.mean():.4f} (+/- {scores.std():.4f})')scoring='accuracy' classification simple, classes équilibrées
scoring='f1' classes déséquilibrées
scoring='roc_auc' binaire, indépendant du seuil
scoring='r2' régression
scoring='neg_mean_squared_error' MSE (avec signe négatif car sklearn maximise)Pour décider si modèle A est significativement meilleur que B :
from scipy import stats
stats.ttest_rel(scores_A, scores_B) # t-test apparié sur les foldsUne fois le meilleur modèle identifié par CV, refit sur 100% du train et évalue sur le test set holdout pour la métrique finale.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →