Skip to content

remicastaing/pdm_cmapss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README — TP Machine Learning avec NASA C-MAPSS (marimo + pixi)

Ce dépôt contient une série de 6 notebooks marimo pour un TP de machine learning appliqué à la maintenance prédictive sur le jeu de données NASA C-MAPSS.

L’objectif pédagogique est progressif :

  1. Explorer les données
  2. Découvrir scikit-learn (SVM / Random Forest)
  3. Comprendre l’intérêt du split et du grid search
  4. Créer / sélectionner des features
  5. Montrer l’impact du changement de domaine opératoire (FD001 → FD002)
  6. Passer de la classification à la régression (RUL)

Structure du projet

La structure exacte peut varier légèrement selon votre dépôt, mais l’organisation attendue est de ce type :

.
├── pixi.toml                  # Configuration de l'environnement pixi
├── README.md                  # Ce fichier
├── data/                      # Données C-MAPSS (non versionnées en général)
├── notebooks/                 # Notebooks marimo (noms indicatifs)
│   ├── TP01_aed.py            # Analyse exploratoire des données
│   ├── TP02_hello_world.py    # Premiers modèles SVM / RF (brut)
│   ├── TP03_grid_search.py    # Split, validation, grid search
│   ├── TP04_features.py       # Sélection / création de features
│   ├── TP05_domaine_operationnel.py  # FD001 -> FD002 (domain shift)
│   └── TP06_regression.py     # Régression de RUL (SVR / RF Regressor)
└── reports/                   # (optionnel) exports HTML/PDF / corrigés / figures

Remarques importantes

  • Le dossier data/ n’est gĂ©nĂ©ralement pas inclus dans Git (poids / licence / rĂ©utilisation locale).
  • Les notebooks marimo sont des scripts Python (.py) exĂ©cutables via marimo.
  • Certains TPs produisent des artefacts (modèles entraĂ®nĂ©s, sĂ©lection de features) utilisĂ©s dans les TPs suivants.

Prérequis

  • Python (gĂ©rĂ© via pixi)
  • pixi installĂ© sur votre machine
  • Accès au jeu de donnĂ©es NASA C-MAPSS (via Kaggle ou autre source fournie par l’enseignant)

Installation

1) Cloner le dépôt

git clone https://github.com/remicastaing/pdm_cmapss.git
cd pdm_cmapss

ou

gh repo clone remicastaing/pdm_cmapss
cd pdm_cmapss

2) Installer pixi (si nécessaire)

Voir la documentation officielle de pixi (selon votre OS : macOS / Linux / Windows).

3) Créer l’environnement du projet

Depuis la racine du projet :

pixi install

Cela installe toutes les dépendances définies dans pixi.toml (ex. : marimo, pandas, numpy, scikit-learn, matplotlib, etc.).


Lancement de marimo (commande pixi run tp)

Le projet est configuré pour être lancé avec :

pixi run tp

Cette commande démarre marimo (serveur local) et permet d’ouvrir le notebook TP prévu par la configuration du projet.

Cas fréquents

Selon votre pixi.toml, pixi run tp peut :

  • lancer un notebook spĂ©cifique (ex : TP01),
  • ouvrir marimo sur un fichier .py donnĂ©,
  • ou dĂ©marrer un workflow personnalisĂ©.

Si besoin, vous pouvez aussi lancer directement un notebook marimo (exemples) :

pixi run marimo edit notebooks/TP01_aed.py

ou

pixi run marimo run notebooks/TP01_aed.py

edit : mode interactif (édition/exécution)

run : exécution “application”


Conseils d’utilisation en TP

  • ExĂ©cuter les cellules dans l’ordre (surtout pour les notebooks de modĂ©lisation).
  • Éviter de renommer des variables utilisĂ©es plus loin (X_tr, X_te, y_tr, y_te, feature_cols, etc.) sans adapter les cellules suivantes.
  • Dans marimo, certaines erreurs proviennent de la redĂ©finition d’une variable existante dans une autre cellule.
  • Les temps d’entraĂ®nement peuvent augmenter fortement si vous activez trop de features (rolling stats, slopes, etc.).

Objectif des 6 notebooks

TP01 — Analyse exploratoire des données (AED)

But : comprendre la structure du dataset C-MAPSS (FD001 en premier), les colonnes, les capteurs, les conditions opératoires, la variable cible RUL / classe à risque.

Compétences visées

  • Lecture de fichiers texte sans en-tĂŞte
  • ComprĂ©hension de unit, cycle, op1..op3, s1..s21
  • Construction de la RUL (train)
  • DĂ©finition d’une cible binaire y Ă  partir d’un seuil N
  • Statistiques descriptives, distributions, corrĂ©lations, heatmap

Message pédagogique clé

Avant de modéliser, il faut comprendre les données (structure, bruit, redondances, colonnes quasi constantes, déséquilibre de classes).


