Scikit加权f1分数的计算和使用



我有一个关于sklearn.metrics.f1_score中weighted平均值的问题

sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average='weighted', sample_weight=None)
Calculate metrics for each label, and find their average, weighted by support (the number of true instances for each label). This alters ‘macro’ to account for label imbalance; it can result in an F-score that is not between precision and recall.

首先,如果有任何证明使用加权f1的参考,我只是好奇在哪些情况下我应该使用加权f1。

第二,我听说加权f1被弃用了,这是真的吗?

第三,如何实际计算加权f1,例如

{
    "0": {
        "TP": 2,
        "FP": 1,
        "FN": 0,
        "F1": 0.8
    },
    "1": {
        "TP": 0,
        "FP": 2,
        "FN": 2,
        "F1": -1
    },
    "2": {
        "TP": 1,
        "FP": 1,
        "FN": 2,
        "F1": 0.4
    }
}

如何计算上例的加权f1。我以为应该是(0.8*2/3 + 0.4*1/3)/3,但是我错了

首先,如果有任何证明使用加权f1的参考,我只是好奇在哪些情况下我应该使用加权f1。

我没有任何参考资料,但如果你对多标签分类感兴趣,你关心所有类的精度/召回率,那么加权f1分数是合适的。如果你用的是二元分类,你只关心正样本,那么它可能不合适。

第二,我听说加权f1被弃用了,这是真的吗?

不,加权f1本身没有被弃用。在v0.16中,只有函数接口的某些方面被弃用,然后只是为了在以前模棱两可的情况下使其更显式。(github上的历史讨论或查看源代码并搜索"deprecated"页面以查找详细信息)

第三,实际上是如何计算加权f1的?

摘自f1_score的文档:

``'weighted'``:
  Calculate metrics for each label, and find their average, weighted
  by support (the number of true instances for each label). This
  alters 'macro' to account for label imbalance; it can result in an
  F-score that is not between precision and recall.

因此平均值由支持度加权,这是具有给定标签的样本数量。因为上面的示例数据不包括支持,所以不可能从您列出的信息中计算加权f1分数。

相关内容

  • 没有找到相关文章

最新更新