本文簡要介紹python語言中 sklearn.ensemble.StackingClassifier
的用法。
用法:
class sklearn.ensemble.StackingClassifier(estimators, final_estimator=None, *, cv=None, stack_method='auto', n_jobs=None, passthrough=False, verbose=0)
帶有最終分類器的估計器堆棧。
堆疊泛化包括堆疊單個估計器的輸出並使用分類器來計算最終預測。堆疊允許通過使用每個單獨的估計器的輸出作為最終估計器的輸入來使用它們的強度。
請注意,
estimators_
適合完整的X
而final_estimator_
是使用cross_val_predict
的基本估計器的 cross-validated 預測來訓練的。在用戶指南中閱讀更多信息。
- estimators:(str,估計器)列表
將堆疊在一起的基本估計器。列表的每個元素都定義為字符串元組(即名稱)和估計器實例。可以使用
set_params
將估計器設置為 ‘drop’。- final_estimator:估計器,默認=無
將用於組合基本估計器的分類器。默認分類器是
LogisticRegression
。- cv:int,交叉驗證生成器或可迭代的,默認=無
確定
cross_val_predict
中用於訓練final_estimator
的交叉驗證拆分策略。 cv 的可能輸入是:- 無,使用默認的 5 折交叉驗證,
- 整數,指定(分層)KFold 中的折疊數,
- 用作交叉驗證生成器的對象,
- 一個可迭代的產量火車,測試拆分。
對於整數/無輸入,如果估計器是分類器並且 y 是二進製或多類,則使用
StratifiedKFold
。在所有其他情況下,使用KFold
。這些拆分器使用shuffle=False
實例化,因此拆分在調用之間將是相同的。有關可在此處使用的各種交叉驗證策略,請參閱用戶指南。
注意
如果訓練樣本的數量足夠大,那麽更大數量的拆分將不會帶來任何好處。確實,訓練時間會增加。
cv
不用於模型評估,而是用於預測。- stack_method:{‘auto’, ‘predict_proba’,‘decision_function’, ‘predict’},默認='自動'
為每個基本估計器調用的方法。有可能:
- 如果‘auto’,它將嘗試按順序為每個估計器調用
'predict_proba'
、'decision_function'
或'predict'
。 - 否則,為
'predict_proba'
、'decision_function'
或'predict'
之一。如果估算器未實現該方法,則會引發錯誤。
- 如果‘auto’,它將嘗試按順序為每個估計器調用
- n_jobs:整數,默認=無
並行運行的作業數全部
estimators
fit
。None
表示 1,除非在joblib.parallel_backend
上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。- passthrough:布爾,默認=假
當為 False 時,隻有估計器的預測將用作
final_estimator
的訓練數據。當為 True 時,final_estimator
將根據預測以及原始訓練數據進行訓練。- verbose:整數,默認=0
詳細程度。
- classes_:ndarray 形狀 (n_classes,)
類標簽。
- estimators_:估算器列表
估計器參數的元素,已安裝在訓練數據上。如果估算器已設置為
'drop'
,它將不會出現在estimators_
中。- named_estimators_:sklearn.utils.Bunch
按名稱訪問任何適合的sub-estimators 的屬性。
n_features_in_
int擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅當基礎估計器在合適時公開此類屬性時才定義。 .. 版本添加::1.0
- final_estimator_:估計器
給定
estimators_
的輸出進行預測的分類器。- stack_method_:str 列表
每個基本估計器使用的方法。
參數:
屬性:
注意:
當每個估計器使用
predict_proba
時(即大部分時間用於stack_method='auto'
或專門用於stack_method='predict_proba'
),在二進製分類問題的情況下,每個估計器預測的第一列將被丟棄。事實上,這兩個特征將完全共線。參考:
- 1
Wolpert, David H. “堆疊泛化”。神經網絡 5.2(1992):241-259。
例子:
>>> from sklearn.datasets import load_iris >>> from sklearn.ensemble import RandomForestClassifier >>> from sklearn.svm import LinearSVC >>> from sklearn.linear_model import LogisticRegression >>> from sklearn.preprocessing import StandardScaler >>> from sklearn.pipeline import make_pipeline >>> from sklearn.ensemble import StackingClassifier >>> X, y = load_iris(return_X_y=True) >>> estimators = [ ... ('rf', RandomForestClassifier(n_estimators=10, random_state=42)), ... ('svr', make_pipeline(StandardScaler(), ... LinearSVC(random_state=42))) ... ] >>> clf = StackingClassifier( ... estimators=estimators, final_estimator=LogisticRegression() ... ) >>> from sklearn.model_selection import train_test_split >>> X_train, X_test, y_train, y_test = train_test_split( ... X, y, stratify=y, random_state=42 ... ) >>> clf.fit(X_train, y_train).score(X_test, y_test) 0.9...
相關用法
- Python sklearn StackingRegressor用法及代碼示例
- Python sklearn StandardScaler用法及代碼示例
- Python sklearn StratifiedGroupKFold用法及代碼示例
- Python sklearn StratifiedShuffleSplit用法及代碼示例
- Python sklearn StratifiedKFold用法及代碼示例
- Python sklearn ShrunkCovariance用法及代碼示例
- Python sklearn SelfTrainingClassifier用法及代碼示例
- Python sklearn SelectFromModel用法及代碼示例
- Python sklearn SparsePCA用法及代碼示例
- Python sklearn SpectralEmbedding用法及代碼示例
- Python sklearn SelectFpr用法及代碼示例
- Python sklearn ShuffleSplit用法及代碼示例
- Python sklearn SpectralClustering用法及代碼示例
- Python sklearn Sum用法及代碼示例
- Python sklearn SpectralBiclustering用法及代碼示例
- Python sklearn SVR用法及代碼示例
- Python sklearn SelectKBest用法及代碼示例
- Python sklearn SimpleImputer用法及代碼示例
- Python sklearn SGDOneClassSVM用法及代碼示例
- Python sklearn SVC用法及代碼示例
- Python sklearn SGDRegressor用法及代碼示例
- Python sklearn SequentialFeatureSelector用法及代碼示例
- Python sklearn SplineTransformer用法及代碼示例
- Python sklearn SelectPercentile用法及代碼示例
- Python sklearn SkewedChi2Sampler用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.ensemble.StackingClassifier。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。