You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scikit-Learn分类报告为何显示支持度为0的样本?如何解决?

sklearn分类报告出现支持度为0的标签及标签缺失的原因与修复

原因分析

你遇到的情况是sklearn.metrics.classification_report的默认行为导致的:

  • 工具默认会收集真实标签(y_true)和预测标签(y_pred)中出现过的所有标签的并集来生成报告的标签列表。
  • 你的模型在第一个epoch训练不足,预测时输出了标签1、2、3(哪怕真实数据里没有这些标签),所以这些标签会被纳入报告,显示支持度为0(因为真实数据里没有对应的样本)。
  • 标签4既没出现在真实数据里,也没被模型预测出来,所以不会出现在报告里,这就造成了标签显示不一致的情况。

修复方案

根据你的需求,有两种常用的解决方式:

1. 强制显示所有任务标签(推荐)

显式指定labels参数,把任务包含的所有标签(0、1、2、3、4)都传进去,这样不管真实数据或预测结果里有没有这些标签,都会在报告中显示:

from sklearn.metrics import classification_report

# 假设y_true和y_pred是你的真实标签和预测结果
print(classification_report(
    y_true, 
    y_pred, 
    labels=[0, 1, 2, 3, 4],
    zero_division=0  # 处理无样本时的precision/recall计算,避免警告或异常
))

这样报告里会完整显示0-4所有标签,其中1、2、3、4的支持度都是0,同时可以通过zero_division参数控制无样本时的指标显示(设为0或1都可以,根据需求调整)。

2. 只显示真实数据中存在的标签

如果你只想报告真实数据里出现过的标签(也就是只显示0),可以通过labels参数传入真实标签的唯一值:

import numpy as np

print(classification_report(
    y_true, 
    y_pred, 
    labels=np.unique(y_true),
    zero_division=0
))

这样报告里只会显示标签0,不会出现1、2、3这些无真实样本的标签。

内容的提问来源于stack exchange,提问作者Sean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:00:57