gpt4 book ai didi

python - 为什么 scikitlearn 说 F1 分数不明确,FN 大于 0?

转载 作者:IT老高 更新时间:2023-10-28 20:35:32 26 4
gpt4 key购买 nike

我运行一个 python 程序,它调用 sklearn.metrics 的方法来计算精度和 F1 分数。这是没有预测样本时的输出:

/xxx/py2-scikit-learn/0.15.2-comp6/lib/python2.6/site-packages/sklearn/metr\
ics/metrics.py:1771: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples.
'precision', 'predicted', average, warn_for)

/xxx/py2-scikit-learn/0.15.2-comp6/lib/python2.6/site-packages/sklearn/metr\
ics/metrics.py:1771: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.
'precision', 'predicted', average, warn_for)

当没有预测样本时,表示TP+FP为0,所以

  • 精度(定义为 TP/(TP+FP))为 0/0,未定义,
  • 如果 FN 不为零,则 F1 分数(定义为 2TP/(2TP+FP+FN))为 0。

在我的例子中,sklearn.metrics 也返回准确率为 0.8,召回率为 0。所以 FN 不为零。

但为什么 scikilearn 说 F1 定义不明确?

Scikilearn 使用的 F1 的定义是什么?

最佳答案

https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/metrics/classification.py

F1 = 2 * (precision * recall) / (precision + recall)

precision = TP/(TP+FP) 正如你刚才所说,如果预测器根本不预测正类 - 精度为 0。

recall = TP/(TP+FN),如果预测器不能预测正类 - TP 为 0 - 召回率为 0。

所以现在你正在划分 0/0。

关于python - 为什么 scikitlearn 说 F1 分数不明确,FN 大于 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34757653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com