注意
前往結尾以下載完整的範例程式碼。或透過 JupyterLite 或 Binder 在您的瀏覽器中執行此範例
繪製個別和投票回歸預測#
投票回歸器是一個集成元估計器,它將幾個基礎回歸器擬合到整個資料集。然後它平均個別預測以形成最終預測。我們將使用三個不同的回歸器來預測資料:GradientBoostingRegressor
、RandomForestRegressor
和 LinearRegression
)。然後,上述 3 個回歸器將用於 VotingRegressor
。
最後,我們將繪製所有模型進行的預測以進行比較。
我們將使用糖尿病資料集,其中包含從一群糖尿病患者收集的 10 個特徵。目標是基線一年後疾病進展的量化衡量標準。
# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.ensemble import (
GradientBoostingRegressor,
RandomForestRegressor,
VotingRegressor,
)
from sklearn.linear_model import LinearRegression
訓練分類器#
首先,我們將載入糖尿病資料集並啟動梯度提升回歸器、隨機森林回歸器和線性回歸。接下來,我們將使用 3 個回歸器來建立投票回歸器
X, y = load_diabetes(return_X_y=True)
# Train classifiers
reg1 = GradientBoostingRegressor(random_state=1)
reg2 = RandomForestRegressor(random_state=1)
reg3 = LinearRegression()
reg1.fit(X, y)
reg2.fit(X, y)
reg3.fit(X, y)
ereg = VotingRegressor([("gb", reg1), ("rf", reg2), ("lr", reg3)])
ereg.fit(X, y)
進行預測#
現在我們將使用每個回歸器來進行前 20 個預測。
xt = X[:20]
pred1 = reg1.predict(xt)
pred2 = reg2.predict(xt)
pred3 = reg3.predict(xt)
pred4 = ereg.predict(xt)
繪製結果#
最後,我們將視覺化 20 個預測。紅色星星顯示 VotingRegressor
進行的平均預測。
plt.figure()
plt.plot(pred1, "gd", label="GradientBoostingRegressor")
plt.plot(pred2, "b^", label="RandomForestRegressor")
plt.plot(pred3, "ys", label="LinearRegression")
plt.plot(pred4, "r*", ms=10, label="VotingRegressor")
plt.tick_params(axis="x", which="both", bottom=False, top=False, labelbottom=False)
plt.ylabel("predicted")
plt.xlabel("training samples")
plt.legend(loc="best")
plt.title("Regressor predictions and their average")
plt.show()

腳本的總執行時間: (0 分鐘 1.164 秒)
相關範例