sklearn決策樹 一維迴歸圖像的繪製

在二維平面上觀察決策樹如何擬合一條曲線,使用迴歸樹擬合正弦曲線,並添加噪聲觀察迴歸樹的表現。

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

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))  # 加入噪音

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

X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis] # 升高維度,同reshape(-1,1)
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)

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()

可見,迴歸樹學習了近似正弦曲線的局部線性迴歸。我們可以看到,如果樹的最大深度(由max_depth參數控制) 設置得太高,則決策樹學習得太精細,它從訓練數據中學了很多細節,包括噪聲得呈現,從而使模型偏離真實的正弦曲線,形成過擬合。
在這裏插入圖片描述
藍色的線基本保持着正弦,綠色的線過擬合嚴重。

發佈了103 篇原創文章 · 獲贊 15 · 訪問量 5670
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章