當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn StackingRegressor用法及代碼示例


本文簡要介紹python語言中 sklearn.ensemble.StackingRegressor 的用法。

用法:

class sklearn.ensemble.StackingRegressor(estimators, final_estimator=None, *, cv=None, n_jobs=None, passthrough=False, verbose=0)

帶有最終回歸器的估計器堆棧。

堆疊泛化包括堆疊單個估計器的輸出並使用回歸器來計算最終預測。堆疊允許通過使用每個單獨的估計器的輸出作為最終估計器的輸入來使用它們的強度。

請注意,estimators_ 適合完整的 Xfinal_estimator_ 是使用 cross_val_predict 的基本估計器的 cross-validated 預測來訓練的。

在用戶指南中閱讀更多信息。

參數

estimators(str,估計器)列表

將堆疊在一起的基本估計器。列表的每個元素都定義為字符串元組(即名稱)和估計器實例。可以使用 set_params 將估計器設置為 ‘drop’。

final_estimator估計器,默認=無

將用於組合基本估計量的回歸量。默認回歸器是 RidgeCV

cvint,交叉驗證生成器或可迭代的,默認=無

確定 cross_val_predict 中用於訓練 final_estimator 的交叉驗證拆分策略。 cv 的可能輸入是:

  • 無,使用默認的 5 折交叉驗證,
  • 整數,指定(分層)KFold 中的折疊數,
  • 用作交叉驗證生成器的對象,
  • 一個可迭代的產量火車,測試拆分。

對於整數/無輸入,如果估計器是分類器並且 y 是二進製或多類,則使用 StratifiedKFold 。在所有其他情況下,使用 KFold 。這些拆分器使用 shuffle=False 實例化,因此拆分在調用之間將是相同的。

有關可在此處使用的各種交叉驗證策略,請參閱用戶指南。

注意

如果訓練樣本的數量足夠大,那麽更大數量的拆分將不會帶來任何好處。確實,訓練時間會增加。 cv 不用於模型評估,而是用於預測。

n_jobs整數,默認=無

為所有 estimators 中的 fit 並行運行的作業數。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。

passthrough布爾,默認=假

當為 False 時,隻有估計器的預測將用作 final_estimator 的訓練數據。當為 True 時,final_estimator 將根據預測以及原始訓練數據進行訓練。

verbose整數,默認=0

詳細程度。

屬性

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_估計器

累加擬合的基本估計量的回歸器。

stack_method_str 列表

每個基本估計器使用的方法。

參考

1

Wolpert, David H. “堆疊泛化”。神經網絡 5.2(1992):241-259。

例子

>>> from sklearn.datasets import load_diabetes
>>> from sklearn.linear_model import RidgeCV
>>> from sklearn.svm import LinearSVR
>>> from sklearn.ensemble import RandomForestRegressor
>>> from sklearn.ensemble import StackingRegressor
>>> X, y = load_diabetes(return_X_y=True)
>>> estimators = [
...     ('lr', RidgeCV()),
...     ('svr', LinearSVR(random_state=42))
... ]
>>> reg = StackingRegressor(
...     estimators=estimators,
...     final_estimator=RandomForestRegressor(n_estimators=10,
...                                           random_state=42)
... )
>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, random_state=42
... )
>>> reg.fit(X_train, y_train).score(X_test, y_test)
0.3...

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.ensemble.StackingRegressor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。