1

Я использую SciKit, как библиотеку для работы с алгоритмами классификации, такими как: NB, SVM.Как я могу вычислить меру F1 для каждого класса в многоклассической классификации?

здесь очень красиво и прекрасно binary classification implementation для "СПАМ и HAM" Письма:

confusion += confusion_matrix(test_y, predictions) 
    score = f1_score(test_y, predictions, pos_label=SPAM) 
    //note in my case 3-classes I do not need to set [pos_label] 

Если у меня есть три класса, как {SPAM, HAM, NORMAL} вместо двух, затем: как я могу адаптировать этот код, чтобы найти F1-Score для каждого класса, а также для всех классов, как средний.

ответ

2

Используйте отчет классификации в sklearn для вычисления F-критерия для нескольких классов.

from sklearn.metrics import classification_report as cr 
gold = [] 
pred = [] 
# given a test set with annotated gold labels 
for testinstance, goldlabel in testdata: 
    gold.append(goldlabel) 
    #clf is your classifier object with predict method 
    predictedlabel = clf.predict(testinstance) 
    pred.append(predictedlabel) 
print cr(gold,pred, digits=4) 
5

Проблема в том, что измерение F1 - это imho, не имеющее смысла для проблем с несколькими классами. Это гармоническое среднее между точностью и отзывом.

Точность - вероятность того, что положительно классифицированный экземпляр (случайно выбранный) положителен.

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

Эти определения по своей сути являются двоичными. Обычно я давал бы меру F1 для каждого из классов отдельно. Это позволяет вам также решить, какие виды сбоев приемлемы для вас. Из моего личного опыта я бы точно дал точность и напомню. В вашем примере классификация сообщения электронной почты как спама была бы крайне вредной. Следовательно, Precision on SpAM является более важным, чем отзыв.

Для более широкого обзора, также содержащего перечень мер, которые Вы можете также проверить http://rali.iro.umontreal.ca/rali/sites/default/files/publis/SokolovaLapalme-JIPM09.pdf

+0

Да, как я могу реализовать отзыв и точность для каждого класса, рассмотрим приведенный выше пример, –

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