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

如何为Pipeline传参并给AdaBoost基学习器DecisionTree设置多组ccp_alpha

问题原因

你之前的写法不生效是因为GridSearchCV只能识别参数网格字典顶层的参数路径规则,你直接把ccp_alpha的候选列表写到DecisionTreeClassifier()的实例化参数里,网格搜索无法识别和遍历这个嵌套的参数值,会直接把整个列表当成一个固定的ccp_alpha取值传入,自然达不到调参的效果。

正确实现方案

你可以把AdaBoost使用不同基分类器的场景拆成两个独立的参数网格块,分开配置参数:

  • 针对基分类器为SVC的AdaBoost,仅配置学习率等公共参数
  • 针对基分类器为DecisionTreeClassifier的AdaBoost,额外增加mdl__base_estimator__ccp_alpha的参数路径来传入ccp_alpha的候选值

另外注意如果用SVC作为AdaBoost的基分类器,需要给SVC设置probability=True开启概率输出,否则AdaBoost无法正常训练。同时你的原有代码存在变量名、参数取值不合法的小问题,修正后的完整代码如下:

import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV

pipeline = Pipeline(
    [
        ('scal', StandardScaler()),
        ('mdl', 'passthrough')
    ]
)

_parameters = [
    # 单独调优DecisionTreeClassifier
    {
        'mdl': [DecisionTreeClassifier(random_state=42)],
        'mdl__max_depth': np.linspace(2, 30, 2).astype(int),
        'mdl__min_samples_split': np.linspace(2, 10, 1).astype(int),  # 原取值1不合法,最小为2
        'mdl__max_features': np.linspace(1, 100, 1).astype(int),
        'mdl__ccp_alpha': np.linspace(0, 1, 10)
    },
    # 调优基分类器为SVC的AdaBoost
    {
        'mdl': [AdaBoostClassifier(random_state=23)],
        'mdl__learning_rate': np.linspace(0, 1, 20),
        'mdl__base_estimator': [SVC(probability=True)]  # 必须开启probability参数
    },
    # 调优基分类器为DecisionTree的AdaBoost,单独配置ccp_alpha
    {
        'mdl': [AdaBoostClassifier(random_state=23)],
        'mdl__learning_rate': np.linspace(0, 1, 20),
        'mdl__base_estimator': [DecisionTreeClassifier()],
        'mdl__base_estimator__ccp_alpha': [0.3, 0.4, 0.5, 0.7]
    }
]

grid_search = GridSearchCV(pipeline, _parameters, cv=3, n_jobs=-1, scoring='f1')
grid_search.fit(x, y)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:54:02