当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。