Régression par arbre de décision amélioré

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/tree("Decision Trees") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/ensemble("Ensemble Methods") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/tree -.-> lab-49057{{"Régression par arbre de décision amélioré"}} sklearn/ensemble -.-> lab-49057{{"Régression par arbre de décision amélioré"}} ml/sklearn -.-> lab-49057{{"Régression par arbre de décision amélioré"}} end

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.