使用 GridSearchCV 时发生值错误
Posted
技术标签:
【中文标题】使用 GridSearchCV 时发生值错误【英文标题】:value error happens when using GridSearchCV 【发布时间】:2015-07-06 06:52:57 【问题描述】:我正在使用 GridSearchCV 进行分类,我的代码是:
parameter_grid_SVM = 'dual':[True,False],
'loss':["squared_hinge","hinge"],
'penalty':["l1","l2"]
clf = GridSearchCV(LinearSVC(),param_grid=parameter_grid_SVM,verbose=2)
clf.fit(trian_data, labels)
然后,我遇到了错误
ValueError:不支持的参数集:仅当 dual='false' 时才支持penalty='l1'。,参数:penalty='l1',loss='hinge',dual=False
稍后我将代码更改为:
clf = GridSearchCV(LinearSVC(penalty='l1',dual=False),verbose=2)
我遇到了错误
TypeError: init() 至少需要 3 个参数(给定 3 个)
我也试过了:
parameter_grid_SVM =
'loss':["squared_hinge"]
clf = GridSearchCV(LinearSVC(penalty='l1',dual=False),param_grid=parameter_grid_SVM,verbose=2)
clf.fit(trian_data, labels)
但是,我仍然有错误
ValueError:不支持的参数集:仅当 dual='false' 时才支持penalty='l1'。,参数:penalty='l1',loss='squared_hinge',dual=False
有人知道我应该怎么做吗?
【问题讨论】:
只是预感:尝试将固定参数添加到您用于网格搜索的字典中作为单例列表:'penalty': ['l1'], 'dual': [False]。 我也试过了,但是它返回错误 ValueError: Unsupported set of arguments: penis='l1' is only supported when dual='false'., 参数:penalty='l1', loss ='squared_hinge', dual=False 【参考方案1】:产生此错误消息的代码是here。我看不出是什么原因导致这种情况只是偶尔发生,但仅凭 else 意味着它可能是其他东西,而不仅仅是惩罚 ='l1', dual='false' 组合。
【讨论】:
【参考方案2】:我在做稀疏 SVM 时也遇到了这个问题。我在此页面SVM module explanation 中找到了一段工作演示代码。希望它可能会有所帮助。
clf = LinearSVC(loss='l2', penalty='l1', dual=False)
【讨论】:
【参考方案3】:如果模型使用error_score
参数抛出异常,一个选项是指示GridSearchCV
手动设置分数。见my answer here。
【讨论】:
【参考方案4】:有一个类似的问题,在我的例子中,它是写十二个12
而不是'el two'l2
。
【讨论】:
以上是关于使用 GridSearchCV 时发生值错误的主要内容,如果未能解决你的问题,请参考以下文章
评分“roc_auc”值不适用于gridsearchCV应用RandomForestclassifer
使用 GridSearchCV 但不使用 GridSearchCV 时出错 - Python 3.6.7