【评价指标】ROC曲线与AUC

news/2024/11/29 23:08:23/文章来源:https://www.cnblogs.com/DLShark/p/18577765

一、前置知识

真阳性(TPR):正样本被正确分类个数与所有正样本的总数的比值

\[TPR = \frac{TP}{TP+FN} \]

假阳性(FPR):负样本被错误分类个数与所有负样本的总数的比值

\[FPR=\frac{FN}{FN+TN} \]

​ 其中,TP表示正确分类的正样本,TN表示正确分类的负样本,FN表示错误分类的负样本,FN表示错误分类的负样本

二、ROC基本内容

[!tip]

在机器学习与深度学习模型中,模型输出阈值\(\tau\)的设置会直接影响到结果的判断

​ 在二分类中一般采用Sigmoid激活函数输出结果。如图所示,x轴表示最后模型的输出概率,y轴表示经过sigmoid的变换后的输出结果,对应的TPR、FPR如表示所示,可以发现不同阈值的结果不同。

image

TPR FPR
左图 0.5 1
右图 0.75 0.75

​ 不同阈值的设置会造成大量的参数和结果,为此,ROC曲线以FPR为x轴,TPR为y轴绘制二维图像,在ROC图上的特殊线:

  • y = 1:表示正样本全部判断正确,并且x值越小模型的效果越好;
  • x = 0:表示负样本全部没有误判,并且y值越大模型的效果越好;
  • y = x:表示TPR = FPR,(1,1)点表示正样本全部判断正确,负样本全部错判;

image

三、代码实现

def calculate_roc_acc(y, y_prop):y = np.array(y)y_prop = np.array(y_prop)sorted_indexs = np.argsort(-y_prop) # 默认从小到大将索引排序,所以从大到小需要负号y = y[sorted_indexs]y_prop = y_prop[sorted_indexs]posNum = sum(y)negNum = len(y) - posNum# 记录不同阈值下的TPR和FPRTPRS = [0]FPRS = [0]# 阈值初始化thresholds = y_prop[np.argsort(-y_prop)]for threshold in thresholds:TP = np.sum((y_prop >= threshold) & (y == 1))  # 预测为正且实际为正FP = np.sum((y_prop >= threshold) & (y == 0))  # 预测为正但实际为负TPRS.append(TP / posNum)FPRS.append(FP / negNum)AUC = 0for i in range(1, len(FPRS)):AUC += (FPRS[i] - FPRS[i - 1]) * (TPRS[i] + TPRS[i - 1]) / 2return FPRS, TPRS, AUC

四、可视化代码

def plot_roc_curve(FPR, TPR, auc):plt.rcParams["axes.linewidth"] = 1.8plt.rcParams["axes.labelsize"] = 12plt.rcParams["xtick.minor.visible"] = Trueplt.rcParams["ytick.minor.visible"] = Trueplt.rcParams["xtick.direction"] = "in"plt.rcParams["ytick.direction"] = "in"plt.rcParams["xtick.labelsize"] = 12plt.rcParams["ytick.labelsize"] = 12plt.rcParams["xtick.top"] = Falseplt.rcParams["ytick.right"] = False# plt.rcParams['font.sans-serif'] = ['SimHei']plt.figure(figsize=(6, 6))plt.plot(FPR, TPR, label=f"AUC = {auc:.2f}", color='blue')plt.plot([0, 1], [0, 1], 'r--')plt.title("ROC Curve")plt.xlabel("False Positive Rate")plt.ylabel("True Positive Rate")plt.legend(loc="lower right")plt.grid()plt.show()

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843724.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

overleaf中使用中文

用的是这个博客里面的方法三,很方便。 https://blog.csdn.net/m0_52037292/article/details/109768317\usepackage{CJKutf8} \usepackage{CJKutf8}\begin{document}\begin{CJK*}{UTF8}{gbsn} 数学、中英文皆可以混排。You can intersperse math, Chinese and English (Latin …

20222409 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 1.1 本周学习内容 本周学习了信息收集与渗透测试相关技术,主要包括Metasploit、nmap和Nessus的使用。Metasploit是渗透测试框架,能提供多种攻击模块,如远程代码执行、提权和后渗透功能(如键盘记录、文件操作等),可用于模拟攻击和漏洞利用; nmap被用于扫描目标…

