Contenu du cours
Apprentissage Ensembliste
Apprentissage Ensembliste
Classificateur d'Empilement
Classificateur de Stacking est un modèle d'ensemble de stacking utilisé pour résoudre des tâches de classification. Il vise à exploiter les forces des modèles individuels en utilisant leurs prédictions comme entrée pour un modèle de niveau supérieur, connu sous le nom de méta-classificateur ou modèle de second niveau. Le méta-classificateur apprend à combiner les prédictions des modèles de base pour prendre la décision finale de classification.
Comment fonctionne le Classificateur de Stacking ?
Modèles de Base : Plusieurs modèles de classification différents sont entraînés indépendamment sur les données d'entraînement. Ces modèles divers peuvent utiliser divers algorithmes, architectures ou paramètres ;
Génération de Prédictions : Après l'entraînement des modèles de base, ils sont utilisés pour faire des prédictions sur les données d'entraînement. Ces prédictions servent de caractéristiques (méta-caractéristiques) pour le niveau de modélisation suivant ;
Méta-Classificateur : Un classificateur de niveau supérieur (méta-classificateur) est entraîné en utilisant les méta-caractéristiques générées à partir des modèles de base. Le méta-classificateur apprend à combiner les prédictions des modèles de base pour prendre une décision de classification finale ;
Prédiction Finale : Les modèles de base génèrent des prédictions pour les nouvelles données d'entrée lors de la prédiction. Ces prédictions sont ensuite utilisées comme caractéristiques d'entrée pour le méta-classificateur, qui produit la prédiction de classification finale.
Exemple
import numpy as np from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC from sklearn.neural_network import MLPClassifier from sklearn.ensemble import StackingClassifier from sklearn.metrics import f1_score import warnings warnings.filterwarnings('ignore') # Load the Breast Cancer dataset data = load_breast_cancer() X = data.data y = data.target # 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) # Define base models base_models = [] for i in range(5): # Create 5 different Decision Tree models base_models.append(('decision_tree_' + str(i), DecisionTreeClassifier())) for i in range(3): # Create 3 different SVM models base_models.append(('svm_' + str(i), SVC(probability=True))) # Define meta-classifier meta_classifier = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=200) # Create the stacking ensemble stacking_classifier = StackingClassifier(estimators=base_models, final_estimator=meta_classifier) # Train the stacking classifier stacking_classifier.fit(X_train, y_train) # Make predictions y_pred = stacking_classifier.predict(X_test) # Calculate F1 score f1 = f1_score(y_test, y_pred, average='weighted') print(f'F1 Score: {f1:.4f}')
Merci pour vos commentaires !