Выбор характеристик для многослойной классификации (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()))])