Вычисление оценки F1, когда целевые метки содержат только подмножество разрешенных меток

#machine-learning #scikit-learn #classification #multiclass-classification

Вопрос:

У меня проблема классификации 3-х классов.
Мои предсказанные метки состоят из всех трех классов.
Однако в моих целевых метках присутствуют только 2 из трех классов.
Например:

 predicted = [1,1,2,3,2,1]
target = [1,1,2,2,2,1]
 

Как мне следует вычислять результат Формулы-1 в этом случае?
В настоящее время я использую sklearn f1_score функцию s со macro средним значением.
Но это приводит к низкому значению оценки F1 для случаев, подобных описанным выше.

Ответ №1:

f1_score предлагает параметр под названием labels , который позволяет вам определить набор меток для включения в случае, если это average != 'binary' произойдет .

Например, если вас интересует только производительность вашего классификатора для классов 1 и 2 , вы можете сделать:

 from sklearn.metrics import f1_score


predicted = [1, 1, 2, 3, 2, 1]
target = [1, 1, 2, 2, 2, 1]

print(f1_score(target, predicted, average='macro', labels=[1, 2]))
# 0.9