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

NER任务中sklearn分类报告出现0支持度类别的原因及隐藏方案

关于sklearn classification_report出现0支持度类别的问题解答

为什么会出现无真实样本的类别

sklearn的classification_report默认会合并真实标签y_true和预测结果y_pred中的所有唯一值作为待统计的类别集合。只要某类在预测结果中出现过,哪怕真实标签里完全没有对应样本(即support为0),也会被纳入报告展示。你遇到的情况就是NER模型预测出了标注集中不存在的类别0和3,因此这两个类别会出现在最终的分类报告里。

如何隐藏0支持度的类别

只需要在调用classification_report时主动指定labels参数,传入需要统计的有效类别列表即可,有两种常用实现方式:

  • 手动指定有效类别:如果你明确知道真实标签包含的所有类别,可以直接传入列表
from sklearn.metrics import classification_report
# 此处传入你的真实标签包含的类别
valid_labels = [4,5,6,7,8,9,10,11]
report = classification_report(y_true, y_pred, labels=valid_labels)
print(report)
  • 自动提取有效类别:直接从真实标签中提取唯一值作为有效类别,避免手动枚举出错
# 若y_true是numpy数组或pandas序列,可用以下方式提取
valid_labels = sorted(set(y_true))
report = classification_report(y_true, y_pred, labels=valid_labels)

对macro F1分数的影响

macro F1的计算逻辑是对所有纳入统计类别的F1分数取算术平均,0支持度类别的F1分数默认是0,会直接拉低整体macro F1的结果。你给出的报告中原始macro F1仅为0.73,排除两个0支持度类别后,剩余8个类别的平均F1约为0.91,和加权平均的结果偏差会大幅缩小。计算macro类指标时必须排除无真实样本的类别,否则得到的结果不具备参考意义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:06:04