TP02 — Découverte de scikit-learn (SVM / Random Forest “hello world”)

But : prendre en main l’API scikit-learn avec des modèles simples sur les capteurs bruts (sans feature engineering).

Compétences visées

  • fit, predict, predict_proba / decision_function
  • SVM et Random Forest (classification)
  • Pipeline (StandardScaler + SVC)
  • Évaluation de base :
    • matrice de confusion
    • classification report
    • accuracy / precision / recall / F1
    • ROC-AUC / PR-AUC
    • courbes ROC et PR

Message pédagogique clé

Une bonne accuracy peut masquer un mauvais modèle en cas de classe déséquilibrée.


TP03 — Split, validation et Grid Search

But : montrer pourquoi il faut valider correctement un modèle et comment chercher des hyperparamètres.

Compétences visées

  • Split par moteur (group split) pour Ă©viter la fuite d’information
  • Validation croisĂ©e avec groupes (GroupKFold)
  • GridSearchCV
  • Hyperparamètres SVM (C, gamma)
  • Hyperparamètres RF (max_depth, min_samples_leaf, max_features, Ă©ventuellement n_estimators)
  • Comparaison train / validation / test

Message pédagogique clé

Sans split rigoureux (par moteur), les performances peuvent ĂŞtre artificiellement optimistes.


TP04 — Feature engineering et sélection de features

But : construire des features plus informatives que les capteurs bruts, puis réduire leur nombre pour garder un TP praticable.

Compétences visées

  • CrĂ©ation de features temporelles compactes (par moteur / par fenĂŞtre) :
    • moyennes, Ă©carts-types, min/max, amplitude
    • slopes / tendances
    • EMA, deltas, etc. (selon la recette retenue)
  • Gestion des NaN (et suppression cohĂ©rente de colonnes)
  • SĂ©lection de capteurs / features utiles
  • Validation rapide par modèle proxy (souvent RF)
  • RĂ©entraĂ®nement SVM / RF sur features sĂ©lectionnĂ©es
  • Sauvegarde de la “recette” et des modèles

Message pédagogique clé

Plus de features ≠ meilleur TP.
Il faut trouver un compromis entre performance, temps de calcul et lisibilité pédagogique.


TP05 — Domaine opérationnel (FD001 → FD002)

But : démontrer qu’un modèle entraîné sur FD001 peut mal généraliser à FD002 si le domaine opératoire change.

Compétences visées

  • Chargement des modèles / recette du TP04
  • PrĂ©traitement cohĂ©rent de FD002 (mĂŞmes colonnes, mĂŞmes features)
  • Évaluation hors domaine
  • Analyse du domain shift :
    • distributions de op1..op3
    • dĂ©placement des distributions capteurs/features
    • chute des mĂ©triques (ROC-AUC / PR-AUC / recall positif)

Message pédagogique clé

Un modèle ML est valable pour un domaine de données donné.
Changer le domaine (conditions opératoires) peut faire s’effondrer les performances.


TP06 — Régression (prédiction de RUL)

But : passer de la classification binaire (“à risque / pas à risque”) à la régression du RUL.

Compétences visées

  • Construction de la cible continue RUL
  • RĂ©gression avec :
    • SVR (SVM de rĂ©gression)
    • RandomForestRegressor
  • Baseline (prĂ©dire la moyenne)
  • MĂ©triques de rĂ©gression :
    • MAE
    • RMSE
    • R²
  • Visualisation des trajectoires de prĂ©diction par moteur

Message pédagogique clé

La régression donne une information plus fine (RUL estimé), mais elle est souvent plus difficile à stabiliser et à interpréter.


Enchaînement recommandé des TPs

  1. TP01 : compréhension des données
  2. TP02 : premiers modèles (API scikit-learn)
  3. TP03 : validation rigoureuse + réglage
  4. TP04 : features + sélection + sauvegarde
  5. TP05 : robustesse / domaine opératoire
  6. TP06 : régression du RUL

Artefacts produits (selon les TPs)

Le TP04 peut sauvegarder :

  • la recette de features (colonnes retenues, paramètres de calcul, colonnes supprimĂ©es)
  • les modèles entraĂ®nĂ©s :
    • svm_model.joblib
    • rf_model.joblib

Ces artefacts sont ensuite rechargés dans le TP05 pour tester le transfert FD001 → FD002.


Auteur / Contexte pédagogique

Ce matériel est conçu pour un TP de machine learning appliqué à la maintenance prédictive (NASA C-MAPSS), avec une progression pédagogique orientée :

  • comprĂ©hension des donnĂ©es,
  • bonnes pratiques de validation,
  • interprĂ©tation des mĂ©triques,
  • robustesse au changement de domaine,
  • passage classification → rĂ©gression.

About

TP PDM CMapss

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors