1.原理及介绍

很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与
一个分类阈值(threshold) 进行比较,若大于阈值则分为正类,否则为反类。例
如,神经网络在一般情形下是对每个测试样本预测出一个 [0.0 ,1. 0] 之间的实值,
然后将这个值与 0.5 进行比较,大于 0.5 则判为正例,否则为反例。这个实值或
概率预测结果的好坏,直接决定了学习器的泛化能力。实际上根据这个实值或
概率预测结果,我们可将测试样本进行排序,“最可能"是正例的排在最前面,
“最不可能"是正例的排在最后面。这样,分类过程就相当于在这个排序中以
某个"截断点” (cut point) 将样本分为两部分,前一部分判作正例,后一部分则
判作反例。ROC 曲线则是从这个角度出发来研究学习器泛化性能的有力工具。
ROC 曲线的纵轴是"真正例率” (True Positive Rate ,简称 TPR) ,横轴是"假正例率" (False Positive Rate ,简称 FPR) 。


一个学习器的 ROC 曲线被另一个学习器的曲线完全"包住", 则可断言后者的性能优于前者;若两个学习ROC 曲线发生交叉,则难以一般性地断言两者孰优孰坏此时如果一定要进行比较,则较为合理的判据是比较 ROC 线下 的面积,即 (Area Under
ROC Curve) 。

2.python代码实现

'''
现实任务中通常是利用有限个测试样例来绘制 ROC ,此时仅能获得有
限个(真正例率,假正例 )坐标对,无法产生图 的光滑 ROC 曲线, 只能
绘制出所示的近似 ROC 曲线.绘图过程如下:
给定 m+ 个正例和个反例,根据学习器预测结果对样例进排序,然后把分类阔值设最大,
即把所样例均预测为反例,此时真正例率和假正例率均为 坐标
标记一个点然后,将分类阈值依次设为每个样例的预测值,即依次将每个样例
划分为正例.设前一个标记点坐标为(x,y) ,若为真正例,则对应标记点的
坐标为 (X ,y+(1/m+)) ;当前若为假正例,则对应标记点的坐标为 (X+1/m- ,y) ,
然后用线段连接相邻点即ROC曲线
'''
import matplotlib.pyplot as pltlist=[0.8,0.9,0.2,0.1,0.4,0.6,0.7,0.3,0.8,0.25]
tf_list=[1,1,0,0,0,0,1,0,1,0]
#给定一个分类器打分的列表,给定真实的正反例,4个正例(1,2,7,9),6个反例(3,4,5,6,8,10)
#排序
#thresh=[1]
#thresh1=thresh+list
#print(thresh1)
m_true=0
m_flase=0
for i in range(len(tf_list)):if tf_list[i] == 1:  # 真正例m_true=m_true+1else:m_flase=m_flase+1
print(m_flase,m_true)        #6,4
x=[]
y=[]
xi=0
yi=0
for i in range(len(list)):if tf_list[i]==0:#假正例xi=xi+1/m_flaseyi=yix.append(xi)y.append(yi)else:#真正例xi=xiyi=yi+1/m_truex.append(xi)y.append(yi)
print(x,y)plt.plot(x, y)plt.xlabel('FPR')
plt.ylabel('TPR')
plt.title('ROC_picture')
plt.show()###显示
AUC=0
for i in range(len(x)-1):AUC=AUC+(x[i+1]-x[i])*(y[i]+y[i+1])
auc=0.5*AUC
print(auc)


由于分类样本较少因此曲线不是很规范,具体的分类器打分,以及真正的分类器类别,需要根据实际情况去判断。

参考:周志华 机器学习

