classifier.py
Ce module contient la classe SpectralClassifier, qui est le "cerveau" du pipeline. Elle encapsule un pipeline de Machine Learning complet pour réaliser la classification à partir des features extraites.
Workflow de la Classification
Le workflow géré par la classe est beaucoup plus qu'un simple entraînement. Il s'agit d'un processus rigoureux de préparation, d'optimisation et d'évaluation.
Classe SpectralClassifier
Cette classe fournit une interface de haut niveau pour entraîner, optimiser, évaluer et gérer la persistance d'un modèle de classification.
Détails sur l'instanciation et la configuration
- Description : Crée une instance du classifieur.
- Arguments :
model_type(str, défaut: 'RandomForest') : Le type de modèle à utiliser. Peut être 'RandomForest' ou 'XGBoost'.random_state(int, défaut: 42) : Pour garantir la reproductibilité des résultats.
Bonnes Pratiques & Points Clés
💡Ce qui est Inclus
- Pipeline Intégré : L'utilisation d'un
Pipelinegarantit que le scaling et l'imputation sont appris uniquement sur les données d'entraînement, évitant les fuites de données. - Validation Croisée :
GridSearchCVutilise une validation croisée stratifiée pour une évaluation robuste et un choix de paramètres fiable. - Gestion du Déséquilibre : L'étape
SMOTEest appliquée à la volée pendant l'entraînement pour corriger le déséquilibre des classes sans polluer le jeu de test.
☢️Ce qui est Géré
- Données Manquantes : Les
NaNdans les features (ex: FWHM non calculable) sont automatiquement remplacés par zéro grâce àSimpleImputer. - Labels Invalides : Les spectres sans
subclassvalide sont automatiquement exclus. - Classes Rares : Les classes avec moins de 10 échantillons sont retirées pour garantir la stabilité de l'entraînement et de l'évaluation.
Questions Fréquentes (FAQ)
Comment puis-je utiliser un modèle déjà entraîné pour prédire sur de nouvelles données ?
Le workflow est simple :
- Chargez l'objet classifieur complet avec
loaded_clf = SpectralClassifier.load_model("path/to/model.pkl"). - Préparez vos nouvelles données sous forme d'un DataFrame
pandascontenant les mêmes colonnes de features que lors de l'entraînement. - Faites la prédiction avec
predictions = loaded_clf.model_pipeline.predict(X_new). Lemodel_pipelines'occupera automatiquement du scaling et de l'imputation.
Liens & Références Utiles