由于ROC曲线面积比较难求得,所以判断模型好坏一般使用AUC曲线

关于AUC曲线的绘制,西瓜书上写得比较学术,不太能理解,假设有这么一个样本集:

假设预测样本为20个,预测为正类的概率已经进行了排序,得分递减,画图步骤为:

(1) 在所排序的样本最左边,画一条线即  无 | 1 2 3 4 5 …,线左边的认为是正类,右边认为是负类,可以算出,TP(实际为正,预测为正)=0,FN(实际为正,预测为负)=10,TN(实际为负,预测为负)=10,FP(实际为负,预测为正)=0,故而TPR=0,FPR=0

(2) 在第一个样本后面,画一条线即 1 | 2 3 4 …,线左边的认为是正类,右边认为是负类,可以算出,TP(实际为正,预测为正)=1,FN(实际为正,预测为负)=9,TN(实际为负,预测为负)=10,FP(实际为负,预测为正)=0,故而TPR=0.1,FPR=0

(3) 在第二个样本后面,画一条线即 1 2| 3 4 …,线左边的认为是正类,右边认为是负类,可以算出,TP(实际为正,预测为正)=2,FN(实际为正,预测为负)=8,TN(实际为负,预测为负)=10,FP(实际为负,预测为正)=0,故而TPR=0.2,FPR=0

(4) 在第三个样本后面,画一条线即 1 2 3| 4 5…,线左边的认为是正类,右边认为是负类,可以算出,TP(实际为正,预测为正)=2,FN(实际为正,预测为负)=8,TN(实际为负,预测为负)=10,FP(实际为负,预测为正)=1,故而TPR=0.2,FPR=0.1

... ...

依次例推:起点一定为(0,0),终点一定为(1,1),由此即可画出AUC曲线

但这样做比较繁琐,可以总结规律为:

按照预测为正类的概率值由大到小排序,首先起点一定是(0,0),然后使用上述划线法进行计算,每次碰到一个预测为正的样本,则在Y方向加一个Y步长,否则在X方向加一个X步长,其中X和Y的步长,计算方法为X: 负类样本个数分之1,Y:正类样本个数分之1,如果是降序排列,则是减一个对应方向的步长即可

代码部分:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontPropertiesdef plotROC(predStrengths,classLabels):font = FontProperties(fname = r"c:\windows\fonts\simsun.ttc",size=14)cur=(1.0,1.0)             #绘制光标位置ySum=0.0                  #用于计算AUCnumPosClas=np.sum(np.array(classLabels)==1.0)  #正类样本的个数yStep = 1/float(numPosClas)                    #Y轴步长xStep = 1/float(len(classLabels)-numPosClas)   #X轴步长
sortedIndicies = predStrengths.argsort()fig =plt.figure()fig().clf()ax=plt.figure()for inddex in sortedIndicies.tolist()[0]:if classLabels[index]==1.0delX=0; delY = yStep   #碰到一个正类,Y的步长减 1else:delX = xStep; delY=0   #碰到一个负类,X的步长减1ySum += cur[1]         #每次cur[1]都可能变化了       #高度累加ax.plot([cur[0],cur[0]-delX],[cur[1],cur[1]-delY],c = 'b')   #绘制ROCcur = (cur[0]-delX,cur[1]-delY)                         #更新绘制光标的位置ax.plot([0,1],[0,1],'b--')plt.title('ROC曲线',FontProperties =font)plt.xlabel('假正例率',FontProperties = font)plt.ylabel(('真正例率',FontProperties = font))ax.axis([0,1,0,1])print('AUC面积:',ySum*xStep)                         #计算AUCplt.show()

转载于:https://www.cnblogs.com/roscangjie/p/11173900.html

