AdaBoost迴歸器#
- class sklearn.ensemble.AdaBoostRegressor(estimator=None, *, n_estimators=50, learning_rate=1.0, loss='linear', random_state=None)[原始碼]#
AdaBoost迴歸器。
AdaBoost [1] 迴歸器是一個元估計器,首先在原始資料集上擬合一個迴歸器,然後在相同的資料集上擬合額外的迴歸器副本,但是會根據當前預測的誤差調整實例的權重。 因此,後續的迴歸器會更加關注困難的案例。
此類別實現了名為AdaBoost.R2 [2]的演算法。
請在使用者指南中閱讀更多內容。
在 0.14 版本中新增。
- 參數:
- estimator物件,預設值=None
用於建構 boosting 集成模型的基礎估計器。如果為
None
,則基礎估計器為以max_depth=3
初始化的DecisionTreeRegressor
。在 1.2 版本中新增:
base_estimator
已重新命名為estimator
。- n_estimatorsint, 預設值=50
boosting 終止時的最大估計器數量。在完美擬合的情況下,學習程序會提前停止。值必須在
[1, inf)
範圍內。- learning_ratefloat, 預設值=1.0
在每次 boosting 迭代時應用於每個迴歸器的權重。較高的學習率會增加每個迴歸器的貢獻。
learning_rate
和n_estimators
參數之間存在權衡。值必須在(0.0, inf)
範圍內。- loss{‘linear’, ‘square’, ‘exponential’}, 預設值=’linear’
在每次 boosting 迭代後更新權重時使用的損失函數。
- random_stateint、RandomState 實例或 None,預設值=None
控制每次 boosting 迭代時給予每個
estimator
的隨機種子。因此,僅當estimator
公開random_state
時才會使用。此外,它還控制用於訓練每次 boosting 迭代時的estimator
的權重的 bootstrap。傳遞一個 int 以在多個函數調用中產生可重複的輸出。請參閱詞彙表。
- 屬性:
- estimator_估計器
用於建構集成模型之基礎估計器。
在 1.2 版本中新增:
base_estimator_
已重新命名為estimator_
。- estimators_迴歸器列表
已擬合的子估計器集合。
- estimator_weights_浮點數的 ndarray
boosting 集成模型中每個估計器的權重。
- estimator_errors_浮點數的 ndarray
boosting 集成模型中每個估計器的迴歸誤差。
feature_importances_
形狀為 (n_features,) 的 ndarray基於雜質的特徵重要性。
- n_features_in_int
在 fit 期間看到的特徵數量。
在 0.24 版本中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有全為字串的特徵名稱時定義。在 1.0 版本中新增。
另請參閱
AdaBoostClassifier
一個 AdaBoost 分類器。
GradientBoostingRegressor
梯度提升分類樹。
sklearn.tree.DecisionTreeRegressor
一個決策樹迴歸器。
參考文獻
[1]Y. Freund, R. Schapire, “A Decision-Theoretic Generalization of on-Line Learning and an Application to Boosting”, 1995.
[2]Drucker, “Improving Regressors using Boosting Techniques”, 1997.
範例
>>> from sklearn.ensemble import AdaBoostRegressor >>> from sklearn.datasets import make_regression >>> X, y = make_regression(n_features=4, n_informative=2, ... random_state=0, shuffle=False) >>> regr = AdaBoostRegressor(random_state=0, n_estimators=100) >>> regr.fit(X, y) AdaBoostRegressor(n_estimators=100, random_state=0) >>> regr.predict([[0, 0, 0, 0]]) array([4.7972...]) >>> regr.score(X, y) 0.9771...
有關利用
AdaBoostRegressor
來擬合一系列決策樹作為弱學習器的詳細範例,請參閱使用 AdaBoost 的決策樹迴歸。- property feature_importances_#
基於雜質的特徵重要性。
數值越高,特徵越重要。特徵的重要性是根據該特徵帶來的(正規化)準則總減少量來計算的。這也稱為 Gini 重要性。
警告:對於高基數特徵(許多唯一值),基於雜質的特徵重要性可能會產生誤導。請參閱
sklearn.inspection.permutation_importance
作為替代方案。- 返回值:
- feature_importances_形狀為 (n_features,) 的 ndarray
特徵重要性。
- fit(X, y, sample_weight=None)[來源]#
從訓練集 (X, y) 建構 boosting 分類器/迴歸器。
- 參數:
- X形狀為 (n_samples, n_features) 的類數組或稀疏矩陣
訓練輸入樣本。稀疏矩陣可以是 CSC、CSR、COO、DOK 或 LIL。 COO、DOK 和 LIL 會轉換為 CSR。
- y形狀為 (n_samples,) 的類數組
目標值。
- sample_weight形狀為 (n_samples,) 的類數組,預設值=None
樣本權重。如果為 None,則樣本權重初始化為 1 / n_samples。
- 返回值:
- self物件
已擬合的估計器。
- get_params(deep=True)[來源]#
取得此估計器的參數。
- 參數:
- deepbool,預設值=True
若為 True,將回傳此估算器及其包含的子物件(也是估算器)的參數。
- 返回值:
- paramsdict
參數名稱對應到其值的字典。
- predict(X)[原始碼]#
預測 X 的迴歸值。
輸入樣本的預測迴歸值計算方式為集成中迴歸器的加權中位數預測值。
- 參數:
- X形狀為 (n_samples, n_features) 的類數組或稀疏矩陣
訓練輸入樣本。稀疏矩陣可以是 CSC、CSR、COO、DOK 或 LIL。 COO、DOK 和 LIL 會轉換為 CSR。
- 返回值:
- y形狀為 (n_samples,) 的 ndarray
預測的迴歸值。
- score(X, y, sample_weight=None)[原始碼]#
回傳預測的決定係數。
決定係數 \(R^2\) 定義為 \((1 - \frac{u}{v})\),其中 \(u\) 為殘差平方和
((y_true - y_pred)** 2).sum()
,而 \(v\) 為總平方和((y_true - y_true.mean()) ** 2).sum()
。最佳可能分數為 1.0,且可能為負值(因為模型可能任意差)。一個總是預測y
的期望值,而忽略輸入特徵的常數模型,將獲得 \(R^2\) 分數 0.0。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
測試樣本。對於某些估算器,這可能是一個預先計算的核心矩陣,或是一個形狀為
(n_samples, n_samples_fitted)
的通用物件列表,其中n_samples_fitted
是估算器擬合所使用的樣本數。- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列
X
的真實值。- sample_weight形狀為 (n_samples,) 的類數組,預設值=None
樣本權重。
- 返回值:
- scorefloat
self.predict(X)
相對於y
的 \(R^2\)。
注意事項
在迴歸器上呼叫
score
時使用的 \(R^2\) 分數,從 0.23 版本開始使用multioutput='uniform_average'
,以與r2_score
的預設值保持一致。這會影響所有多輸出迴歸器的score
方法(除了MultiOutputRegressor
)。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') AdaBoostRegressor [原始碼]#
請求傳遞至
fit
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱關於路由機制如何運作的使用者指南。每個參數的選項為:
True
:請求中繼資料,並在提供時傳遞至fit
。如果未提供中繼資料,則會忽略請求。False
:不請求中繼資料,並且 meta 估算器不會將其傳遞給fit
。None
:不請求中繼資料,並且如果使用者提供中繼資料,meta 估算器將引發錯誤。str
:應使用此給定別名,而非原始名稱,將中繼資料傳遞至 meta 估算器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這讓您可以變更某些參數的請求,而保留其他參數不變。在 1.3 版本中新增。
注意
只有在此估算器被用作 meta 估算器的子估算器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
用於
fit
中的sample_weight
參數的中繼資料路由。
- 返回值:
- self物件
更新後的物件。
- set_params(**params)[原始碼]#
設定此估計器的參數。
此方法適用於簡單的估計器以及巢狀物件(例如
Pipeline
)。後者具有<component>__<parameter>
形式的參數,因此可以更新巢狀物件的每個元件。- 參數:
- **paramsdict
估計器參數。
- 返回值:
- self估計器實例
估計器實例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') AdaBoostRegressor [原始碼]#
請求傳遞給
score
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱關於路由機制如何運作的使用者指南。每個參數的選項為:
True
:請求中繼資料,如果提供則傳遞給score
。如果未提供中繼資料,則會忽略該請求。False
:不請求中繼資料,並且中繼估計器不會將其傳遞給score
。None
:不請求中繼資料,並且如果使用者提供中繼資料,meta 估算器將引發錯誤。str
:應使用此給定別名,而非原始名稱,將中繼資料傳遞至 meta 估算器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這讓您可以變更某些參數的請求,而保留其他參數不變。在 1.3 版本中新增。
注意
只有在此估算器被用作 meta 估算器的子估算器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
在
score
中針對sample_weight
參數的中繼資料路由。
- 返回值:
- self物件
更新後的物件。
- staged_predict(X)[原始碼]#
傳回 X 的分階段預測。
輸入樣本的預測迴歸值計算方式為集成中迴歸器的加權中位數預測值。
此產生器方法會在每次 boosting 迭代後產生集成預測,因此允許監控,例如確定每次 boosting 後在測試集上的預測。
- 參數:
- X形狀為 (n_samples, n_features) 的類數組或稀疏矩陣
訓練輸入樣本。
- 產生:
- y形狀為 (n_samples,) 的 ndarray 產生器
預測的迴歸值。
- staged_score(X, y, sample_weight=None)[原始碼]#
傳回 X、y 的分階段分數。
此產生器方法會在每次 boosting 迭代後產生集成評分,因此允許監控,例如確定每次 boosting 後在測試集上的評分。
- 參數:
- X形狀為 (n_samples, n_features) 的類數組或稀疏矩陣
訓練輸入樣本。稀疏矩陣可以是 CSC、CSR、COO、DOK 或 LIL。 COO、DOK 和 LIL 會轉換為 CSR。
- y形狀為 (n_samples,) 的類數組
X 的標籤。
- sample_weight形狀為 (n_samples,) 的類數組,預設值=None
樣本權重。
- 產生:
- z浮點數