Contenu du cours
Apprentissage Ensembliste
Apprentissage Ensembliste
Classificateur de Bagging
Nous avons déjà considéré le principe de fonctionnement de l'ensemble de bagging. Maintenant, appliquons ces connaissances et créons un modèle qui fournira une classification en utilisant un tel ensemble en Python :
Tout d'abord, nous importons la classe BaggingClassifier
qui contient tous les outils nécessaires pour travailler avec le classificateur de bagging.
Ensuite, nous créons une instance de cette classe en spécifiant le modèle de base, le nombre de ces modèles pour créer un ensemble, et le paramètre n_jobs
.
Note
Nous avons déjà mentionné que les modèles de bagging peuvent être ajustés en utilisant le calcul parallèle.
n_jobs=-1
signifie que nous utiliserons tous les processeurs disponibles pour entraîner le modèle
Maintenant, nous pouvons utiliser les méthodes .fit()
et .predict()
de BaggingClassifier
pour ajuster le modèle sur les données disponibles et faire des prédictions :
Maintenant, parlons des modèles de base d'un ensemble.
Quels modèles peuvent être utilisés comme base ?
Nous pouvons utiliser absolument tous les modèles conçus pour effectuer des tâches de classification comme modèles de base de l'ensemble (régression logistique, SVM, réseaux neuronaux, etc.).
Il est également important de noter que lors de l'utilisation de la méthode .fit()
, l'ensemble apprendra sur différents sous-échantillons de données par lui-même, donc nous n'avons pas besoin de spécifier des paramètres supplémentaires ou de contrôler manuellement le processus d'apprentissage.
Lorsque nous utilisons la méthode .predict()
, la technique de vote dur crée une prédiction finale.
Si nous voulons créer une prédiction finale en utilisant le vote souple, nous devons utiliser l'estimateur de base avec la méthode .predict_proba()
implémentée au lieu de la méthode .predict()
. En conséquence, nous obtiendrons le vecteur correspondant à chaque échantillon de l'ensemble de test contenant les probabilités agrégées appartenant à une classe particulière (nous l'appellerons la matrice de probabilité).
Note
Si nous ne spécifions pas le modèle de base de
BaggingClassifer
, le Classificateur d'Arbre de Décision sera utilisé par défaut.
Exemple d'utilisation
Résolvons quelques problèmes de classification simples en utilisant un ensemble de bagging avec la régression logistique comme modèle de base :
import numpy as np from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.ensemble import BaggingClassifier from sklearn.linear_model import LogisticRegression from sklearn.metrics import f1_score # Generate synthetic data X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_clusters_per_class=1, random_state=42) # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Create a base model (Logistic Regression) base_model = LogisticRegression(random_state=42) # Create a Bagging Classifier bagging_model = BaggingClassifier(base_model, n_estimators=10, n_jobs=-1) # Train the `BaggingClassifier` bagging_model.fit(X_train, y_train) # Make predictions on the test data predictions = bagging_model.predict(X_test) # Calculate F1 score f1 = f1_score(y_test, predictions) print(f'F1 score: {f1:.4f}')
Merci pour vos commentaires !