Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Stacking Classifier | Commonly Used Stacking Models
Ensemble Learning

book
Stacking Classifier

Stacking Classifier is a stacking ensemble model which is used to solve classification tasks. It aims to exploit the strengths of individual models by using their predictions as input for a higher-level model, known as the meta-classifier or second-level model. The meta-classifier learns how to combine the predictions from the base models to make the final classification decision.

How does Stacking Classifier work?

  1. Base Models: Several different classification models are trained independently on the training data. These diverse models can utilize various algorithms, architectures, or parameter settings;
  2. Prediction Generation: After training the base models, they are used to make predictions on both the training data. These predictions serve as features (meta-features) for the next level of modeling;
  3. Meta-Classifier: A higher-level classifier (meta-classifier) is trained using the meta-features generated from the base models. The meta-classifier learns to combine the base model predictions to make a final classification decision;
  4. Final Prediction: The base models generate predictions for the new input data during prediction. These predictions are then used as input features for the meta-classifier, which produces the final classification prediction.

Example

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
1234567891011121314151617181920212223242526272829303132333435363738394041424344
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}')
copy
question mark

What is the purpose of a meta-classifier in a stacking ensemble?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 1
some-alt