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

如何为多类数据集绘制指定类别的ROC曲线并调整阈值获取TP、FP率?

多分类场景下单类别ROC曲线绘制的阈值调整方法

首先需要明确:仅靠单一固定阈值生成的多分类混淆矩阵无法生成完整ROC曲线,你需要提前拿到模型对所有样本的类别1预测概率输出,再按照如下one-vs-all规则操作,即可得到多组TP、FP组合:

  • 第一步:样本标签二值化
    将所有样本的标签重新映射:真实类别为1的标记为正样本,其余所有类别的样本统一标记为负样本
  • 第二步:遍历阈值统计基础指标
    默认分类阈值通常为0.5,你可以在0~1区间内取任意数量的阈值t,每个阈值下执行如下判断和统计:
    • 判定规则:样本的类别1预测概率 ≥ t时判定为「类别1」,否则判定为「非类别1」
    • 每个阈值下统计4个核心值:
      1. TP(真阳性):真实为正样本、被判定为类别1的样本数
      2. FN(假阴性):真实为正样本、被判定为非类别1的样本数
      3. FP(假阳性):真实为负样本、被判定为类别1的样本数
      4. TN(真阴性):真实为负样本、被判定为非类别1的样本数
  • 第三步:计算ROC坐标点
    每个阈值下计算两个指标用于绘制曲线:
    • TPR(真阳性率)= TP / (TP + FN)
    • FPR(假阳性率)= FP / (FP + TN)
  • 第四步:生成ROC曲线
    将所有阈值对应的(FPR, TPR)坐标在二维平面描点,连接所有点即可得到类别1对应的one-vs-all ROC曲线

如果你手头已经有多个不同阈值下的多分类混淆矩阵,可以直接从混淆矩阵中提取对应数值,无需重新跑样本预测:

针对每个阈值对应的多分类混淆矩阵,定位类别1对应的行和列:
TP = 混淆矩阵中「真实为1、预测为1」的单元格数值
FN = 类别1对应行所有数值的和 - TP(所有真实为1被分到其他类的样本总数)
FP = 类别1对应列所有数值的和 - TP(所有真实为其他类被分到1的样本总数)
TN = 混淆矩阵总样本数 - TP - FN - FP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:06:04