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
相关产品推荐
相关产品推荐

