Ошибка значения происходит при использовании GridSearchCV
Я использую 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: Неподдерживаемый набор аргументов: штраф ='l1' поддерживается только тогда, когда dual='false'., Параметры: штраф ='l1', потеря = 'шарнир', 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: Неподдерживаемый набор аргументов: штраф ='l1' поддерживается только тогда, когда dual='false'., Параметры: штраф ='l1', потеря ='squared_hinge', dual=False
Кто-нибудь знает, что мне делать, чтобы с этим справиться?
4 ответа
Я также столкнулся с этой проблемой при выполнении разреженных SVM. На этой странице объяснения модуля SVM я нахожу один рабочий код. Надеюсь, это поможет.
clf = LinearSVC(loss='l2', penalty='l1', dual=False)
Была похожая проблема, и в моем случае она писала двенадцать 12
вместо 'эль два' l2
в некоторых случаях.
Один из вариантов - проинструктировать GridSearchCV
установить счет вручную, если модель выдает исключение, используя error_score
параметр. Смотрите мой ответ здесь.
Код, который выдает это сообщение об ошибке, находится здесь. Я не вижу причин, по которым это может происходить только изредка, но само по себе означает, что, по-видимому, это нечто иное, чем просто комбинация штраф ='l1', двойная = 'ложь'.