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 fichiersrc/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'...).
- Une matrice
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 :- Elle sépare les données en un ensemble d'entraînement et un ensemble de test (par ex. 75% / 25%).
- Elle entraîne le modèle Random Forest sur les données d'entraînement.
- Elle évalue les performances du modèle sur les données de test (jamais vues pendant l'entraînement).
- 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)
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")