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

fitpredict 中平行執行的任務數量。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

用於 fitsample_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

用於 scoresample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。