Introduction
Dans ce laboratoire, nous utiliserons la bibliothèque Scikit-Learn de Python pour effectuer une régression par arbre de décision amélioré sur un ensemble de données sinusoidales 1D. Nous comparerons les performances d'un seul régresseur d'arbre de décision avec celles d'un régresseur AdaBoost avec 300 régresseurs d'arbres de décision en tant qu'apprenants de base.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour passer à l'onglet Carnet d'étude pour accéder à Jupyter Notebook pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limites de Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.
Préparation des données
Nous commençons par préparer des données fictives avec une relation sinusoidale et du bruit gaussien. Nous utilisons la fonction linspace() de Numpy pour créer un tableau 1D de 100 valeurs régulièrement espacées entre 0 et 6. Nous utilisons ensuite l'attribut np.newaxis pour convertir le tableau 1D en un tableau 2D de forme (100,1). Nous appliquons la fonction sin() à ce tableau et ajoutons une deuxième onde sinusoïdale obtenue en multipliant le tableau par 6. Nous ajoutons ensuite du bruit gaussien avec une moyenne de 0 et une déviation standard de 0,1 en utilisant la fonction normal() de Numpy.
import numpy as np
rng = np.random.RandomState(1)
X = np.linspace(0, 6, 100)[:, np.newaxis]
y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0])
Entraînement et prédiction avec les régresseurs DecisionTree et AdaBoost
Nous définissons maintenant les classifieurs et les ajustons aux données. Nous définissons le premier régresseur comme un DecisionTreeRegressor avec max_depth=4. Nous définissons le second régresseur comme un AdaBoostRegressor avec un DecisionTreeRegressor de max_depth=4 en tant qu'apprenant de base. Nous construisons le régresseur AdaBoost avec n_estimators=300 de ces apprentants de base. Nous ajustons ensuite les deux régresseurs aux données et effectuons des prédictions sur les mêmes données pour voir à quel point ils s'ajustent.
from sklearn.ensemble import AdaBoostRegressor
from sklearn.tree import DecisionTreeRegressor
regr_1 = DecisionTreeRegressor(max_depth=4)
regr_2 = AdaBoostRegressor(
DecisionTreeRegressor(max_depth=4), n_estimators=300, random_state=rng
)
regr_1.fit(X, y)
regr_2.fit(X, y)
y_1 = regr_1.predict(X)
y_2 = regr_2.predict(X)
Traçage des résultats
Enfin, nous traçons à quel point nos deux régresseurs, le régresseur d'arbre de décision unique et le régresseur AdaBoost, ont pu s'ajuster aux données. Nous utilisons la fonction scatter() de Matplotlib pour tracer les échantillons d'entraînement et les valeurs prédites par les deux régresseurs. Nous utilisons la fonction plot() de Matplotlib pour tracer les valeurs prédites en fonction des données pour les deux régresseurs. Nous ajoutons une légende au tracé pour distinguer les deux régresseurs.
import matplotlib.pyplot as plt
import seaborn as sns
colors = sns.color_palette("colorblind")
plt.figure()
plt.scatter(X, y, color=colors[0], label="échantillons d'entraînement")
plt.plot(X, y_1, color=colors[1], label="n_estimators=1", linewidth=2)
plt.plot(X, y_2, color=colors[2], label="n_estimators=300", linewidth=2)
plt.xlabel("données")
plt.ylabel("cible")
plt.title("Régression par arbre de décision amélioré")
plt.legend()
plt.show()
Sommaire
Dans ce laboratoire, nous avons appris à effectuer une régression par arbre de décision amélioré sur un ensemble de données sinusoidales 1D à l'aide de la bibliothèque Scikit-Learn de Python. Nous avons comparé les performances d'un seul régresseur d'arbre de décision avec celles d'un régresseur AdaBoost avec 300 régresseurs d'arbres de décision en tant qu'apprenants de base. Nous avons visualisé les performances des deux régresseurs à l'aide de Matplotlib.