GridSearchCV的param_grid正确设置方式及最优参数差异原因
问题解答
两种param_grid的写法都正确
scikit-learn的GridSearchCV本身支持两种超参数搜索空间的定义方式:
- 传入单个字典:自动对字典内所有超参数的取值做笛卡尔积,遍历所有组合
- 传入字典列表:会分别对列表内每个字典的超参数做笛卡尔积,再按列表顺序遍历所有组合
你给出的两种写法覆盖的超参数搜索空间完全一致,不存在语法或逻辑错误,都属于合法写法。
最优参数不同的原因
你观察到的现象完全符合GridSearchCV的设计逻辑,和随机性无关,完全由搜索顺序决定:
- 首先你找到的两组超参数的5折交叉验证得分完全相同,都属于当前搜索空间内的最优效果
GridSearchCV在遇到多组得分相同的最优参数时,会固定返回搜索顺序中第一个出现的组合,不会做额外选择- 两种写法的搜索顺序不同:
- 第一种单字典写法的遍历顺序中,
C=1、kernel=linear的组合早于C=1000、kernel=rbf的组合,所以前者被返回 - 第二种字典列表写法先遍历所有rbf核的组合,
C=1000、kernel=rbf的组合早于所有linear核的组合,所以前者被返回
- 第一种单字典写法的遍历顺序中,
- 额外补充:SVC的
linear核本身会忽略gamma参数,你第一种结果里的gamma=0.001实际不会对模型效果产生任何影响,两组最优参数在测试集上的预测表现基本没有差异。
内容的提问来源于stack exchange,提问作者b.joy
相关产品推荐
相关产品推荐

