Aller au contenu principal

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

💡Bonnes Pratiques
  • 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.
☢️Limites & Cas Limites
  • 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 :

  1. Chargez le modèle avec loaded_clf = SpectralClassifier.load_model("path/to/model.pkl").
  2. Préparez vos nouvelles données pour obtenir une matrice de features X_new.
  3. Faites la prédiction avec predictions = loaded_clf.model.predict(X_new).