ConsigneCompare LogisticRegression, DecisionTreeClassifier, RandomForestClassifier et KNeighborsClassifier par validation croisée sur le jeu de données généré. Affiche pour chaque modèle la moyenne et l'écart-type de l'accuracy.
É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èles3. utiliser des PIPELINES pour intégrer le prétraitement (StandardScaler si nécessaire)4. rapporter moyenne ± écart-type, pas un seul score5. inspecter les modèles avec une différence statistiquement significativeClassification
Régression
LinearRegressionRandomForestRegressorGradientBoostingRegressorimport numpy as npfrom sklearn.model_selection import cross_val_scorefrom sklearn.linear_model import LogisticRegressionfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.preprocessing import StandardScalerfrom 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éesscoring='f1' classes déséquilibréesscoring='roc_auc' binaire, indépendant du seuilscoring='r2' régressionscoring='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 statsstats.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 →