使用GridSearchCV时发生值错误

时间:2015-04-27 17:23:29

标签: python classification svm

我使用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

任何人都知道我该怎么做才能解决这个问题?

4 个答案:

答案 0 :(得分:2)

如果模型使用GridSearchCV参数抛出异常,则一个选项是指示error_score手动设置分数。请参阅my answer here

答案 1 :(得分:1)

在进行稀疏SVM时我也遇到了这个问题。我在此页面SVM module explanation找到了一段可用的演示代码。希望它可能有所帮助。

clf = LinearSVC(loss='l2', penalty='l1', dual=False)

答案 2 :(得分:0)

产生此错误消息的代码是here。我不知道是什么原因导致这种情况偶尔发生,但除此之外的其他意味着除了惩罚='l1',双='假'组合之外其他东西不可能。

答案 3 :(得分:0)

遇到类似的问题,在我的案例中,它是在某些情况下写了十二个12而不是“ el two” l2