当前位置: 首页 > news >正文

机器学习指标解析:AUC与KS值

import numpy as np from sklearn.metrics import confusion_matrix y_pred = [0, 1, 0, 1] # 模型预测结果 y_true = [0, 1, 1, 0] # 真实标签 print('混淆矩阵:\n', confusion_matrix(y_true, y_pred)) # 输出: # [[1 1] # [1 1]] ## accuracy from sklearn.metrics import accuracy_score y_pred = [0, 1, 0, 1] y_true = [0, 1, 1, 0] print('ACC:', accuracy_score(y_true, y_pred)) # 输出 ACC: 0.5 ## Precision,Recall,F1-score from sklearn import metrics y_pred = [0, 1, 0, 1] y_true = [0, 1, 1, 0] print('Precision', metrics.precision_score(y_true, y_pred)) print('Recall', metrics.recall_score(y_true, y_pred)) print('F1-score:', metrics.f1_score(y_true, y_pred)) # 输出: # Precision 0.5 # Recall 0.5 # F1-score: 0.5

简单案例分析:

  • 真实标签y_true = [0, 1, 1, 0]:我们把0看作 “狗(负类)”,1看作 “猫(正类)”,所以真实样本是:[狗, 猫, 猫, 狗]
  • 预测结果y_pred = [0, 1, 0, 1]:模型的判断是:[狗, 猫, 狗, 猫]

AUC 计算代码:

import numpy as np from sklearn.metrics import roc_auc_score y_true = np.array([0, 0, 1, 1]) # 真实标签 y_scores = np.array([0.1, 0.4, 0.35, 0.8]) # 模型预测的置信度分数 print('AUC socre:', roc_auc_score(y_true, y_scores)) # 输出:AUC socre: 0.75
  • y_true = [0, 0, 1, 1]:真实标签,我们把0看作狗(负类)1看作猫(正类)。所以这里有 2 只狗、2 只猫。
  • y_scores = [0.1, 0.4, 0.35, 0.8]:模型给每张图打的 “是猫的置信度”,分数越高,模型越认为它是猫。

AUC 的全称是ROC 曲线下的面积,它的本质含义是:

随机抽一只猫和一只狗,模型给猫打的置信度分数,比给狗打的分数高的概率。

用这个例子验证一下:

  • 所有「猫 vs 狗」的组合有2×2=4种:
    1. 猫 (0.8) vs 狗 (0.4):猫分数更高 ✅
    2. 猫 (0.8) vs 狗 (0.1):猫分数更高 ✅
    3. 猫 (0.35) vs 狗 (0.4):猫分数更低 ❌
    4. 猫 (0.35) vs 狗 (0.1):猫分数更高 ✅
  • 猫分数更高的情况有 3 种,所以 AUC = 3/4 = 0.75

怎么理解 AUC 数值?

  • AUC 越接近 1,说明模型越能把猫和狗区分开(几乎所有猫的分数都比狗高)。
  • AUC=0.5 时,模型和 “瞎猜” 没区别,猫和狗的分数是随机的。
  • AUC<0.5 时,模型反而把猫和狗搞反了,相当于 “反向预测”

二、第二部分:KS 值 计算代码

from sklearn.metrics import roc_curve y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1] y_true = [0, 1, 1, 0, 1, 0, 1, 1, 1, 1] # 计算ROC曲线的FPR和TPR FPR, TPR, thresholds = roc_curve(y_true, y_pred) # 计算KS值:FPR和TPR之间的最大差值 KS = abs(FPR - TPR).max() print('KS值: ', KS) # 输出:KS值: 0.5238095238095237
  • TPR(真正例率):所有猫里,被模型找出来的比例(召回率)
  • FPR(假正例率):所有狗里,被误判成猫的比例

roc_curve函数会帮我们计算不同阈值下的FPRTPR,得到一组数据点。

2. KS 值 到底算的是什么?

KS 值的全称是Kolmogorov-Smirnov 值,它的定义是:

在所有可能的阈值下,TPR 和 FPR 之间的最大差值。

  • 我们希望模型找猫的能力(TPR)尽量高,误判狗的概率(FPR)尽量低。
  • 两者的差值TPR - FPR越大,说明模型区分猫和狗的能力越强。
  • KS 值就是这个差值的最大值,代表模型区分正负样本的 “最强区分度”。
http://www.jsqmd.com/news/694821/

相关文章:

  • 2026年户外拓展训练正规AI搜索优化服务商选型指南与实力分析 - 商业小白条
  • 从‘彩虹’到‘拖影’:给网络工程师讲明白光纤色散与高速网络故障排查
  • 保姆级教程:手把手教你用AST解混淆+日志插桩搞定某红书X-s签名(附完整代码)
  • TensorBoard可视化进阶:一条命令同时对比YOLOv6等模型的训练曲线(附避坑指南)
  • N_m3u8DL-RE:如何高效下载加密流媒体内容
  • 20260424紫题训练 - Link
  • LinkSwift:八大主流网盘直链下载解决方案的技术实践指南
  • 【ZYNQ进阶】AXI HP口实战:从时序解析到高效DMA引擎设计
  • 智慧树刷课插件终极指南:5分钟实现视频自动化学习
  • P3732 [HAOI2017] 供给侧改革 - Link
  • 2026年4月维普降AI全量横评:嘎嘎降AI和率零领先
  • 企业安全自查手册:利用开源工具V2.0对你的泛微、用友、致远OA做一次深度漏洞扫描
  • 2026年B端行业GEO优化服务商市场研究:推荐3家具备成熟服务能力的专业服务商 - 商业小白条
  • Day07-MySQL
  • 计算机毕业设计:Python量化交易管理平台 Django框架 requests爬虫 数据分析 可视化 大数据 大模型(建议收藏)✅
  • 细粒度并行计算架构Squire的设计与优化实践
  • AI数学基础:线性代数、概率论与微积分实战解析
  • Nucleus Co-Op技术解密:单机游戏分屏多人的创新突破与完整实现指南
  • 别再死记硬背SVPWM公式了!用STM32的定时器PWM模式2,手把手教你从Simulink仿真到代码落地
  • 3步轻松配置TTS-Vue桌面语音合成工具完整指南
  • 创建 ext4/xfs 文件系统供容器挂载
  • 别只拿JTAG下载程序了!手把手教你用边界扫描给电路板做‘体检’
  • 别再混淆了!一张图讲清EsKF、IEKF和EsIKF在VIO/SLAM中的区别与联系
  • 如何快速获取Hadoop Windows工具包:winutils完整指南 [特殊字符]
  • 题解:AtCoder AT_awc0003_b Line of Handshakes
  • STM32 DAC输出波形实战避坑:为什么你的正弦波有毛刺?如何优化三角波线性度?
  • 维普AI率工具哪个好?2026年4月8款产品深度对比
  • DNSLog实战指南:三大主流平台特性解析与场景应用
  • 别再死记DH参数了!用MATLAB Robotic Toolbox快速验证你的机器人模型(附工作空间计算代码)
  • Linux下4G/5G模块实战:从AT指令到NetworkManager,手把手搞定蜂窝网络连接