BaggingClassifier#
- class sklearn.ensemble.BaggingClassifier(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]。最後,當基礎估計器建立在樣本和特徵的子集上時,該方法稱為隨機補丁 [4]。
在使用者指南中閱讀更多資訊。
在 0.15 版本中新增。
- 參數:
- estimator物件,預設值為 None
要擬合在資料集隨機子集上的基礎估計器。如果為 None,則基礎估計器為
DecisionTreeClassifier
。在 1.2 版本中新增:
base_estimator
已重新命名為estimator
。- n_estimators整數,預設值為 10
集成中的基礎估計器數量。
- max_samples整數或浮點數,預設值為 1.0
要從 X 中繪製以訓練每個基礎估計器的樣本數(預設情況下帶替換,請參閱
bootstrap
以了解更多詳細資訊)。如果為整數,則繪製
max_samples
個樣本。如果為浮點數,則繪製
max_samples * X.shape[0]
個樣本。
- max_features整數或浮點數,預設值為 1.0
要從 X 中繪製以訓練每個基礎估計器的特徵數量(預設情況下不帶替換,請參閱
bootstrap_features
以了解更多詳細資訊)。如果為整數,則繪製
max_features
個特徵。如果為浮點數,則繪製
max(1, int(max_features * n_features_in_))
個特徵。
- bootstrap布林值,預設值為 True
是否帶替換繪製樣本。如果為 False,則執行不帶替換的抽樣。
- bootstrap_features布林值,預設值為 False
是否帶替換繪製特徵。
- oob_score布林值,預設值為 False
是否使用袋外樣本來估計泛化誤差。僅當 bootstrap=True 時可用。
- warm_start布林值,預設值為 False
當設定為 True 時,重複使用上次呼叫 fit 的解決方案,並向集成中新增更多估計器,否則,僅擬合一個全新的集成。請參閱詞彙表。
在 0.17 版本中新增: warm_start 建構函式參數。
- n_jobs整數,預設值為 None
在平行處理中執行
fit
和predict
的作業數量。None
表示 1,除非在joblib.parallel_backend
內容中。-1
表示使用所有處理器。請參閱詞彙表以了解更多詳細資訊。- random_state整數、RandomState 實例或 None,預設值為 None
控制原始資料集(樣本方面和特徵方面)的隨機重新取樣。如果基礎估計器接受
random_state
屬性,則會為集成中的每個實例產生不同的種子。傳遞一個整數,以便在多個函式呼叫中產生可重現的輸出。請參閱詞彙表。- verbose整數,預設值為 0
控制擬合和預測時的詳細程度。
- 屬性:
- estimator_估計器
從中擴展集成的基礎估計器。
在 1.2 版本中新增:
base_estimator_
已重新命名為estimator_
。- n_features_in_整數
在fit期間看到的特徵數量。
在 0.24 版本中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在fit期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時,才會定義。在 1.0 版本中新增。
- estimators_估計器清單
已擬合基礎估計器的集合。
estimators_samples_
陣列列表每個基本估計器所繪製的樣本子集。
- estimators_features_陣列列表
每個基本估計器所繪製的特徵子集。
- classes_形狀為 (n_classes,) 的 ndarray
類別標籤。
- n_classes_整數或列表
類別數量。
- oob_score_浮點數
使用袋外估計獲得的訓練資料集分數。僅當
oob_score
為 True 時,此屬性才存在。- oob_decision_function_形狀為 (n_samples, n_classes) 的 ndarray
在訓練集上使用袋外估計計算的決策函數。如果 n_estimators 很小,則可能存在資料點在自助抽樣期間從未被排除的情況。在這種情況下,
oob_decision_function_
可能包含 NaN。僅當oob_score
為 True 時,此屬性才存在。
另請參閱
BaggingRegressor
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 SVC >>> from sklearn.ensemble import BaggingClassifier >>> from sklearn.datasets import make_classification >>> X, y = make_classification(n_samples=100, n_features=4, ... n_informative=2, n_redundant=0, ... random_state=0, shuffle=False) >>> clf = BaggingClassifier(estimator=SVC(), ... n_estimators=10, random_state=0).fit(X, y) >>> clf.predict([[0, 0, 0, 0]]) array([1])
- decision_function(X)[原始碼]#
基本分類器的決策函數的平均值。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣
訓練輸入樣本。僅當基本估計器支援時,才接受稀疏矩陣。
- 回傳:
- score形狀為 (n_samples, k) 的 ndarray
輸入樣本的決策函數。列對應於屬性
classes_
中按排序順序顯示的類別。回歸和二元分類是k == 1
的特殊情況,否則k==n_classes
。
- property estimators_samples_#
每個基本估計器所繪製的樣本子集。
回傳一個動態生成的索引列表,識別用於擬合整體中每個成員的樣本,即袋內樣本。
注意:該列表會在每次呼叫屬性時重新建立,以減少物件的記憶體佔用空間,而不會儲存抽樣資料。因此,擷取屬性可能會比預期的慢。
- 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_paramsdict
要傳遞給基礎估計器的參數。
在 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,將回傳此估計器和所包含的子物件(即估計器)的參數。
- 回傳:
- paramsdict
對應到其值的參數名稱。
- predict(X)[原始碼]#
預測 X 的類別。
輸入樣本的預測類別會計算為具有最高平均預測機率的類別。如果基本估計器未實作
predict_proba
方法,則會回歸到投票。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣
訓練輸入樣本。僅當基本估計器支援時,才接受稀疏矩陣。
- 回傳:
- y形狀為 (n_samples,) 的 ndarray
預測的類別。
- predict_log_proba(X)[原始碼]#
預測 X 的類別對數機率。
輸入樣本的預測類別對數機率計算為整體中基本估計器的平均預測類別機率的對數。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣
訓練輸入樣本。僅當基本估計器支援時,才接受稀疏矩陣。
- 回傳:
- p形狀為 (n_samples, n_classes) 的 ndarray
輸入樣本的類別對數機率。類別的順序對應於屬性 classes_ 中的順序。
- predict_proba(X)[原始碼]#
預測 X 的類別機率。
輸入樣本的預測類別機率計算為整體中基本估計器的平均預測類別機率。如果基本估計器未實作
predict_proba
方法,則會回歸到投票,而輸入樣本的預測類別機率則代表預測每個類別的估計器比例。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣
訓練輸入樣本。僅當基本估計器支援時,才接受稀疏矩陣。
- 回傳:
- p形狀為 (n_samples, n_classes) 的 ndarray
輸入樣本的類別機率。類別的順序對應於屬性 classes_ 中的順序。
- score(X, y, sample_weight=None)[原始碼]#
回傳給定測試資料和標籤的平均準確度。
在多標籤分類中,這是子集準確度,這是一個嚴苛的指標,因為您要求每個樣本的每個標籤集都必須正確預測。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
測試樣本。
- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列
X
的真實標籤。- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
樣本權重。
- 回傳:
- score浮點數
相對於
y
,self.predict(X)
的平均準確度。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') BaggingClassifier [原始碼]#
請求傳遞至
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 版本新增。
注意
只有在這個估算器被用作 meta-estimator 的子估算器時,此方法才相關,例如在
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$') BaggingClassifier [原始碼]#
請求傳遞至
score
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時此方法才相關(請參閱sklearn.set_config
)。請參閱 使用手冊 以了解路由機制如何運作。每個參數的選項如下:
True
:請求中繼資料,如果提供,則傳遞至score
。如果未提供中繼資料,則忽略請求。False
:不請求中繼資料,且 meta-estimator 不會將其傳遞至score
。None
:不請求中繼資料,如果使用者提供,meta-estimator 將會引發錯誤。str
:中繼資料應該使用此給定的別名傳遞至 meta-estimator,而不是原始名稱。
預設值(
sklearn.utils.metadata_routing.UNCHANGED
)保留現有的請求。這允許您變更某些參數的請求,而不是其他參數。於 1.3 版本新增。
注意
只有在這個估算器被用作 meta-estimator 的子估算器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
score
中sample_weight
參數的中繼資料路由。
- 回傳:
- self物件
更新後的物件。