F-score 是定义不明确的 scikit
F-score is ill-defined scikit
我知道这个问题已经被问过很多次了,但我对这个警告感到困惑,因为我仍然得到 f1score。对我来说,它不是零。
我已经为 micro 计算了 f1score,它工作正常,没有警告。但是当我计算宏的 f1score 时,它会给我一个警告。我也得到了准确率和召回率。两者都不为零。它们非常小,例如有时为 0.01 或 0.001。与 f1score 一样,它也不为零。但我不确定为什么会收到此警告。正如我在其他帖子中读到的那样,这可能是因为精度或召回率为零,所以你正在潜水 0/0。但就我而言,我有一些价值而不是零。
这里是确切的警告:
UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.
'precision', 'predicted', average, warn_for)
那么我可以依赖结果并避免警告吗?
f1_score
和 average='macro'
将首先单独计算每个标签的分数,然后找到它们的未加权平均值。
因此,如果您有多个 类(标签),则可能会发生其中一个不存在于预测数据中的情况。在这种情况下,您将收到该(缺失)标签的警告,并且 f1 将为 0。但是其他标签仍然会有一些非零值。所以均值将不为零。
例如:
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 1, 1, 0, 0, 0]
f1_score(y_true, y_pred, average='macro')
/usr/local/lib/python2.7/dist-packages/sklearn/metrics/classification.py:1135: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.
# Output: 0.38888888888888884
在上面的例子中,预测的数据不包含标签2,警告是针对那个。
现在,关于依赖与否的问题,请看相关问题:
我知道这个问题已经被问过很多次了,但我对这个警告感到困惑,因为我仍然得到 f1score。对我来说,它不是零。
我已经为 micro 计算了 f1score,它工作正常,没有警告。但是当我计算宏的 f1score 时,它会给我一个警告。我也得到了准确率和召回率。两者都不为零。它们非常小,例如有时为 0.01 或 0.001。与 f1score 一样,它也不为零。但我不确定为什么会收到此警告。正如我在其他帖子中读到的那样,这可能是因为精度或召回率为零,所以你正在潜水 0/0。但就我而言,我有一些价值而不是零。
这里是确切的警告:
UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.
'precision', 'predicted', average, warn_for)
那么我可以依赖结果并避免警告吗?
f1_score
和 average='macro'
将首先单独计算每个标签的分数,然后找到它们的未加权平均值。
因此,如果您有多个 类(标签),则可能会发生其中一个不存在于预测数据中的情况。在这种情况下,您将收到该(缺失)标签的警告,并且 f1 将为 0。但是其他标签仍然会有一些非零值。所以均值将不为零。
例如:
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 1, 1, 0, 0, 0]
f1_score(y_true, y_pred, average='macro')
/usr/local/lib/python2.7/dist-packages/sklearn/metrics/classification.py:1135: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.
# Output: 0.38888888888888884
在上面的例子中,预测的数据不包含标签2,警告是针对那个。
现在,关于依赖与否的问题,请看相关问题: