Aller au contenu principal

Guide : Entraînement du Modèle

Une fois que vous disposez d'un jeu de données avec des features extraites (généré à l'étape précédente), vous pouvez entraîner un modèle de Machine Learning pour la classification spectrale.

Toute la logique d'entraînement, d'optimisation et d'évaluation est encapsulée dans la classe SpectralClassifier.

Le Processus d'Entraînement

Le processus, orchestré dans le notebook 00_master_pipeline.ipynb, est un pipeline scikit-learn complet et robuste.

1. Préparation des Données

Avant l'entraînement, la classe SpectralClassifier prépare automatiquement les données :

  • Chargement : Le DataFrame pandas contenant les features est pris en entrée.
  • Nettoyage : Les entrées sans label (subclass) valide et les classes spectrales trop rares (moins de 10 exemples) sont retirées pour garantir un apprentissage stable.
  • Sélection des Features : Les colonnes pertinentes (celles commençant par feature_ et les métadonnées clés comme redshift, snr_*) sont automatiquement sélectionnées.
  • Séparation : Les données sont divisées en une matrice de features X et un vecteur de labels y.

2. Entraînement, Validation et Tuning

C'est ici que la magie opère. Au lieu d'un simple entraînement, le SpectralClassifier exécute un processus rigoureux :

  • Pipeline Intégré : Un Pipeline scikit-learn est utilisé pour enchaîner plusieurs étapes de manière sécurisée :

    1. Imputation : Remplacement des valeurs manquantes (NaN) par zéro.
    2. Mise à l'échelle (Scaling) : Standardisation des features pour qu'elles aient une moyenne de 0 et un écart-type de 1.
    3. Sur-échantillonnage (SMOTE) : Création d'échantillons synthétiques pour les classes minoritaires afin de rééquilibrer le jeu de données.
    4. Classification : Entraînement du modèle final (RandomForest ou XGBoost).
  • Tuning d'Hyperparamètres (GridSearchCV) : Le pipeline ne se contente pas d'entraîner un seul modèle. Il teste systématiquement de multiples combinaisons d'hyperparamètres (ex: max_depth, n_estimators) en utilisant une validation croisée stratifiée pour trouver la configuration la plus performante.

  • Évaluation Finale : Le meilleur modèle trouvé est ensuite évalué sur un jeu de test mis de côté au préalable, garantissant une mesure honnête de sa capacité à généraliser sur de nouvelles données.

Benchmark de Modèles : RandomForest vs. XGBoost

Depuis la version v1.0.0, le pipeline AstroSpectro supporte deux modèles de pointe : RandomForest et XGBoost. L'interface interactive du notebook de production permet de choisir quel modèle entraîner, facilitant ainsi la comparaison et l'expérimentation. Nos résultats montrent que XGBoost offre actuellement les meilleures performances sur notre jeu de features.

Sauvegarde du Modèle et Reporting

Une fois l'entraînement terminé, le pipeline automatise les dernières étapes cruciales pour la reproductibilité :

  • Sauvegarde du Modèle : Le SpectralClassifier entraîné (qui contient le pipeline complet avec le scaler et le meilleur modèle) est sauvegardé dans un fichier .pkl dans data/models/. Le nom du fichier inclut le type de modèle et la date pour une traçabilité facile.
  • Mise à jour du Journal : Les spectres utilisés pour cet entraînement sont ajoutés au log data/catalog/trained_spectra.csv.
  • Rapport de Session : Un fichier JSON détaillé est créé dans data/reports/, contenant toutes les informations de la session : les hyperparamètres finaux, le rapport de classification complet, la matrice de confusion, et le hash du modèle.