首页 >后端开发 >Python教程 >为什么 Scikit-learn 的 F1-Score 会产生'UndefinedMetricWarning”?

为什么 Scikit-learn 的 F1-Score 会产生'UndefinedMetricWarning”?

Linda Hamilton
Linda Hamilton原创
2024-11-19 21:12:02579浏览

Why Does Scikit-learn's F1-Score Produce an

UndefinedMetricWarning: F-Score Error

使用 scikit-learn 的metrics.f1_score 计算 F-score 时,用户可能会遇到警告:

“UndefinedMetricWarning:F 分数为定义不明确,并且在没有预测样本的标签中设置为 0.0。”

理解警告

当真实标签 (y_test) 中的某些标签时,会出现此警告不会出现在预测标签 (y_pred) 中。在这种情况下,无法计算这些不可预测标签的 F 分数,并假定为 0.0。

示例

考虑以下示例,其中标签“2”预测中不存在:

y_test = [1, 10, 35, 9, 7, 29, 26, 3, 8, 23, 39, 11, 20, 2, 5, 23, 28,
       30, 32, 18, 5, 34, 4, 25, 12, 24, 13, 21, 38, 19, 33, 33, 16, 20,
       18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22,
       11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 12, 36,
       25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 34, 25, 26, 29, 14, 37, 23,
       12, 19, 19, 3, 2, 31, 30, 11, 2, 24, 19, 27, 22, 13, 6, 18, 20,
        6, 34, 33, 2, 37, 17, 30, 24, 2, 36, 9, 36, 19, 33, 35, 0, 4,
        1]

y_pred = [1, 10, 35, 7, 7, 29, 26, 3, 8, 23, 39, 11, 20, 4, 5, 23, 28,
       30, 32, 18, 5, 39, 4, 25, 0, 24, 13, 21, 38, 19, 33, 33, 16, 20,
       18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22,
       11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 30, 36,
       25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 4, 22, 26, 29, 14, 37, 23,
       12, 19, 19, 3, 25, 31, 30, 11, 25, 24, 19, 27, 22, 13, 6, 18, 20,
        6, 39, 33, 9, 37, 17, 30, 24, 9, 36, 39, 36, 19, 33, 35, 0, 4,
        1]

print(metrics.f1_score(y_test, y_pred, average='weighted'))

此代码将生成警告。

为什么只是有时?

该警告仅在第一次计算 F 分数时出现,因为大多数 Python 环境仅显示一次特定警告。但是,可以使用 warnings.filterwarnings('always') 更改此行为。

如何避免警告

要避免看到警告,您可以设置warnings.filterwarnings('ignore') 在导入 scikit-learn 之前或在计算 F-score 时显式指定您感兴趣的标签,如如下:

# Ignore warnings
warnings.filterwarnings('ignore')
metrics.f1_score(y_test, y_pred, average='weighted')

# Explicitly specify labels
unique_labels = np.unique(y_pred)
metrics.f1_score(y_test, y_pred, average='weighted', labels=unique_labels)

以上是为什么 Scikit-learn 的 F1-Score 会产生'UndefinedMetricWarning”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn