ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真正率(也就是灵敏度)(True Positive Rate,TPR)为纵坐标,假正率(1-特效性)(False Positive Rate,FPR)为横坐标绘制的曲线。通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,从而可以绘制ROC曲线。

纵坐标:真正率(True Positive Rate , TPR)或灵敏度(sensitivity)

TPR = TP /(TP + FN) (正样本预测结果数 / 正样本实际数)

横坐标:假正率(False Positive Rate , FPR)

FPR = FP /(FP + TN) (被预测为正的负样本结果数 /负样本实际数)

利用sklearn.metrics.roc_curve可以计算ROC曲线

from sklearn.metrics import roc_curve, aucy_true = [0, 1, 1]
y_score = [0.1, 0.8, 0.7]fpr, tpr, thresholds = roc_curve(y_true, y_score)
print(fpr, tpr, thresholds)
"""
[0. 0. 0. 1.]
[0.  0.5 1.  1. ]
[1.8 0.8 0.7 0.1]
"""

其中y_true是真实标签,y_score是预测概率,fpr是假正率,tpr是真正率,thresholds是阈值(thresholds[0]=max(y_score)+1=1.8)。thresholds是y_score去重复元素后加上1.8所以一共4个元素。

在这个例子中,正样本实际数(TP + FN)=2,负样本实际数(FP + TN)=1

  • 当index=0,thresholds[0]=1.8,大于等于1.8的预测为正样本,小于1.8的预测为负样本,此时预测标签为[0,0,0],此时TP=0,FP=0,fpr=0,tpr=0
  • 当index=1,thresholds[1]=0.8,大于等于0.8的预测为正样本,小于0.8的预测为负样本,此时预测标签为[0,1,0],此时TP=1,FP=0,fpr=0,tpr=0.5
  • 当index=2,thresholds[1]=0.7,大于等于0.7的预测为正样本,小于0.7的预测为负样本,此时预测标签为[0,1,1],此时TP=2,FP=0,fpr=0,tpr=1
  • 当index=3,thresholds[1]=0.1,大于等于0.1的预测为正样本,小于0.1的预测为负样本,此时预测标签为[1,1,1],此时TP=2,FP=1,fpr=1,tpr=1

计算出ROC曲线后,可以利用sklearn.metrics.auc计算AUC:

from sklearn.metrics import roc_curve, aucy_true = [0, 1, 1]
y_score = [0.1, 0.8, 0.7]fpr, tpr, thresholds = roc_curve(y_true, y_score)
print(auc(fpr, tpr))

python计算ROC曲线和面积AUC相关推荐

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

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

  2. python 绘制ROC曲线

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

  3. ROC曲线及如何计算AUC

    AUC的全名是Area Under Curve,就是ROC曲线下的面积.因此,在介绍AUC之前,先介绍下ROC. ROC ROC的全称是"受试者工作特征"(Receiver  Op ...

  4. 基于python绘制ROC曲线

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

  5. Python计算圆的周长面积和球的表面积和体积

    Python计算圆的周长面积和球的表面积和体积 import math r=float(input("请输入半径:")) circumference=2*math.pi*r are ...

  6. python画roc曲线_使用Python画ROC曲线以及AUC值

    AUC介绍 AUC (Area Under Curve)是机器学习二分类模型中非常常用的评估指标,相比于 F1-Score 对项目的不平衡有更大的容忍性,目前常见的机器学习库中(比如 scikit-l ...

  7. R语言实战 input+结果——ROC曲线的绘制 auc 时量下曲线面积

    1.数据处理 第一步当然得处理一下数据.默认的Iris数据集有三类鸢尾花,我目前的理解是只有二分类才画的出ROC曲线,所以才去一定的手段处理一下数据: 输入 # 数据准备 iris2 <- ir ...

  8. python画roc曲线需要什么数据,Python ROC曲线绘制

    一.混淆矩阵 分类问题中,不管建模人员使用什么模型都难以到达100%的预测准确率,所以人们普遍使用分类错误率来衡量一个模型的优劣.但是在实际生产过程中分类问题经常存在样本不均衡问题,所以仅仅使用错误率 ...

  9. python的roc曲线与阈值_ROC曲线-阈值评价标准

    ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性 ...

  10. python 画roc曲线

    这个直接画: from sklearn import metrics import numpy as np import matplotlib.pyplot as pltplt.figure(0).c ...

最新文章

  1. R语言gc函数垃圾回收实战
  2. LNMP安装常见问题集锦(一)
  3. 【数据结构-排序】4.图解归并排序和基数排序
  4. Angular Jasmine 里一些常用概念学习笔记 - describe, it, beforeEach的用法
  5. python数据结构剑指offer-从尾到头打印链表
  6. 页面校验请求MmEwMD(转载)
  7. bfs (宽度搜素)
  8. h5带mysql数据库的留言板_【mysql】用PHP写留言板,有回复功能,要写入数据库。...
  9. 软件项目管理案例教程 第4版 课后习题答案
  10. css如何修改行内样式
  11. 彩灯控制器课程设计vhdl_EDA课程设计彩灯控制器
  12. 什么是软件测试?软件测试的目的、意义是什么? 软件测试的流程是什么?
  13. sonic 架构学习
  14. vite首次打开界面加载慢问题解决
  15. 哈工程转专业计算机,2021年哈尔滨工程大学大一新生转专业及入学考试相关规定...
  16. java获取虾米数据_json获取属性值的方式
  17. VC++QQ群,刚刚建立,欢迎加入,共同进步
  18. GSMA MWC19巴塞罗那圆满落下帷幕
  19. ts文件编译与运行,vscode自动编译
  20. 大数据工资这么高,零基础可以学习吗?

热门文章

  1. opencv旋转矩形定义以及求交叉面积
  2. 选择合适的电阻型分压器
  3. 百度磁盘搜索和git、ssh的试用
  4. 电线 电流 和 断路器选择
  5. 目标检测算法——小目标检测相关数据集(附下载链接)
  6. 电脑图片格式怎么批量转换jpg?几个小妙招轻松转换
  7. Sass Module 介绍
  8. 国产计算机存储,全国产化存储AXD嵌入式存储芯片在全国产化计算机适配应用AXD安信达-国内领先的自主可控存储提供商...
  9. 872. 叶子相似的树 / 剑指 Offer 33. 二叉搜索树的后序遍历序列 / 剑指 Offer 34. 二叉树中和为某一值的路径 / 剑指 Offer 35. 复杂链表的复制
  10. 显示网站Alexa世界排名的代码