如何对SVC进行超参数调优?GridSearchCV传参报无效参数如何解决
错误原因
报错的核心原因是你定义的超参数字典的键名和SVC模型支持的原生参数名不匹配,同时存在拼写错误:
- 多余的前缀:只有当你将SVC放入
Pipeline管道,且SVC对应的步骤命名为svc时,才需要给参数加svc_前缀。你直接将SVC实例传入GridSearchCV,不需要加此前缀 - 参数名拼写错误:SVC的正则化参数名为大写的
C,你写成了小写c;多项式核阶数参数名为degree,你拼写为dgree - 额外提醒:你当前固定核函数为
rbf,degree参数仅对poly多项式核生效,rbf核下该参数不会发挥任何作用,不需要的话可以直接删除
修正后的代码
# 如果你要使用rbf核,不需要degree参数,参数可以写成: param_grid = {'C': [5, 10, 100], 'gamma': [1,0.1,0.01,0.001], 'kernel': ['rbf']} grid = GridSearchCV(SVC(), param_grid, refit=True, verbose=3) grid.fit(x_train_poly, y_train)
# 如果你本来计划使用poly多项式核,调整成如下写法即可: param_grid = {'C': [5, 10, 100], 'gamma': [1,0.1,0.01,0.001], 'degree': [1,2,3,4,5,6], 'kernel': ['poly']} grid = GridSearchCV(SVC(), param_grid, refit=True, verbose=3) grid.fit(x_train_poly, y_train)
你也可以随时运行SVC().get_params().keys()查看SVC所有可调整的参数名,避免出现参数名不匹配的问题。
内容的提问来源于stack exchange,提问作者Mohanad Anas Taifour
相关产品推荐
相关产品推荐

