【发布时间】:2017-05-07 18:29:34
【问题描述】:
我试图弄清楚为什么 F1 分数是 sklearn 中的分数。我知道它的计算方式是:
F1 = 2 * (precision * recall) / (precision + recall)
我的代码:
from sklearn.metrics import f1_score, precision_score, recall_score
...
fmeasure1 = f1_score(true_output, predicted_output, average="macro")
fmeasure2 = f1_score(true_output, predicted_output, average="micro")
precision = precision_score(true_output, predicted_output, average="macro")
recall = recall_score(true_output, predicted_output, average="macro")
print 2*(precision*recall)/(precision + recall), fmeasure1, fmeasure2
我的数据得到的值是:
0.785744255639 0.769527615775 0.984532095901
我不明白为什么这三个值彼此不同。我已经尝试阅读文档here,但我仍然很迷茫。
我的数据集是多类的,本质上是高度不平衡的。这里的哪个值是“正确”值,并且通过扩展,我应该使用平均值参数(即无、微观、宏观、重量)中的哪个?
谢谢,任何见解都非常有价值。
【问题讨论】:
标签: python scikit-learn