【问题标题】:Is Scikit-Learn's classification report supposed to show samples with 0 support?Scikit-Learn 的分类报告是否应该显示支持 0 的样本?
【发布时间】:2022-10-04 16:31:34
【问题描述】:

我正在运行文本分类任务并使用sklearn.metrics.classification_report。我注意到在很多情况下也会显示支持为 0 的标签,但这是预期的行为吗?

举一个具体的例子,假设我手头的任务有五个标签01234。我想确保我的模型能够在标签0 上正确训练,因此我创建了一个仅包含这些标签的单独数据集。第一个 epoch 之后的分类报告如下所示:

              precision    recall  f1-score   support

           0     1.0000    0.8929    0.9434      9713
           1     0.0000    0.0000    0.0000         0
           2     0.0000    0.0000    0.0000         0
           3     0.0000    0.0000    0.0000         0

    accuracy                         0.8929      9713
   macro avg     0.2500    0.2232    0.2359      9713
weighted avg     1.0000    0.8929    0.9434      9713

据我所知(如果我错了,请纠正我),左栏中显示的标签是y_true中包含的标签。因此,报告不仅不应该显示123,而且如果行为应该是一致的,它也不应该显示4

我检查了我的数据并确保它只包含0,所以这不是数据问题,我还仔细检查以确保在调用函数时我没有交换y_truey_pred

有谁知道为什么会发生这种行为?有没有办法解决它?谢谢。

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

    左边的标签是预测的标签。换句话说,您的模型在理想情况下应该预测 0 的某些(约 11%)情况下仍然预测类别 1、2 和 3(但不是 4)。

    编辑:准确地说,classification_report()y_truey_pred 上运行sklearn.utils.multiclass.unique_labels()(除非您明确指定标签列表),这与本例中的预测标签相同。

    其余的只是包装precision_recall_fscore_support()The support is the number of occurrences of each class in y_true.

    【讨论】:

    • 谢谢。好像我当时误解了一般的功能。因此,支持 0 意味着尽管标签未包含在 y_true 中,但模型做出了该预测,对吧?
    猜你喜欢
    • 2020-02-14
    • 2015-03-27
    • 1970-01-01
    • 2015-03-24
    • 2017-06-29
    • 2014-03-28
    • 2016-09-26
    • 2022-10-20
    • 2021-03-12
    相关资源
    最近更新 更多