问题
I am using GridSearchCV to do classification and my codes are:
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)
And then, I meet the error
ValueError: Unsupported set of arguments: penalty='l1' is only supported when dual='false'., Parameters: penalty='l1', loss='hinge', dual=False
later on I change my code to :
clf = GridSearchCV(LinearSVC(penalty='l1',dual=False),verbose=2)
And I meet the error
TypeError: init() takes at least 3 arguments (3 given)
I also tried:
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)
However, I still have the error
ValueError: Unsupported set of arguments: penalty='l1' is only supported when dual='false'., Parameters: penalty='l1', loss='squared_hinge', dual=False
Anyone has idea what I should do to deal with that?
回答1:
One option is to instruct GridSearchCV
to set the score manually if model throws an exception using the error_score
parameter. See my answer here.
回答2:
I also met this problem when doing sparse SVM. I find one piece of working demo code in this page SVM module explanation. Hope it might help.
clf = LinearSVC(loss='l2', penalty='l1', dual=False)
回答3:
Had a similar issue and in my case, it was writing twelve 12
instead of 'el two' l2
in some instances.
回答4:
The code that produces this error message is here. I don't see what would cause this to only happen occasionally, but the bare else means that presumably it's something else other than just the penalty='l1', dual='false' combination.
来源:https://stackoverflow.com/questions/29902190/value-error-happens-when-using-gridsearchcv