You need to enable JavaScript to run this app. StackingRegressor调用estimators_报错,如何获取各基模型及集成模型得分
优惠活动
大模型
产品
解决方案
定价
更多

StackingRegressor调用estimators_报错,如何获取各基模型及集成模型得分

报错原因

  • StackingRegressor的estimators_是模型拟合后才会生成的属性,只有调用过fit()方法完成训练后,sklearn才会初始化该属性存储所有训练完成的基学习器,未训练的模型实例不存在该属性。
  • 补充通用规则:sklearn中所有以下划线_为后缀的属性,均为拟合后才生成的动态属性,未训练的实例不会自带这类属性。
  • 你当前的代码仅完成了StackingRegressor的实例化,没有执行训练步骤,因此直接访问estimators_就会抛出属性不存在的错误。

解决方法

在访问estimators_之前,先使用训练数据完成模型拟合即可,调整后的代码参考如下(你可以根据自己的数据生成逻辑修改对应部分):

if __name__ == "__main__":
    DATASETS = {"Dataset": generate_data}
    models = get_stacking()
    for dataset_name, generate_dataset in DATASETS.items():
        # 生成数据集,此处根据你的generate_data实际返回值调整
        X_train, X_test, y_train, y_test = generate_dataset()
        # 先完成堆叠模型的训练
        models.fit(X_train, y_train)
        dfs = []
        # 训练完成后再遍历基学习器
        for i, model in models.estimators_:
                df = analyse(
                    generate_dataset=generate_dataset,
                    regressor=model,
                    reg_name=i)

如果需要获取最终的元学习器(也就是你代码里的LinearRegression),训练完成后可以通过models.final_estimator_访问。

内容的提问来源于stack exchange,提问作者Opps_0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 07:27:01