F-score的定义不明确 scikit

我知道这个问题已经被问过很多次,但我对这个警告感到困惑,因为我仍然得到了f1分数。对我来说,它不是零。

我已经计算了微观的f1分数,它运行得很好,没有警告。但当我计算宏观的f1分数时,它会给我一个警告。我也得到了精确度和召回率的分数。两者都不是零。它们非常小,例如有时是0.01或0.001。f1分数也不是零。但我不确定为什么我会得到这个警告。正如我在其他帖子中读到的那样,这可能是由于你正在进行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_scorey_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,警告就是针对这个标签的。

现在,关于是否可以依赖这个结果的问题,请查看相关问题:

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注