【问题标题】:Why is the 'weighted' average F1 score from sklearns classification report different from the F1 score calculated from the formula?为什么 sklearn 分类报告的“加权”平均 F1 分数与公式计算的 F1 分数不同?
【发布时间】:2020-06-17 12:16:22
【问题描述】:

我尝试使用 sklearns 分类报告计算“加权”f1 分数,它似乎与使用F1 = 2*((p*r)/(p+r)) 计算 f1 分数时不同。例如:

查看示例发现here 查看加权平均线:

                precision    recall  f1-score   support
weighted avg       0.70      0.60      0.61         5

计算时我得到:0.646153846 = 2*((0.70*0.60)/(0.70+0.60))0.61 不同。为什么是这样?这个 f1 分数是如何计算的?

【问题讨论】:

  • 是多类问题吗?根据the source code如果是这样,则需要将其计算为“根据average参数加权的每个班级的F1分数的平均值。”

标签: python scikit-learn


【解决方案1】:

F1 分数,即二元分类模型中正类的 F1 分数。这计算为 F1 = 2*((p*r)/(p+r)

加权 F1 分数是一种特殊情况,我们不仅报告正类的分数,还报告负类的分数。这在我们有不平衡类的情况下很重要。因为即使我们的模型一直都预测为阳性,简单的 F1 分数也能提供很好的价值。

所以加权平均也考虑了这两个类的样本数,不能用你上面提到的公式计算出来。

希望对你有帮助。

【讨论】:

  • 所以本质上它会找到每个类的 f1 并使用两个分数的加权平均值(在二进制分类的情况下)?
  • 是的,凯文。它正是这样做的。
猜你喜欢
  • 2020-05-04
  • 2017-05-07
  • 2017-09-11
  • 2019-09-01
  • 1970-01-01
  • 2016-01-24
  • 2021-08-29
  • 2018-01-18
  • 2018-03-25
相关资源
最近更新 更多