检测判别效能ROC曲线与AUC分析器|SPC实战工具
这个工具解决什么问题
很多团队靠「准确率」评价检测系统,而类别不均衡时准确率会被多数类刷得很高, 完全掩盖真实判别力。本工具用 ROC 曲线与 AUC 给出不受阈值与类别比例影响的 固有判别能力,并对比两种检测方法(换设备、换算法、换判据)谁真的更强。 与「AOI 阈值代价权衡」的分工是:那个回答「阈值定多少最省钱」, 本工具回答「这套检测系统的能力上限有多高、值不值得换」。
输入数据格式
数据文件 roc_scores.csv,列顺序为:样品号、真实标签(1缺陷/0正常)、方法A评分、方法B评分。
示例首行:S0001,1,2.04,1.418
示例输出(真实运行结果节选)
==============================================================================
检测判别效能 ROC 曲线与 AUC 分析报告
==============================================================================
一、样本与判读口径
样本 450 件:真实缺陷 150 件、真实正常 300 件。
两方法均输出连续评分,评分越高越可疑;判定规则为「评分 ≥ 阈值 判缺陷」。
ROC 曲线 = 遍历所有阈值得到的(假阳性率 FPR, 真阳性率 TPR)轨迹;
AUC = 曲线下面积,等于「随机取一个缺陷样品与一个正常样品,前者评分更高的概率」。
二、ROC 关键点(方法A,节选)
阈值 灵敏度TPR 1-特异度FPR 约登指数J
--------------------------------------------------
inf 0.0% 0.0% 0.000
2.34 16.7% 0.3% 0.163
1.98 30.0% 2.3% 0.277
1.69 44.0% 4.3% 0.397
1.44 54.0% 8.3% 0.457
1.27 61.3% 13.3% 0.480
1.05 68.7% 18.3% 0.503
0.86 74.7% 24.3% 0.503
0.66 80.7% 30.0% 0.507
0.49 86.7% 37.0% 0.497
0.32 91.3% 44.0% 0.473
0.13 95.3% 50.7% 0.447
-0.13 98.0% 59.3% 0.387
三、判别效能
一句话
先判清「检测手段本身的判别能力有多强」,再谈把阈值定在哪里。
运行环境与快速开始
纯 Python 标准库,零第三方依赖,Python 3.8+ 开箱即跑。
python roc_auc_analyzer.py
输入数据格式(换成你的数据即可)
· roc_scores.csv:样品号、真实标签(1 缺陷 / 0 正常)、方法A评分、方法B评分。 评分只需单调可比(分数越高越可疑),不要求固定量纲。 · 脚本顶部常量区:样本量、当前在用判定阈值、自助法次数。
输出说明
ROC 关键点表、两方法 AUC 与等级判读、方法A 最优截断点(约登指数)及其 灵敏度/特异度/PPV/NPV/似然比、与当前阈值的对比、AUC 差异的自助法显著性检验。
算法口径(关键公式)
· TPR = TP/(TP+FN),FPR = FP/(FP+TN) · AUC 用梯形法对 ROC 曲线积分;等价于随机取一个缺陷品与一个正常品,前者评分更高的概率 · 约登指数 J = TPR − FPR,取 J 最大的截断点 · AUC 差值的置信区间与 p 值由配对自助法(2000 次分层重抽样)给出
判定标准说明
AUC 经验判读:0.5 无判别力 / 0.7 可接受 / 0.8 良好 / 0.9 优秀。 差异显著性用自助法而非正态近似,因为 AUC 的方差在极端值附近不满足正态假设。
常见问题
· 样本要多少? 建议缺陷类至少 100 件;样本太少时 AUC 的置信区间会很宽。 · 两方法 AUC 差不多怎么办? 优先选成本低、节拍快的那个,把精力放在截断点取舍上。 · 报告能导出吗? 每次运行自动生成 示例输出报告.txt。 · AUC 高就一定好用吗? 还要看应用场景允许的误报水平,AUC 只是能力上限。
可调参数与计算口径
脚本顶部集中了主要阈值与常量:CSV_PATH=os.path.join(HERE, "roc_scores.csv")、RPT_PATH=os.path.join(HERE, "示例输出报告.txt")、SEED=20261005。改完直接重跑即可,不必改动计算逻辑。
会生成哪些文件
运行后除控制台输出外,还会生成:roc_scores.csv、示例输出报告.txt。
脚本里的主要处理步骤
gen_data():生成两方法评分:A 判别力更强,且两者误差相关(同一片受共同因素影响)。roc_points():返回 [(fpr, tpr, 阈值)],按分数降序扫描全部唯一阈值。perf():在给定阈值下算混淆矩阵与派生指标(分数 ≥ th 判为缺陷)。
以上步骤在脚本中是分开的函数,可以单独调用或按需替换其中一段,不必整体重写。
工具中出现的字段与提示
- 生成两方法评分:A 判别力更强,且两者误差相关(同一片受共同因素影响)。
- 真实标签(1缺陷/0正常)
- 方法A评分
- 方法B评分
- 返回 [(fpr, tpr, 阈值)],按分数降序扫描全部唯一阈值。
- 在给定阈值下算混淆矩阵与派生指标(分数 ≥ th 判为缺陷)。
- 检测判别效能 ROC 曲线与 AUC 分析报告
- 一、样本与判读口径
- 样本 %d 件:真实缺陷 %d 件、真实正常 %d 件。
- 两方法均输出连续评分,评分越高越可疑;判定规则为「评分 ≥ 阈值 判缺陷」。
- ROC 曲线 = 遍历所有阈值得到的(假阳性率 FPR, 真阳性率 TPR)轨迹;
- 二、ROC 关键点(方法A,节选)
- 阈值 灵敏度TPR 1-特异度FPR 约登指数J
- 三、判别效能总览
- 方法A AUC = %.4f
- 方法B AUC = %.4f
- 方法A 属「%s」,方法B 属「%s」。
- 四、方法A 的最优截断点(约登指数最大)
其余字段以界面与示例报告为准。
下载与文件清单
压缩包内包含:主程序脚本、示例数据文件、示例输出报告、中文说明文档,以及同主题 AI 提示词一套。解压后按说明运行即可,示例数据可直接试跑。
主程序文件:roc_auc_analyzer.py。
下载 检测判别效能ROC曲线与AUC分析器 工具包(zip)
本站工具免费下载,无需注册。工具为 Python 脚本,Python 3.8 及以上环境可直接运行,核心功能尽量不依赖第三方库。
常见问题
输入数据要准备成什么样?
按 示例首行中的列顺序准备即可,共 4 列:样品号、真实标签(1缺陷/0正常)、方法A评分、方法B评分。列为空或格式不符时结果会失真,建议先用示例数据试跑一遍。
阈值可以改成我们自己的标准吗?
可以,脚本顶部已把主要阈值与常量集中声明,按自己产线的标准修改后重跑即可,不需要改计算逻辑。
附赠的提示词怎么用?
把提示词与自己的数据一起交给大模型,可以让它按同一套口径帮你改写分析流程或扩展报告字段。
示例数据能直接跑吗?
可以。示例数据与主程序在同一压缩包内,解压后直接运行即可看到完整输出,确认无误再替换成自己的台账。
同分类的其它工具
分类归属:SPC与质量分析工具包;完整清单在 工具资源包下载页。





