Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Résoudre la Tâche en Utilisant un Stacking Regressor | Modèles de Stacking Couramment Utilisés
Apprentissage Ensembliste

book
Défi : Résoudre la Tâche en Utilisant un Stacking Regressor

Stacking Regressor est un modèle d'apprentissage ensembliste de stacking utilisé pour résoudre des tâches de régression. Le principe de fonctionnement de ce modèle est similaire au Stacking Classifier : la seule différence est que nous utilisons des algorithmes de régression comme modèles de base et méta-modèles de l'ensemble.
Nous pouvons utiliser la classe StackingRegressor de la bibliothèque sklearn pour implémenter ce modèle en Python.

Tâche

Swipe to start coding

Le jeu de données make_friedman1 est un jeu de données synthétique fréquemment utilisé pour les tâches de régression en apprentissage automatique. Ce jeu de données est largement utilisé dans les tutoriels de régression et l'expérimentation car il est simple, mais peut être personnalisé avec différents niveaux de bruit et dimensions de caractéristiques pour simuler divers scénarios de régression.

Votre tâche est de résoudre la tâche de régression sur le jeu de données Friedman en utilisant Stacking Regressor :

  1. Fournissez une division en sous-ensembles d'entraînement et de test du jeu de données d'entraînement : la proportion du jeu de données à inclure dans la division de test doit être 0.2.
  2. Utilisez Decision Tree Regressor avec max_depth égal à 3 comme l'un des modèles de base.
  3. Créez un modèle Stacking Regressor en utilisant des modèles de base et un méta-modèle.
  4. Ajustez le modèle Stacking Regressor sur les données d'entraînement.

Solution

import numpy as np
from sklearn.datasets import make_friedman1
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.neural_network import MLPRegressor
from sklearn.ensemble import StackingRegressor
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")

# Generate the Friedman dataset with one feature
X, y = make_friedman1(n_samples=1000, n_features=5, noise=0.1, random_state=1)

# Split the dataset 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 base models
linear_model = LinearRegression()
dt_model = DecisionTreeRegressor(max_depth=3)
nn_model = MLPRegressor(hidden_layer_sizes=(20, 10), max_iter=300)

# Create a meta-model (Neural Network)
meta_model = MLPRegressor(hidden_layer_sizes=(10, 5), max_iter=300)

# Create the stacking regressor
base_models = [('linear', linear_model), ('dt', dt_model), ('nn', nn_model)]
stacking_regressor = StackingRegressor(estimators=base_models, final_estimator=meta_model)

# Train the stacking regressor on the training data
stacking_regressor.fit(X_train, y_train)

# Make predictions on the test data
y_pred = stacking_regressor.predict(X_test)

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 3
import numpy as np
from sklearn.datasets import make_friedman1
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.neural_network import MLPRegressor
from sklearn.ensemble import StackingRegressor
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')

# Generate the Friedman dataset with one feature
X, y = make_friedman1(n_samples=1000, n_features=5, noise=0.1, random_state=1)

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = ___(X, y, test_size=___, random_state=42)

# Create base models
linear_model = LinearRegression()
dt_model = DecisionTreeRegressor(___=___)
nn_model = MLPRegressor(hidden_layer_sizes=(20, 10), max_iter=300)

# Create a meta-model (Neural Network)
meta_model = MLPRegressor(hidden_layer_sizes=(10, 5), max_iter=300)

# Create the stacking regressor
base_models = [('linear', linear_model), ('dt', dt_model), ('nn', nn_model)]
stacking_regressor = ____(estimators=base_models, final_estimator=meta_model)

# Train the stacking regressor on the training data
___.___(___, ___)

# Make predictions on the test data
y_pred = stacking_regressor.predict(X_test)

# Evaluate the results using Mean Squared Error (MSE)
mse = mean_squared_error(y_test, y_pred)
print('MSE:', mse)
toggle bottom row
some-alt