ROC与AUC曲线绘制相关推荐

  1. 机器学习:性能度量篇-Python利用鸢尾花数据绘制ROC和AUC曲线

    文章目录 前言 一.ROC与AUC 1.ROC 2.AUC 二.代码实现 总结 前言 内容接上一篇机器学习:性能度量篇-Python利用鸢尾花数据绘制P-R曲线_fanstuck的博客-CSDN博客_ ...

  2. 二分类及多分类ROC和PR曲线绘制

    目录 1.二分类曲线 1.1 二分类ROC曲线 1.2 二分类PR曲线 2.多分类曲线 2.1多分类ROC曲线 2.2 多分类PR曲线 前两天2022年第二届全国高校大数据竞赛已经落下帷幕,比赛中也用 ...

  3. roc与auc曲线的理解

    roc:专业术语称为"受试者工作特征"(Receiver Operating Characteristic)曲线:它是真正例与假正例比值:首先后面两字"正例"就 ...

  4. roc曲线和auc_roc和auc曲线的初学者指南

    roc曲线和auc 博客结构(Blog Structure) As can be seen in the title above, the purpose of this blog is to gai ...

  5. 模型评估指标_精准率、召回率、F1-score、ROC曲线、AUC曲线

    一.分类结果混淆矩阵 1.T.F.P.N辨析 P(Positive).N(Negative)针对的是预测值的结果. P表示对样本的预测结果为正例, N表示对样本的预测结果为反例. T(True).F( ...

  6. ROC曲线绘制原理即AUC的意义详解

    云走雾走走行程,救苦救难救灾星 有求必应,出古洞四海扬名,在深山修真养性 ROC曲线绘制原理即AUC意义详解 ROC曲线绘制原理 ROC曲线常常用来判定一个分类器的分类效果,想要探究ROC曲线的绘制原 ...

  7. 机器学习之支持向量机SVM之python实现ROC曲线绘制(二分类和多分类)

    目录 一.ROC曲线 二.TP.FP.TN.FN 三. python绘制ROC曲线(二分类) 1.思路 2.关键代码 3.完整代码 四. python绘制ROC曲线(多分类) 五.参考文献 一.ROC ...

  8. 分类性能度量指标:准确性(AC)、敏感性(SE)、特异性(SP)、F1评分、ROC曲线、PR(Precision-Recall)曲线、AUC曲线,混淆曲线

    一:比较容易理解的比喻 以糖尿病人的筛查为例.第一个钟形代表正常人,第二个钟形代表糖尿病人.理想中,如果正常人和糖尿病人的血糖范围完全没有重合就好了.这样我就把标准定在中间那个最低点.低于此点的,就是 ...

  9. 建模知识2: ROC、AUC、K-S曲线

    1.混淆矩阵(confusion matrix) 一个二分问题,即将实例分成正类(positive)或负类(negative).对一个二分问题来说,会出现四种情况.如果一个实例是正类并且也被预测成正类 ...

最新文章

  1. 荣耀手表magic2更新鸿蒙时间表,荣耀手表2更新百种运动模式 618期间到手价799元起...
  2. 用两个栈(C++)实现插入排序
  3. boost::graph模块实现一个只读隐式加权图的简单示例的测试程序
  4. 《教你10分钟制作3D网游》视频吐槽
  5. python基础开发环境_Python基础教程,第一讲,开发环境搭建
  6. Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题
  7. [转载] java中数组的反射的探究
  8. java导出excel弹出下载框_JavaWeb导出Excel文件并弹出下载框
  9. mysql 线上修改参数_9.10、mysql进程、状态在线修改参数重要知识
  10. 数据中心降低运营成本战略解密
  11. 红黑树时间复杂度证明(O(lgn))
  12. 黎曼猜想能用计算机算吗,关于黎曼猜想的计算机验证
  13. 最基本财务基础知识,财务知识基础
  14. Stream流的常用方法以及代码练习
  15. 手机端页面的自适应设计的开发思路
  16. 在python中一个复数的虚部用i表示_以3为实部4为虚部,Python复数的表达形式为___________或________。_学小易找答案...
  17. MicroERP数据初始化SQL脚本
  18. .net平台项目案例集锦
  19. 【netcore】 ASP.NET Core 中间件
  20. 速看常用工控通讯接口协议大全

热门文章

  1. matting系列论文笔记(一):Deep Image Matting
  2. 软件生存周期及开发模型
  3. 专业知识感觉什么都会,面试官一问却回答不上来怎么办?
  4. 如何修改华为S5720交换机密码
  5. java keystore如何使用_java KeyStore 使用
  6. 电脑/笔记本重装系统“我们无法创建新的分区,也找不到现有的分区”问题解决
  7. 《认知觉醒》:第一章 大脑——一切问题的起源
  8. CSS鼠标指针样式详解,鼠标经过变小手(链接类型指针)提示可点击
  9. 物联网控制技术课内实验-NUAA-matlab2020a安装以及考试碎碎念
  10. CDN内容分发服务好最后一公里