Ошибка значения происходит при использовании 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', двойная = 'ложь'.

Другие вопросы по тегам