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

Scikit-learn的accuracy_score计算总体准确率还是平均准确率?

多分类任务中类别级准确率与总体准确率的区别

问题场景

针对3类癌症样本进行病情预测时,自定义计算得到了每类的灵敏度、特异性和准确率数组,而使用Scikit-learn的accuracy_score得到的总体准确率与自定义结果的均值差异明显,需明确二者区别。

自定义ACC的计算逻辑

自定义代码中得到的ACC是类别级准确率,针对每个类别单独计算:

ACC = (TP+TN)/(TP+FP+FN+TN)

其中:

  • TP:当前类别被正确预测为该类的样本数
  • TN:所有非当前类别样本中,被正确预测为非当前类的样本数
  • 分母为总样本数
    这个指标反映的是模型对单个类别样本+其他所有类别样本的综合分类正确性,每个类别对应一个准确率值。

sklearn accuracy_score的计算逻辑

accuracy_score给出的是总体准确率,计算的是整个数据集上所有被正确分类的样本占比:

accuracy = accuracy_score(y_test,pred_y)

本质是混淆矩阵中所有对角线元素(所有类别的TP之和)除以总样本数,公式为:

总体准确率 = (所有类别的TP之和) / 总样本数

它反映的是模型在全局范围内的整体分类表现。

二者差异的核心原因

  1. 计算维度不同:类别级准确率是针对单个类别计算,每个结果对应一类的分类表现;总体准确率是全局统计,反映所有样本的整体正确比例。
  2. 样本权重影响:当数据集存在类别不平衡时,差异会被放大。比如某类样本占比极高,总体准确率会偏向该类的分类表现,而类别级准确率的均值可能受样本量少的类别影响,导致二者差距显著(极端情况下可达20%)。

验证方式

若将自定义的类别级ACC按各类样本数量加权平均,结果会与accuracy_score的输出一致:
假设三类样本数量分别为n1、n2、n3,则:

加权平均准确率 = (ACC[0]*n1 + ACC[1]*n2 + ACC[2]*n3) / (n1+n2+n3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:35:26