gin, gorm快速入门

Gin Gin入门 gin的学习要点如何定义路由:包括参数路由、通配符路由 如何处理输入输出 如何使用middleware解决AOP问题在 Gin 里面,用 Engine 来监听一个端口,是一个逻辑上的服务器。 一个 Go 进程可以创建多个 Engine。 hello, world 使用步骤:在应用中引入 Gin 依赖:go g…

20222424 2021-2022-2 《网络与系统攻防技术》实验七实验报告

20222424 2021-2022-2 《网络与系统攻防技术》实验七实验报告 1.实验内容 1.1本周学习内容Web安全基础/前后端 SQL注入原理 XSS脚本攻击 CSRF漏洞1.2实验内容及要求 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有 (1)简单应用SET…

【探讨】批量操作以及多线程下保证事务的一致性

1 前言 假如给你一个场景,有一批1万或者10万的数据,让你插入到数据库中怎么做呢?我们这节来看看。 首先一点我们单纯的 一个个 INSERT 语句,我们就不试了,这一个个的肯定慢,我们这里统一用 INSERT INTO 表(字段1,字段2) VALUES(值1,值2),(值11,值22),(值111,值222);…

Windows mstsc 远程桌面链接 ubuntu 18.04 远程图形桌面

前言全局说明通常情况下,管理 Ubuntu 服务器都是用命令行界面,但某些时候,可能会用到图形界面。2204安装方法:https://www.cnblogs.com/wutou/p/18430133 命令行安装图形界面:https://www.cnblogs.com/wutou/p/18572907一、说明 环境: Ubuntu 18.04.6 LTS (Linux qt-vm 5…

[杂题]2024.9~2024.11 杂题总结

[杂题]2024.9~2024.11 杂题总结 题目做多了,不总结,和没做是一样的。 ARC061B 挺好的一道题。观察到三个不好做,我们想能否搞成一个牌堆去取。发现显然是可以的,我们只需要知道一个确定的取出来牌的编号序列,必然可以确定三者的牌堆分别是什么。 所以,问题转换成了:有多…

E. Photoshoot for Gorillas(Codeforces Round 966 (Div. 3))

https://codeforces.com/contest/2000/problem/E 题目描述 你非常喜欢屮大猩猩,于是你决定为它们组织一次拍摄活动。大猩猩生活在丛林中,丛林被表示为一个有 n 行 m 列的网格,有 w 个大猩猩同意参与拍摄,第 i 个大猩猩的身高ai .你希望将所有大猩猩放置在网格的单元格中,并…

windows版lammps的安装和计算

1.安装:详情见:https://mp.weixin.qq.com/s/xwx0c2ATNM0pphaHwDLkmQ 2.提交计算task的命令: mpiexec -np 4 lmp -in xxx.in #其中xxx.in表示in文件的名称,详情见 https://mp.weixin.qq.com/s/i6fa7xTKjlgSirPm0cj_4w 3.将MS的car和mdf文件导出data文件的方法:(命令…

第三十八讲:自增主键为什么不是连续的

你现在可以不懂,但以后面试的时候,必须要知道的三个关于自增主键的点 第一:唯一键冲突和事务回滚是导致自增主键不连续的两种大原因,此外批量插入数据的语句,MySQL 批量申请自增 id 的策略也是一个隐藏原因 第二:MySQL设计中不允许自增值回退的原因,主要是为了提升性能还…

NOIP 2024 退役记

人生有梦,各自精彩。Day -??? 摆疯了,啥也没复习,猫国建设者真好玩。 Day 0 昨晚回家结果摆到两点,感觉要在 noip 考场上睡着了/shui。早上没起来,迟到了/kk。 上午没怎么复习,摆摆摆,哎哎哎。 中午疯狂看小说,败犬太好看辣! 下午出发淄博。路上一直在睡觉,后悔没…

MySQL底层概述—4.InnoDB数据文件

大纲 1.表空间文件结构 (1)表空间Tablesapce (2)段Segment (3)区Extend (4)页Page (5)行Row 2.Page结构 (1)页结构各部分说明 (2)页结构整体划分 3.行记录格式 (1)行格式分类 (2)COMPACT行记录格式 (3)Compact中的行溢出机制 (4)其他行格式记录1.表空间文件结构 (1)表空间Table…