BaggingRegressor#
- class sklearn.ensemble.BaggingRegressor(estimator=None, n_estimators=10, *, max_samples=1.0, max_features=1.0, bootstrap=True, bootstrap_features=False, oob_score=False, warm_start=False, n_jobs=None, random_state=None, verbose=0)[原始碼]#
一個 Bagging 迴歸器。
Bagging 迴歸器是一個集成元估計器,它將基本迴歸器擬合到原始資料集的隨機子集上,然後將它們的個別預測彙總(通過投票或平均)以形成最終預測。這種元估計器通常可以用作減少黑箱估計器(例如決策樹)變異數的方法,方法是將隨機化引入其建構過程中,然後從中建立一個集成。
此演算法涵蓋了文獻中的幾項研究。當資料集的隨機子集是作為樣本的隨機子集繪製時,則此演算法稱為 Pasting [1]。如果樣本是使用替換的方式繪製,則該方法稱為 Bagging [2]。當資料集的隨機子集是作為特徵的隨機子集繪製時,則該方法稱為隨機子空間 [3]。最後,當基本估計器是建立在樣本和特徵的子集上時,則該方法稱為隨機 Patches [4]。
在使用者指南中閱讀更多內容。
在 0.15 版本中新增。
- 參數:
- estimator物件,預設值=None
要擬合到資料集隨機子集的基本估計器。如果為 None,則基本估計器為
DecisionTreeRegressor
。在 1.2 版本中新增:
base_estimator
已重新命名為estimator
。- n_estimatorsint,預設值=10
集成中基本估計器的數量。
- max_samplesint 或 float,預設值=1.0
要從 X 中繪製以訓練每個基本估計器的樣本數量(預設情況下使用替換,有關更多詳細資訊,請參閱
bootstrap
)。如果是 int,則繪製
max_samples
個樣本。如果是 float,則繪製
max_samples * X.shape[0]
個樣本。
- max_featuresint 或 float,預設值=1.0
要從 X 中繪製以訓練每個基本估計器的特徵數量(預設情況下不使用替換,有關更多詳細資訊,請參閱
bootstrap_features
)。如果是 int,則繪製
max_features
個特徵。如果是 float,則繪製
max(1, int(max_features * n_features_in_))
個特徵。
- bootstrapbool,預設值=True
是否使用替換來繪製樣本。如果為 False,則執行不使用替換的抽樣。
- bootstrap_featuresbool,預設值=False
是否使用替換來繪製特徵。
- oob_scorebool,預設值=False
是否使用袋外樣本來估計泛化誤差。僅當 bootstrap=True 時可用。
- warm_startbool,預設值=False
設定為 True 時,重複使用先前呼叫的擬合解決方案,並向集成添加更多估計器,否則,只需擬合一個全新的集成。請參閱術語表。
- n_jobsint,預設值=None
在
fit
和predict
中平行執行的任務數量。None
表示 1,除非在joblib.parallel_backend
環境中。-1
表示使用所有處理器。請參閱術語表以瞭解更多詳細資訊。- random_stateint、RandomState 實例或 None,預設值=None
控制原始資料集的隨機重新取樣(樣本方式和特徵方式)。如果基本估計器接受
random_state
屬性,則會為集成中的每個實例產生不同的種子。傳遞 int 以在多個函數呼叫中產生可重現的輸出。請參閱術語表。- verboseint,預設值=0
控制擬合和預測時的詳細程度。
- 屬性:
- estimator_估計器
从中生长集成的基本估計器。
在 1.2 版本中新增:
base_estimator_
已重新命名為estimator_
。- n_features_in_int
在 fit 期間看到的特徵數量。
在 0.24 版本中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有都是字串的特徵名稱時才定義。在 1.0 版本中新增。
- estimators_估計器列表
擬合的子估計器的集合。
estimators_samples_
陣列列表每個基本估計器的繪製樣本子集。
- estimators_features_陣列列表
每個基底估計器所抽取的特徵子集。
- oob_score_浮點數
使用袋外估計 (out-of-bag estimate) 獲得的訓練資料集分數。僅當
oob_score
為 True 時,此屬性才存在。- oob_prediction_形狀為 (n_samples,) 的 ndarray
在訓練集上使用袋外估計計算的預測。如果 n_estimators 很小,則可能存在一個資料點在 bootstrap 過程中從未被排除在外的情況。在這種情況下,
oob_prediction_
可能會包含 NaN。僅當oob_score
為 True 時,此屬性才存在。
另請參閱
BaggingClassifier
一個 Bagging 分類器。
參考文獻
[1]L. Breiman, “Pasting small votes for classification in large databases and on-line”, Machine Learning, 36(1), 85-103, 1999.
[2]L. Breiman, “Bagging predictors”, Machine Learning, 24(2), 123-140, 1996.
[3]T. Ho, “The random subspace method for constructing decision forests”, Pattern Analysis and Machine Intelligence, 20(8), 832-844, 1998.
[4]G. Louppe and P. Geurts, “Ensembles on Random Patches”, Machine Learning and Knowledge Discovery in Databases, 346-361, 2012.
範例
>>> from sklearn.svm import SVR >>> from sklearn.ensemble import BaggingRegressor >>> from sklearn.datasets import make_regression >>> X, y = make_regression(n_samples=100, n_features=4, ... n_informative=2, n_targets=1, ... random_state=0, shuffle=False) >>> regr = BaggingRegressor(estimator=SVR(), ... n_estimators=10, random_state=0).fit(X, y) >>> regr.predict([[0, 0, 0, 0]]) array([-2.8720...])
- property estimators_samples_#
每個基本估計器的繪製樣本子集。
返回一個動態生成的索引列表,用於識別用於擬合集成中每個成員的樣本,即袋內 (in-bag) 樣本。
注意:每次呼叫屬性時,都會重新建立列表,以減少物件記憶體佔用空間,而無需儲存取樣資料。因此,提取屬性可能比預期的慢。
- fit(X, y, *, sample_weight=None, **fit_params)[原始碼]#
從訓練集 (X, y) 建立一個 Bagging 估計器集成。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}
訓練輸入樣本。只有在基底估計器支援的情況下,才接受稀疏矩陣。
- y形狀為 (n_samples,) 的類陣列
目標值(分類中的類別標籤,回歸中的實數)。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
樣本權重。如果為 None,則樣本權重相等。請注意,只有在基底估計器支援樣本加權的情況下才支援此功能。
- **fit_params字典
傳遞給底層估計器的參數。
在 1.5 版本中新增:僅當
enable_metadata_routing=True
時可用,可通過使用sklearn.set_config(enable_metadata_routing=True)
進行設定。有關更多詳細資訊,請參閱中繼資料路由使用者指南。
- 傳回值:
- self物件
已擬合的估計器。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看使用者指南,了解路由機制如何運作。
在 1.5 版本中新增。
- 傳回值:
- routingMetadataRouter
一個
MetadataRouter
,封裝了路由資訊。
- get_params(deep=True)[原始碼]#
取得此估計器的參數。
- 參數:
- deep布林值,預設值為 True
如果為 True,將傳回此估計器和所包含的子物件(也是估計器)的參數。
- 傳回值:
- params字典
將參數名稱對應到其值。
- predict(X)[原始碼]#
預測 X 的回歸目標。
輸入樣本的預測回歸目標是計算為集成中估計器的平均預測回歸目標。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}
訓練輸入樣本。只有在基底估計器支援的情況下,才接受稀疏矩陣。
- 傳回值:
- 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
樣本權重。
- 傳回值:
- score浮點數
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$') BaggingRegressor [原始碼]#
請求傳遞到
fit
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時才相關(請參閱sklearn.set_config
)。請參閱使用者指南,了解路由機制如何運作。每個參數的選項如下
True
:請求中繼資料,並在提供時傳遞給fit
。如果未提供中繼資料,則忽略請求。False
:不請求中繼資料,且 meta-estimator 不會將其傳遞給fit
。None
:不請求中繼資料,且如果使用者提供,meta-estimator 將引發錯誤。str
:中繼資料應使用指定的別名,而不是原始名稱傳遞給 meta-estimator。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。這讓您可以變更某些參數的請求,而其他參數則不變。在 1.3 版本中新增。
注意
只有當此估算器作為元估算器的子估算器使用時,此方法才相關,例如在
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$') BaggingRegressor [原始碼]#
請求傳遞到
score
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時才相關(請參閱sklearn.set_config
)。請參閱使用者指南,了解路由機制如何運作。每個參數的選項如下
True
:請求中繼資料,並在提供時傳遞給score
。如果未提供中繼資料,則忽略請求。False
:不請求中繼資料,且元估算器不會將其傳遞給score
。None
:不請求中繼資料,且如果使用者提供,meta-estimator 將引發錯誤。str
:中繼資料應使用指定的別名,而不是原始名稱傳遞給 meta-estimator。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。這讓您可以變更某些參數的請求,而其他參數則不變。在 1.3 版本中新增。
注意
只有當此估算器作為元估算器的子估算器使用時,此方法才相關,例如在
Pipeline
中使用。否則它沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
用於
score
中sample_weight
參數的中繼資料路由。
- 傳回值:
- self物件
更新後的物件。