Entscheidungsbaum-Regression

Beginner

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

Einführung

In diesem Lab lernen wir, wie wir den Entscheidungsbaum-Regressionsalgorithmus verwenden, um eine Sinuskurve mit zusätzlichen rauschenden Beobachtungen anzupassen. Die Entscheidungsbäume werden verwendet, um lokale lineare Regressionen zu lernen, die der Sinuskurve approximieren. Wir werden sehen, dass, wenn die maximale Tiefe des Baumes zu hoch eingestellt wird, die Entscheidungsbäume zu viele Details der Trainingsdaten lernen und von den Rauschen lernen, d.h. sie überanpassen.

VM-Tipps

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Importiere erforderliche Bibliotheken

Wir werden die erforderlichen Bibliotheken und Module importieren, einschließlich von numpy, matplotlib und DecisionTreeRegressor.

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

Erzeuge einen zufälligen Datensatz

Wir werden einen zufälligen Datensatz mit NumPy erstellen und ihm etwas Rauschen hinzufügen.

rng = np.random.RandomState(1)
X = np.sort(5 * rng.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - rng.rand(16))

Regressionmodell anpassen

Wir werden Regressionmodelle mit zwei verschiedenen maximalen Tiefen anpassen: 2 und 5.

regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)

Vorhersagen

Wir werden die Modelle verwenden, um Vorhersagen für einen Wertebereich von 0 bis 5 zu treffen.

X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)

Zeichne die Ergebnisse

Wir werden die Ergebnisse plotten, um zu visualisieren, wie die Modelle die Daten anpassen.

plt.figure()
plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="data")
plt.plot(X_test, y_1, color="cornflowerblue", label="max_depth=2", linewidth=2)
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man den Entscheidungsbaum-Regressionsalgorithmus verwendet, um eine Sinuskurve mit zusätzlichen rauschenden Beobachtungen anzupassen. Wir haben gesehen, dass, wenn die maximale Tiefe des Baumes zu hoch eingestellt wird, die Entscheidungsbäume zu detaillierte Details der Trainingsdaten lernen und von den Rauschen lernen, d.h. sie überanpassen. Wir haben auch gelernt, wie man die Ergebnisse plotten kann, um zu visualisieren, wie die Modelle die Daten anpassen.