F1分数:sklearn中的F1分数度量与分类报告中的F1分数值不同

3
我正在尝试分析我的结果,所以我在sklearn上使用F1得分指标和分类报告。无论采用何种平均方法,显示的结果都完全不同。它们根本不匹配。以下是我的验证数据示例:
F1得分为0.7666666666666667
但分类报告的结果如下:
  report       precision recall  f1-score   support
       0       0.16      0.57      0.25         7
       1       0.40      0.09      0.14        23
accuracy                           0.20        30



macro avg      precision: 0.28, recall:0.33,  f1score:0.20      support:30

weighted avg       precision:0.34      recall:0.20      f1score:0.17        support:30

任何帮助都将不胜感激。 谢谢!

我的代码是: ` print('F1得分 {}'.format(sklearn.metrics.f1_score(test_label, np.round(y_pred), average='micro'))´

对于分类报告,它是:

` print('F1得分 {}'.format(sklearn.metrics.classification_report(test_label, np.round(y_pred), target_names=labels))´

标签只是一个包含我的类标签的列表。


1
你具体的问题是什么? - PV8
1
请问能否分享你的代码? - sentence
抱歉,我的问题是为什么F1分数有差异?我的代码已经更新。 - arpitha
为什么要使用微平均?您的问题是二元分类,可以将默认值“binary”作为平均参数的值。在这种情况下,F1分数应该等于分类报告中1个案例的F1分数。 - Aelius
1个回答

0

当你计算f1-score时,你要求scikit计算average='micro',但分类报告计算宏平均和加权平均。

尝试print('F1 score {}'.format(sklearn.metrics.f1_score(test_label, np.round(y_pred), average='macro'))


4
谢谢您的回复,我已经尝试过了,但是数值仍然不匹配,甚至差别很大。 - arpitha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接