Aller au contenu principal

Machine Learning 5 — Exercices de synthèse

:::tip Notebook Kaggle Le code complet et exécutable de ce chapitre est sur Kaggle : Ouvrir →

Versions anglaise et chinoise disponibles depuis la page d'accueil. :::

Quatre exercices de synthèse pour mettre en pratique tout ce qui précède. Chaque dataset met l'accent sur une compétence spécifique vue dans les chapitres précédents. Le notebook fournit des corrigés de référence : des baselines solides, pas des solutions optimales pour Kaggle, mais des squelettes propres qu'on peut affiner.

Mercedes-Benz Greener Manufacturing

Type : régression haute dimension.

Le dataset contient ~370 features mixtes (catégorielles codées par lettres + binaires) pour prédire y, un score de performance issu d'un banc de test.

Ce qu'on attend

  1. Charger le dataset, vérifier la cible et les types.
  2. Mettre en place un ColumnTransformer : OneHotEncoder pour les catégorielles, VarianceThreshold pour retirer les binaires quasi constantes.
  3. Entraîner une Ridge ou un GradientBoostingRegressor dans un Pipeline.
  4. Évaluer en MAE / RMSE / R² sur un test split.

Pourquoi cet exercice ?

C'est l'archétype du dataset à haute dimensionnalité où le préprocessing prend plus de temps que le modèle. La sélection de variables (via VarianceThreshold ou Lasso) y joue un rôle clé.

Stroke Prediction

Type : classification déséquilibrée + valeurs manquantes.

Prédire la survenue d'un AVC à partir de facteurs démographiques, médicaux et de mode de vie. ~5 000 observations, dont seulement ~5 % positives.

Ce qu'on attend

  1. Charger, retirer id. Vérifier le déséquilibre.
  2. Traiter bmi (vraies NaN) et smoking_status='Unknown' (NaN déguisée).
  3. Pipeline avec SimpleImputer + OneHotEncoder + StandardScaler.
  4. Modèle avec class_weight='balanced', ou pipeline imblearn avec SMOTE.
  5. Évaluer avec matrice de confusion, précision/rappel/F1, et PR-curve.

Pourquoi cet exercice ?

L'archétype du déséquilibre fort où l'accuracy ne veut plus rien dire. Un FN (AVC raté) coûte beaucoup plus qu'un FP (fausse alerte). Le choix du seuil et de la métrique de validation devient critique.

House Prices — Ames

Type : régression complexe avec mélange numérique/catégoriel.

Prédire SalePrice à partir de ~80 caractéristiques d'une maison à Ames (Iowa). Beaucoup de valeurs manquantes structurelles (NaN qui veut dire « pas de garage », « pas de sous-sol », etc.).

Ce qu'on attend

  1. Charger, retirer Id.
  2. Pipeline : SimpleImputer médiane (num) + 'missing' (cat), One-Hot, scale.
  3. Modèle : GradientBoostingRegressor ou XGBoost.
  4. Évaluer en RMSE sur log(SalePrice) — la métrique de la compétition Kaggle, qui pénalise mieux les écarts relatifs.

Pour aller plus loin

Quelques idées de feature engineering qui améliorent significativement le score :

  • TotalSF = TotalBsmtSF + 1stFlrSF + 2ndFlrSF : la surface totale est la variable la plus prédictive.
  • Age = YrSold - YearBuilt, RemodAge = YrSold - YearRemodAdd.
  • HasGarage = GarageArea > 0, HasPool = PoolArea > 0.

MNIST

Type : classification d'images, passerelle vers la vision.

10 000 images 28×28 de chiffres manuscrits, à classer en 10 classes.

Ce qu'on attend

  1. Charger un sous-échantillon (10 000 lignes suffisent pour un k-NN ou RF).
  2. Visualiser quelques chiffres avec imshow.
  3. Normaliser les pixels dans [0, 1].
  4. Entraîner un RandomForestClassifier ou un KNeighborsClassifier.
  5. Évaluer : accuracy + matrice de confusion 10×10 (très instructive).

Pourquoi cet exercice ?

Pour montrer que les modèles ML « tabulaires » marchent étonnamment bien sur des images simples (~95 % d'accuracy avec une RF sur les pixels flat). Mais aussi pour motiver le passage au deep learning et aux CNN au cours suivant : un CNN bien réglé monte au-delà de 99 % sur MNIST sans difficulté.

La matrice de confusion révèle les confusions classiques : 4↔9, 3↔5, 7↔1. Ce sont des chiffres visuellement proches.


Notebook complet sur Kaggle (forkable) →