Régression arborescente à sortie multiple

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, vous allez découvrir un exemple de régression multi-sortie avec un arbre de décision. Vous verrez comment les arbres de décision sont utilisés pour prédire simultanément les observations bruitées x et y d'un cercle à partir d'un seul attribut sous-jacent. En conséquence, il apprend des régressions linéaires locales qui approximent le cercle.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter Notebook pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback 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") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/tree -.-> lab-49322{{"Régression arborescente à sortie multiple"}} ml/sklearn -.-> lab-49322{{"Régression arborescente à sortie multiple"}} end

Importation des bibliothèques

Dans cette étape, nous allons importer les bibliothèques nécessaires, qui sont numpy, matplotlib.pyplot et DecisionTreeRegressor de sklearn.tree.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor

Création d'un ensemble de données aléatoire

Dans cette étape, nous allons créer un ensemble de données aléatoire. Nous utiliserons la bibliothèque numpy pour créer un tableau trié de 100 éléments, avec des valeurs aléatoires comprises entre 0 et 200, puis soustraire 100 à chaque élément. Ensuite, nous utiliserons numpy pour calculer le sinus et le cosinus de chaque élément, et joindre ces tableaux ensemble pour former un tableau 2D de forme (100, 2) pour créer le tableau y. Nous ajouterons également du bruit aléatoire à chaque cinquième élément.

## Create a random dataset
rng = np.random.RandomState(1)
X = np.sort(200 * rng.rand(100, 1) - 100, axis=0)
y = np.array([np.pi * np.sin(X).ravel(), np.pi * np.cos(X).ravel()]).T
y[::5, :] += 0.5 - rng.rand(20, 2)

Ajuster le modèle de régression

Dans cette étape, nous allons ajuster des modèles de régression. Nous utiliserons DecisionTreeRegressor de sklearn.tree pour ajuster trois modèles différents avec des profondeurs maximales différentes.

## Fit regression model
regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_3 = DecisionTreeRegressor(max_depth=8)
regr_1.fit(X, y)
regr_2.fit(X, y)
regr_3.fit(X, y)

Prédire

Dans cette étape, nous allons effectuer des prédictions à l'aide des modèles que nous avons créés dans l'étape précédente. Nous utiliserons np.arange pour créer un nouveau tableau de valeurs allant de -100 à 100 avec un intervalle de 0,01, puis utiliser la méthode predict de nos modèles pour prédire la sortie.

## Predict
X_test = np.arange(-100.0, 100.0, 0.01)[:, np.newaxis]
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)
y_3 = regr_3.predict(X_test)

Tracer les résultats

Dans cette étape, nous allons tracer les résultats. Nous utiliserons matplotlib.pyplot pour créer un graphique à points dispersés des données originales et de chaque prédiction des trois modèles. Nous ajouterons également des étiquettes et un titre au graphique.

## Plot the results
plt.figure()
s = 25
plt.scatter(y[:, 0], y[:, 1], c="navy", s=s, edgecolor="black", label="données")
plt.scatter(
    y_1[:, 0],
    y_1[:, 1],
    c="cornflowerblue",
    s=s,
    edgecolor="black",
    label="profondeur maximale = 2",
)
plt.scatter(y_2[:, 0], y_2[:, 1], c="rouge", s=s, edgecolor="black", label="profondeur maximale = 5")
plt.scatter(
    y_3[:, 0], y_3[:, 1], c="orange", s=s, edgecolor="black", label="profondeur maximale = 8"
)
plt.xlim([-6, 6])
plt.ylim([-6, 6])
plt.xlabel("cible 1")
plt.ylabel("cible 2")
plt.title("Régression arborescente à sortie multiple")
plt.legend(loc="meilleur")
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser les arbres de décision pour la régression à sortie multiple. Nous avons créé un ensemble de données aléatoire, ajusté des modèles de régression, effectué des prédictions et tracé les résultats. Les arbres de décision ont appris des régressions linéaires locales approximant le cercle. Nous avons également vu que si la profondeur maximale de l'arbre est définie trop élevée, les arbres de décision apprennent trop de détails fins des données d'entraînement et apprennent à partir du bruit, c'est-à-dire qu'ils surapprennent.