Выбор характеристик для многослойной классификации (scikit-learn)

Я пытаюсь сделать выбор функции по методу хи-квадрат в scikit-learn (sklearn.feature_selection.SelectKBest). Когда я пытаюсь применить это к проблеме с несколькими метками, я получаю это предупреждение:

UserWarning: Duplicate scores. Result may depend on feature ordering.There are probably duplicate features, or you used a classification score for a regression task. warn("Duplicate scores. Result may depend on feature ordering."

Почему это появляется и как правильно применить выбор функции в этом случае?

2 ответа

Решение

Код предупреждает вас о том, что может потребоваться произвольный разрыв связей, поскольку некоторые функции имеют одинаковую оценку.

Тем не менее, выбор функций на самом деле не работает для мультилабеля из коробки; лучшее, что вы можете сейчас сделать, - это связать выбор объектов и классификатор в конвейере, а затем передать их метаоценщику с несколькими метками. Пример (не проверено):

clf = Pipeline([('chi2', SelectKBest(chi2, k=1000)),
                ('svm', LinearSVC())])
multi_clf = OneVsRestClassifier(clf)

(Я полагаю, что это предупреждение выдается, даже когда связанные функции на самом деле не k-й и (k+1) -й, я думаю. Обычно его можно безопасно игнорировать.)

Я знаю, что тема немного устарела, но у меня работает следующее:

clf = Pipeline([('chi2', SelectKBest(chi2, k=1000)),
            ('lasso', OneVsRestClassifier(LogisticRegression()))])
Другие вопросы по тегам