使用 AdaBoost 的決策樹迴歸#

使用 AdaBoost.R2 [1] 演算法在具有少量高斯雜訊的 1D 正弦資料集上增強決策樹。將 299 次增強(300 個決策樹)與單個決策樹迴歸器進行比較。隨著增強次數的增加,迴歸器可以擬合更多細節。

請參閱 直方圖梯度提升樹中的特徵,以取得展示使用更有效率迴歸模型(例如 HistGradientBoostingRegressor)的好處的範例。

準備資料#

首先,我們準備具有正弦關係和一些高斯雜訊的虛擬資料。

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

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

使用決策樹和 AdaBoost 迴歸器進行訓練和預測#

現在,我們定義分類器並將它們擬合到資料。然後我們預測相同的資料,以查看它們的擬合程度。第一個迴歸器是 DecisionTreeRegressor,其中 max_depth=4。第二個迴歸器是 AdaBoostRegressor,以 max_depth=4DecisionTreeRegressor 作為基礎學習器,並將使用 n_estimators=300 個這些基礎學習器來建構。

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)

繪製結果#

最後,我們繪製出我們的兩個迴歸器(單個決策樹迴歸器和 AdaBoost 迴歸器)擬合資料的效果。

import matplotlib.pyplot as plt
import seaborn as sns

colors = sns.color_palette("colorblind")

plt.figure()
plt.scatter(X, y, color=colors[0], label="training samples")
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("data")
plt.ylabel("target")
plt.title("Boosted Decision Tree Regression")
plt.legend()
plt.show()
Boosted Decision Tree Regression

腳本的總執行時間:(0 分鐘 0.505 秒)

相關範例

決策樹迴歸

決策樹迴歸

繪製虹膜資料集上樹集成的決策面

繪製虹膜資料集上樹集成的決策面

繪製個別和投票迴歸預測

繪製個別和投票迴歸預測

使用堆疊組合預測器

使用堆疊組合預測器

由 Sphinx-Gallery 產生的圖庫