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

如何使用RandomizedSearchCV对MultiOutputClassifier封装的模型做超参数调优

错误原因

scikit-learn的嵌套封装器参数需要遵循固定命名规则:如果要给封装器内部的子估计器传参,需要用[外层封装器的子估计器参数名]__[子估计器自身参数名]的格式,中间为双下划线。
你当前直接把随机森林的参数名传给MultiOutputClassifier外层实例,程序会认为你要给MultiOutputClassifier本身设置不存在的n_estimators等参数,因此抛出参数无效错误。

解决方法

修改你的参数字典,给所有随机森林的参数加上estimator__前缀(因为MultiOutputClassifier用来接收子估计器的参数就叫estimator),修改后的参数代码如下:

params = {
    'estimator__n_estimators': [i for i in range(50,225,25)],
    'estimator__max_depth' : [10,20,30,40,50],
    'estimator__max_features' : ['auto', 'sqrt', 'log2']
}

修改后原有的RandomizedSearchCV调用代码无需改动,即可正常将参数传递给内部的RandomForestClassifier进行超参数搜索。

如果后续遇到类似的嵌套估计器参数设置问题,可以运行print(外层估计器实例.get_params().keys())查看所有合法可配置的参数名,确认参数命名规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:06:07