python绘制ROC曲线图,并计算面积相关推荐

  1. R语言绘制ROC曲线图

    受试者工作特征曲线(ROC曲线),最初作为一种分析方法在二战时用于评价雷达性能(鉴别敌方,友方以及噪音),目前广泛应用于医学诊断.生物信息学.数据挖掘和机器学习等研究中. ROC曲线可用于评价生物标记 ...

  2. 基于python绘制ROC曲线

    基于python绘制ROC曲线,直接附代码: from sklearn.metrics import roc_curve, auc from sklearn.model_selection impor ...

  3. MATLAB绘制ROC曲线并计算AUC值

    最近需要比较不同CNN网络的分类效果,用到了Auc值,所以学习了下用MATLAB绘制ROC曲线并计算Auc值的代码,总结如下. 1. 子函数代码: % 计算AUC值,同时绘制ROC曲线 % 二值分类, ...

  4. R语言构建logistic回归模型并评估模型:模型预测结果抽样、可视化模型分类预测的概率分布情况、使用WVPlots包绘制ROC曲线并计算AUC值

    R语言构建logistic回归模型并评估模型:模型预测结果抽样.可视化模型分类预测的概率分布情况.使用WVPlots包绘制ROC曲线并计算AUC值 目录

  5. python画曲线图-利用python绘制数据曲线图的实现

    "在举国上下万众一心.众志成城做好新冠肺炎疫情防控工作的特殊时刻,我们不能亲临主战场,但我们能坚持在大战中坚定信心.不负韶华." 1.爬取新闻保存为json文件,并将绘图所需数据保 ...

  6. python:Sklearn SVM使用留一法时如何绘制ROC曲线与计算AUC

    在前面的一篇文章我们给出了使用Sklearn 中的SVM进行分类时如何使用留一法来进行分类. python基于sklearn的SVM和留一法(LOOCV)进行二分类 如何在使用留一法时绘制ROC曲线和 ...

  7. python 绘制ROC曲线

    简述   机器学习很多是为测试样本产生一个预测值,然后将这个预测值与阈值进行对比,若大于阈值则分为正类,否则分为反类.这个预测值的好坏,直接决定了学习器泛化能力.根据这个预测值,我们可以对测试样本进行 ...

  8. python绘制三维曲线图_机器学习的绘图库有哪些?如何运用python绘制机器学习常见曲线?...

    专栏引荐 绘图的变量 单变量 查看单变量最方便的无疑是displot()函数,默许绘制一个直方图,并你核密度估计(KDE) sns.set(color_codes=True) np.random.se ...

  9. python 绘制函数曲线图

    在学习机器学习的时候,想绘制一个函数的图像,直观地看一下其结果集的区间,此时想到了 python ! 因为我之间已经安装好了关于机器学习的一些 python 库:与数学计算相关的库(numpy 等): ...

  10. python绘制pr曲线图_利用Python中的numpy包实现PR曲线和ROC曲线的计算!

    闲来无事,边理解PR曲线和ROC曲线,边写了一下计算两个指标的代码.在python环境下,sklearn里有现成的函数计算ROC曲线坐标点,这里为了深入理解这两个指标,写代码的时候只用到numpy包. ...

最新文章

  1. 【原创】C# 递归获取指定目录的子目录及其所有文件
  2. @@identity、scope_identity()、IDENT_CURRENT('tablename')函数的区别
  3. CPU也支持AI加速,英特尔发布第3代至强处理器,推理速度提升80%,阿里腾讯云都在用...
  4. IPMI与iDrac的区别
  5. vs2010安装AnkhSVN,但是不起作用解决方法
  6. 来自Riot 的一份游戏美术教程(二):概念图
  7. mt6735通用recovery_山寨4G V8主板MT6735线刷机包
  8. Intellij idea添加单元测试工具
  9. 改变TFS本地映射路径.
  10. java关键字只static
  11. 《Unix编程艺术》chm 电子书下载
  12. 锦鱼课堂:跪着赚快钱,一年20W你愿意吗?
  13. sicp in python 资源
  14. c语言编程的难点,c语言编程的难点
  15. 物流中心基建之:消防系统和暖通设计
  16. 使用markdown写出Leaky ReLU的计算公式
  17. 40个重要的HTML5面试题及答案
  18. 春招艰难?给你几条应届生的求职建议!
  19. 还在调API写所谓的AI“女友”,唠了唠了,教你基于python咱们“new”一个(深度学习)
  20. 海思3559万能平台搭建:OSD功能的优化

热门文章

  1. 陈省身文集53——大范围微分几何若干新观点
  2. 基于STM32的多功能MP3设计 毕业设计(论文)文献综述
  3. 大数据开发都需要什么技术?
  4. 超越之MongDB系列教程(六) MongDB的查询
  5. 带网口插卡4G DTU是什么?RS485/RS232转以太网串口服务器软件怎么实现?
  6. 去除面部黑色素小妙招_去除脸部黑色素7个小方法
  7. python图像处理之一 - Pillow的基本用法
  8. 5种2D Attention整理(Non-Local、Criss-Cross、SE、CBAM、Dual-Attention)
  9. 新手学编程,是学c还是java呢?
  10. html盒子边框怎么颜色渐变,css边框颜色渐变