GridSearchCV中LogisticRegression的solver参数未生效,触发惩罚项报错
问题原因及解决方法
你的问题出在parameters的结构上:你把参数拆成了三个独立的字典,GridSearchCV会分别对这三组参数做独立搜索,而不是将它们组合起来遍历所有可能的超参数组合。
具体来说:
- 第一组
{'logreg__solver': ['saga']}:只会单独测试solver='saga'这一种情况,这部分是正常的; - 第二组
{'logreg__penalty':['l1', 'l2']}:没有指定solver参数,所以LogisticRegression会使用默认的lbfgs求解器,而lbfgs不支持l1正则,直接触发了你看到的错误; - 第三组
{'logreg__C':[1e-3, 0.1, 1, 10, 100]}:同样没有指定solver,依然用默认的lbfgs。
修正方法
把所有需要组合的参数放在同一个字典里,这样GridSearchCV会生成所有参数的笛卡尔积,确保saga求解器和l1/l2正则、不同的C值一起被测试:
parameters = { 'logreg__solver': ['saga'], 'logreg__penalty': ['l1', 'l2'], 'logreg__C': [1e-3, 0.1, 1, 10, 100] }
这样修改后,所有参数会被正确组合,saga求解器会和l1/l2正则配合使用,不会再出现默认求解器不兼容的问题。
内容的提问来源于stack exchange,提问作者Mageentta
相关产品推荐
相关产品推荐

