classifier.py
Ce module contient la classe SpectralClassifier
, qui est le "cerveau" du pipeline. Elle encapsule un modèle de Machine Learning pour réaliser la classification à partir des features extraites.
Workflow de la Classification
Classe SpectralClassifier
Cette classe fournit une interface simple pour entraîner, é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. Le modèle par défaut est un
RandomForestClassifier
de scikit-learn.
- Arguments :
n_estimators
(int, défaut: 100) : Le nombre d'arbres dans la forêt.random_state
(int, défaut: 42) : Pour garantir la reproductibilité des résultats.
- Attributs Notables :
class_weight='balanced'
: Le modèle ajuste automatiquement le poids des classes pour compenser les déséquilibres dans le jeu de données.
Bonnes Pratiques & Limites
- Fixez toujours le
random_state
pour des expériences reproductibles. - Validez systématiquement les performances sur un jeu de test qui n'a pas servi à l'entraînement.
- Sauvegardez non seulement le modèle, mais aussi la version du code et les paramètres de prétraitement pour une traçabilité complète.
- Pour des jeux de données très petits, les performances peuvent varier fortement entre deux exécutions.
- Random Forest est robuste, mais si vos features sont très corrélées, sa performance peut être affectée.
- Pour des déséquilibres de classes extrêmes, explorer des techniques de ré-échantillonnage (ex: SMOTE) en plus de
class_weight
peut être bénéfique.
Méthodes Principales
train_and_evaluate(X, y, test_size=0.25)
C'est la méthode "tout-en-un" pour un workflow standard.
- Rôle : Prend une matrice de features X et un vecteur de labels y, les sépare en ensembles d'entraînement/test, entraîne le modèle, et affiche un rapport d'évaluation complet.
- **Arguments :``
- X (array-like) : La matrice des features.
- y (array-like) : Le vecteur des labels correspondants.
- test_size (float, défaut: 0.25) : La proportion du dataset à réserver pour le test.
train(X_train, y_train)
- Rôle : Entraîne le modèle uniquement sur les données fournies. Utile pour des schémas de validation plus complexes (ex: validation croisée manuelle).
evaluate(X_test, y_test)
- Rôle : Évalue le modèle déjà entraîné sur un jeu de test et affiche le rapport de classification et la matrice de confusion.
Questions Fréquentes (FAQ)
Puis-je utiliser un autre modèle que Random Forest ?
Oui, absolument. La classe SpectralClassifier
a été conçue pour être modulaire. Il vous suffirait de modifier la ligne self.model = RandomForestClassifier(...)
dans le constructeur init
pour utiliser un autre classifieur de scikit-learn (comme SVC
, XGBClassifier
, etc.), tout en conservant le reste de l'interface (train
, evaluate
...).
Comment utiliser un modèle déjà entraîné pour prédire sur de nouvelles données ?
C'est exactement le but de save_model
et load_model
. Le workflow est le suivant :
- Chargez le modèle avec
loaded_clf = SpectralClassifier.load_model("path/to/model.pkl")
. - Préparez vos nouvelles données pour obtenir une matrice de features
X_new
. - Faites la prédiction avec
predictions = loaded_clf.model.predict(X_new)
.