Challenge: Solving Task Using Stacking Classifier
Task
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:
- Use 3 different
LogisticRegression
models as base models. Each model must have different regularization parameters:0.1
,1
, and10
, respectively. - Use
MLPClassifier
as meta-model of an ensemble. - Create a
base_models
list containing all base models of the ensemble. - Finally, create a
StackingClassifier
model with specified base models and meta-model.
Solution
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
Everything was clear?
Thanks for your feedback!
Section 4. Chapter 2
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
Ask AI
Ask anything or try one of the suggested questions to begin our chat