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

集成模型中各成员独立执行RandomizedSearchCV的Sklearn处理机制问询

Sklearn集成模型自调优估计器的拟合机制问题

场景复现:含独立参数搜索的集成模型构建

导入库与回归数据集

from sklearn.ensemble import VotingRegressor, StackingRegressor, RandomForestRegressor
from sklearn.tree import DecisionTreeRegressor
from sklearn.datasets import make_regression

from sklearn.model_selection import RandomizedSearchCV

X, y = make_regression()

定义自调优估计器并构建Stacking集成

rf_param_dist = dict(n_estimators=[1, 2, 3, 4, 5])
rf_searcher = RandomizedSearchCV(RandomForestRegressor(), rf_param_dist, n_iter=5, cv=3)

dt_param_dist = dict(max_depth=[4, 5, 6, 7, 8])
dt_searcher = RandomizedSearchCV(DecisionTreeRegressor(), dt_param_dist, n_iter=5, cv=3)

ensemble = StackingRegressor(
    [ ('rf', rf_searcher), ('dt', dt_searcher) ]
).fit(X, y)

技术问题

Q1:循环依赖的处理

集成模型中存在两个未拟合的并行估计器,需先拟合完成才能执行ensemble.predict(...),但拟合任一估计器又需要集成模型的预测结果,Sklearn如何处理这种循环依赖?

Q2:独立参数调优的合理性

由于两个估计器独立执行参数调优,是否会各自错误假设对方的参数固定,从而导致优化问题定义不清晰?

参考:集成模型参数联合优化的正确方式

# 联合优化
ensemble = VotingRegressor(
    [ ('rf', RandomForestRegressor()), ('dt', DecisionTreeRegressor()) ]
)

jointsearch_param_dist = dict(
    rf__n_estimators=[1, 2, 3, 4, 5],
    dt__max_depth=[4, 5, 6, 7, 8]
)

ensemble_jointsearch = RandomizedSearchCV(ensemble, jointsearch_param_dist)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:12:34