Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Challenge: Solving Task Using Stacking Classifier | Commonly Used Stacking Models
Ensemble Learning

book
Challenge: Solving Task Using Stacking Classifier

Oppgave

Swipe to start coding

The 'blood-transfusion-service-center' dataset is a dataset that contains information related to blood donation. It's often used as a binary classification task to predict whether a blood donor will donate blood again. The dataset includes several features that provide insights into the donor's history and characteristics.

Your task is to solve a classification task using the 'blood-transfusion-service-center' dataset:

  1. Use 3 different LogisticRegression models as base models. Each model must have different regularization parameters: 0.1, 1, and 10, respectively.
  2. Use MLPClassifier as meta-model of an ensemble.
  3. Create a base_models list containing all base models of the ensemble.
  4. Finally, create a StackingClassifier model with specified base models and meta-model.

Løsning

import numpy as np
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import StackingClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import f1_score

# Load the "blood-transfusion-service-center" dataset
blood_transfusion = fetch_openml('blood-transfusion-service-center', version=1, as_frame=True, parser='auto')
X, y = blood_transfusion.data, blood_transfusion.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Create base models with different parameters
# Logistic Regression parameters:
# max_iter - max number of iterations for optimization,
# C - inverse of regularization strength
logreg_model_1 = LogisticRegression(max_iter=200, C=0.1)
logreg_model_2 = LogisticRegression(max_iter=200, C=1)
logreg_model_3 = LogisticRegression(max_iter=200, C=10)

# Create meta-model (MLP)
meta_model = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=200)

# Create stacking classifier
base_models = [
('logreg_model_1', logreg_model_1),
('logreg_model_2', logreg_model_2),
('logreg_model_3', logreg_model_3)
]
stacking_clf = StackingClassifier(base_models, meta_model)

# Train stacking classifier
stacking_clf.fit(X_train, y_train)

# Predict on the test set
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2
import numpy as np
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import StackingClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import f1_score

# Load the "blood-transfusion-service-center" dataset
blood_transfusion = fetch_openml('blood-transfusion-service-center', version=1, as_frame=True, parser='auto')
X, y = blood_transfusion.data, blood_transfusion.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Create base models with different parameters
# Logistic Regression parameters:
# max_iter - max number of iterations for optimization,
# C - inverse of regularization strength
logreg_model_1 = LogisticRegression(max_iter=200, C=___)
logreg_model_2 = LogisticRegression(max_iter=200, C=___)
logreg_model_3 = LogisticRegression(max_iter=200, C=___)

# Create meta-model (MLP)
meta_model = ___(hidden_layer_sizes=(100, 50), max_iter=200)

# Create stacking classifier
___ = [
('logreg_model_1', logreg_model_1),
('logreg_model_2', logreg_model_2),
('logreg_model_3', logreg_model_3)
]
stacking_clf = ___(___, ___)

# Train stacking classifier
stacking_clf.fit(X_train, y_train)

# Predict on the test set
toggle bottom row
some-alt