You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sklearn中TransformedTargetRegressor包裹Pipeline后set_params不生效问题

问题成因
  • scikit-learn 中所有以单下划线结尾的属性(例如 regressor_、transformer_)都是模型调用 fit() 方法后生成的拟合后属性,和初始化阶段传入的原始参数相互独立。
  • set_params() 方法只能修改模型初始化时传入的原始参数,不会修改已经生成的拟合后属性。
  • TransformedTargetRegressor 执行预测时,默认调用拟合完成的 regressor_ 属性做计算,你通过 set_params 修改的 regressor__model 属于未参与拟合的原始参数,因此不会生效。
解决方法

直接修改拟合后的 regressor_ 属性内的模型即可,不需要调用 set_params,将你示例中修改参数的代码替换为以下内容:

# 直接修改拟合后Pipeline中的model为提取出的单棵决策树
treg.regressor_.named_steps['model'] = tree
y_predicted = treg.predict(x_sample)
print('after modify regressor_: ', y_predicted)

运行后输出结果就会和你手动调用内部组件计算的 internal pipeline changes 结果一致。如果需要保留原始模型不被修改,可以先通过 copy.deepcopy 复制原模型后再修改副本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:36:02