首页 > 解决方案 > 目标标签仅包含允许标签的子集时的 F1 分数计算

问题描述

我有一个三级分类问题。
我的预测标签由所有三个类别组成。
但是,我的目标标签只有三个类别中的两个。
例如:

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

在这种情况下,我应该如何计算 F1 分数?
我目前正在使用sklearn平均功能f1_score。 但这会导致上述情况的 F1 得分值较低。macro

标签: machine-learningscikit-learnclassificationmulticlass-classification

解决方案


f1_score提供了一个名为的参数labels,让您可以定义一组标签以包含在average != 'binary'.

例如,如果您只对分类器的性能感兴趣12,您可以这样做:

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

推荐阅读