Skip to main content

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 et d'évaluation est encapsulée dans la classe SpectralClassifier du fichier src/pipeline/classifier.py.

Le Processus d'Entraînement

Le processus, orchestré dans le notebook 00_master_pipeline.ipynb, se déroule en plusieurs sous-étapes :

1. Préparation des Données

Avant l'entraînement, les données sont préparées :

  • Chargement : Le fichier CSV contenant les features (ex: features_..._csv) est chargé dans un DataFrame Pandas.
  • Nettoyage : Les entrées mal étiquetées (UNKNOWN, NOT_FOUND) et les classes spectrales trop rares (ex: moins de 5 exemples) sont retirées pour garantir un apprentissage stable.
  • Séparation Features/Labels : Le DataFrame est divisé en :
    • Une matrice X contenant uniquement les features numériques (ex: nos 4 colonnes binaires).
    • Un vecteur y contenant les labels (les classes spectrales comme 'A', 'F', 'G'...).

2. Entraînement et Validation

La classe SpectralClassifier est ensuite utilisée pour entraîner le modèle.

  • Instanciation : On crée une instance du classifieur. Pour la v0.1.0, il s'agit d'un RandomForestClassifier de scikit-learn.

    from src.pipeline.classifier import SpectralClassifier

    # Création du classifieur
    clf = SpectralClassifier(n_estimators=100)
  • Entraînement & Évaluation : La méthode train_and_evaluate s'occupe de tout :

    1. Elle sépare les données en un ensemble d'entraînement et un ensemble de test (par ex. 75% / 25%).
    2. Elle entraîne le modèle Random Forest sur les données d'entraînement.
    3. Elle évalue les performances du modèle sur les données de test (jamais vues pendant l'entraînement).
    4. Elle affiche un rapport de classification (précision, rappel, F1-score) et une matrice de confusion.
    # X et y sont votre matrice de features et votre vecteur de labels
    clf.train_and_evaluate(X, y, test_size=0.25)
Choix du Modèle : Random Forest

Le Random Forest a été choisi comme modèle de base pour sa robustesse, sa capacité à gérer des features simples sans sur-apprentissage excessif, et sa facilité de mise en œuvre. La classe SpectralClassifier est conçue pour pouvoir intégrer facilement d'autres algorithmes (SVM, XGBoost...) à l'avenir.

Sauvegarde du Modèle (Optionnel)

Si les performances du modèle sont satisfaisantes, vous pouvez le sauvegarder sur le disque pour une utilisation future (par exemple, pour faire des prédictions sur de nouveaux spectres sans avoir à tout ré-entraîner).

La sauvegarde se fait simplement en appelant la méthode save_model :

# Sauvegarde le modèle entraîné
clf.save_model("data/models/my_first_classifier.pkl")