2016-06-29 3 views
3

У меня есть OneVsRestClassifier (scikit-learn), который был обучен.Функция потерь для OneVsRestClassifier

clf = OneVsRestClassifier(LogisticRegression(C=1.2, penalty='l1')).fit(X_train, y_train) 

Я хочу узнать о потерях для своих тестовых данных. Я использовал функцию log_loss, но она не работает, потому что у меня есть несколько классов в качестве выходов для каждого тестового примера. Что я делаю?

+0

Насколько велики ваши данные и какой набор данных вы используете? – alvas

+0

Я использую набор данных reuters от ntlk.corpus. Всего около 10 000 документов. –

ответ

2

Проблема классификации, о которой вы говорите, называется проблемой Multi-Label Classification. Для этого вы приняли хорошее решение использовать OneVsRestClassifier. По умолчанию метод score использует точность подмножества, что является очень резким показателем, так как это требует, чтобы вы правильно угадали все подмножества меток.

Некоторые другие функции потерь, предоставляемые scikit-узнать, что вы можете использовать следующие:

  1. Hamming Loss - Это измеряет расстояние Хэмминга между вашим предсказанием этикетками и истинной этикетке. This - это интуитивная формула для понимания расстояния от помех.
  2. Jaccard Similarity Coefficient Score - Это измеряет сходство Jaccard между вашими прогнозируемыми ярлыками и истинными ярлыками.
  3. Precision, Recall and F-Measures - В случае классификации с несколькими метками понятие точности, повторного вызова и F-мер может применяться к каждому классу независимо. В документе following guide объясняется, как объединить их во всех меток в классификации с несколькими метками.

Если вам необходимо также ранжировать ярлыки, как это делается в задачах ранжирования нескольких меток, то есть и другие более продвинутые методы, доступные в scikit-Learn, которые очень хорошо документированные примеры here. Если вы имеете дело с такой проблемой, то дайте мне знать в комментариях, я объясню каждую из этих показателей более подробно.

Надеюсь, это поможет!

+0

Спасибо! Оно работает! –

+0

Я рад, что это сработало для вас. Не могли бы вы отметить это как принятый ответ, если он вам помог? Это также поможет другим людям, которые имеют такие же сомнения. Спасибо. –

Смежные вопросы