0 用到的知识

介绍ROC和PR前先介绍混淆矩阵便于理解。

- 预测值 正 预测值 负
真实值 正 TP FN
真实值 负 FP TN

TP(True Positive): 被判定为正样本,实际也为正样本

FN(False Negative):伪阴性 ,被判定为负样本,实际为正样本

FP(False Positive):伪阳性,被判断为正样本,实际为负样本

TN(True Negative):被判断为负样本,实际为负样本

假阳率:在所有的负样本中,分类器预测错误的比例

FPR=FPFP+TNFPR = \frac{FP}{FP+TN}FPR=FP+TNFP​

真阳率:在所有的正样本中,分类器预测正确的比例

TPR=TPTP+FNTPR = \frac{TP}{TP + FN}TPR=TP+FNTP​

recall 分类器所预测正确的正样本占所有正样本的比例,和FPR相同

r=TPTP+FNr = \frac{TP}{TP + FN}r=TP+FNTP​

precision 分类器预测的正样本中预测正确的比例。

p=TPTP+FPp = \frac{TP}{TP + FP}p=TP+FPTP​

1 绘制 ROC

ROC curve 横坐标为False Positive Rate(FPR假正率),纵坐标为True Positive Rate(TPR真正率)。一般情况下,这个曲线都应该处于(0,0)和(1,1)连线的上方。

在PR曲线中越左上凸越好

一共有下面两个步骤

1.1 排序

按照属于‘正样本’的概率将所有样本排序

1.2 描点

(1)从得分最高的第一个样本开始,如果将他的score作为阈值,也就是说,当score大于等于0.9时,才把样本归类到真阳性(true positive),这么一来, 在ROC曲线图中,样本1对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 1 9
真实值 负 0 10

其中,正样本只有样本1分类正确,此时TPR = 1 / (1 + 9) = 0.1,FPR = 0 / (0 + 10) = 0.0,此时可以在(0, 0.1)处标记一个点。

(2)看第2个样本。此时与之设为0.8,样本2对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 2 8
真实值 负 0 10

其中,正样本只有样本1,2分类正确,此时TPR = 2 / (2 + 8) = 0.2,FPR = 0 / (0 + 10) = 0.0,此时可以在(0, 0.2)处标记一个点。

(3)看第3个样本。此时与之设为0.7,样本3实际为负样本,被错误的预测为了正样本,对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 2 8
真实值 负 1 9

其中,正样本只有样本1,2分类正确,此时TPR = 2 / (2 + 8) = 0.2,FPR = 1 / (1 + 9) = 0.1,此时可以在(0.1, 0.2)处标记一个点。

重复上述步骤直至所有样本遍历完成,然后将所有的点连接起来,可以得到下图:

  • (0,1)点:代表FPR=0,TPR=1; 最好的情况,所有正样本都被正确的预测了,并且没有负样本被人为是正样本。

  • (1,0)点:代表FPR=1,TPR=0;最坏的情况,表明所有的正样本都被错误的认为是负样本

  • (0,0)点:代表FPR=0,TPR=0;分类器将所有的样本都判定为负样本

  • (1,1)点:代表FPR=1,TPR=1;分类器将所有的样本都判定为正样本

2 绘制 PR

PR曲线是由精确率和召回率的点连成的线,横轴为Recall,纵轴为Precision,

在PR曲线中越右上凸越好,PR想要Precision 和Recall同时高

一共有下面两个步骤

2.1 排序

按照属于‘正样本’的概率将所有样本排序

1.2 描点

(1)从得分最高的第一个样本开始,如果将他的score作为阈值,也就是说,当score大于等于0.9时,才把样本归类到真阳性(true positive),这么一来, 在ROC曲线图中,样本1对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 1 9
真实值 负 0 10

其中,正样本只有样本1分类正确,此时Recall = 1 / (1 + 9) = 0.1,2,Precision = 1 / (1 + 0) = 1.0,此时可以在(0.1, 1)处标记一个点。

(2)看第2个样本。此时与之设为0.8,样本2对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 2 8
真实值 负 0 10

其中,正样本只有样本1,2分类正确,此时Recall = 2 / (2 + 8) = 0.2,Precision = 2 / (2 + 0) = 1.0,此时可以在(0.2, 1)处标记一个点。

(3)看第3个样本。此时与之设为0.7,样本3实际为负样本,被错误的预测为了正样本,对应的混淆矩阵(confusion matrix)为

- 预测值 正 预测值 负
真实值 正 2 8
真实值 负 1 9

其中,正样本只有样本1,2分类正确,此时Recall = 2 / (2 + 8) = 0.2,Precision = 2 / (2 + 1) = 0.67,此时可以在(0.67, 0.2)处标记一个点。

重复上述步骤直至所有样本遍历完成,然后将所有的点连接起来,可以得到下图:

欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~

PR曲线与ROC曲线绘制相关推荐

  1. 机器学习:python绘制P-R曲线与ROC曲线

    Python绘制P-R曲线与ROC曲线 查准率与查全率 P-R曲线的绘制 ROC曲线的绘制 查准率与查全率   P-R曲线,就是查准率(precision)与查全率(recall)的曲线,以查准率作为 ...

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

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

  3. 机器学习性能度量(1):P-R曲线与ROC曲线,python sklearn实现

    最近做实验要用到性能度量的东西,之前学习过现在重新学习并且实现一下. 衡量模型泛化能力的评价标准,这就是性能度量.性能度量反应了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判 ...

  4. 百面机器学习 #2 模型评估:0102 精确率与召回率,假阳性与真阳性率,PR曲线和ROC曲线

    文章目录 1. P-R(Precision-Recall)曲线 F1 score 2. 平方根误差的局限性 3. ROC曲线 ROC曲线绘制 4. AUC predict Positive predi ...

  5. P-R曲线与ROC曲线使用总结

    P-R曲线与ROC曲线总结 作者:jliang https://blog.csdn.net/jliang3 1.P-R曲线 1)实际预测时二分类的四种情况 真阳性/真正类(True Positive, ...

  6. 机器学习笔记(一)P-R曲线与ROC曲线

    P-R曲线与ROC曲线 一.什么是P-R曲线? 二.什么是ROC曲线? 三.P-R曲线与ROC曲线有什么用? 三.绘制P-R曲线代码 一.什么是P-R曲线? 要知道什么是P-R曲线,首先,我们要先了解 ...

  7. 模型评估指标:P-R曲线和ROC曲线

    在机器学习建模中,模型评估指标用于评估不同模型的优劣. 在分类任务中,最简单的评估指标莫过于错误率和精度了,错误率表示的是错误分类的样本个数占总样本个数的比例,精度则是1减去错误率. 错误率和精度的优 ...

  8. 机器学习中的性能指标:精度、召回率,PR曲线,ROC曲线和AUC,及示例代码

    机器学习中的性能指标:精度.召回率.PR曲线,ROC曲线和AUC 精度.召回率 基本概念 F-Score 度量曲线 PR曲线 ROC曲线 PR曲线和ROC曲线的比较 AUC 精度.召回率 基本概念 可 ...

  9. 机器学习模型性能评估(二):P-R曲线和ROC曲线

    上文简要介绍了机器学习模型性能评估的四种方法以及应用场景,并详细介绍了错误率与精度的性能评估方法.本文承接上文,继续介绍模型性能评估方法:P-R曲线和ROC曲线.                   ...

  10. 一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1

    文章目录 二分类的评价指标 一.混淆矩阵与 TP.TN.FP.FN 二.准确率.精确率.召回率.F1值 三.P-R 曲线 四.ROC 曲线.AUC 值 五.P-R曲线和ROC曲线有什么区别,如何选择? ...

最新文章

  1. RocketMQ 实战 消息发送样例
  2. faster rcnn第二阶段loss出现nan_利用Faster_Rcnn训练模型时出现的问题
  3. Java8 Lambda不仅仅只是语法糖
  4. 有效括号 python_python 有效的括号的实现代码示例
  5. 利用WinRAR命令行压缩文件或文件夹
  6. 三维重建面试0:*SLAM滤波方法的串联综述
  7. vue3+typescript引入外部文件
  8. etcd官方推荐的硬件配置
  9. 微信公众号开发系列教程一(调试环境部署)
  10. mysql将字符串转成数字
  11. QNAP 修复 NAS 备份应用中的严重漏洞
  12. 实验报告二:例2-19 一位全加器
  13. 全国计算机等级二级ACCESS数据库程序设计(更新完毕)
  14. U盘拷贝大文件提示文件过大无法拷贝怎么解决
  15. Asp.net 简单的站内搜索引擎
  16. 分数混合运算简便方法_分数混合运算和简便算法
  17. 生成国庆头像网站的源码及搭建教程
  18. 读书笔记:少有人走的路
  19. 服务器怎么解绑网站域名,宝塔面板如何解绑域名
  20. springCloud——ribbon和zuul

热门文章

  1. 阿里云服务器学生计划--免费领取两个月
  2. 面试官的窒息逼问: 到底什么是面向接口编程?
  3. ssh介绍和使用--SecureCRT工具和ssh命令使用,以及sshd配置
  4. 超声波皮肤注入器行业研究及十四五规划分析报告
  5. 单片机74LS164C语言例子,51单片机控制74LS164芯片输出64位的数组
  6. hspice for linux的命令行
  7. Resnet残差网络学习
  8. WPS JS宏入门案例集锦
  9. 学生免费获取PyCharm专业版
  10. selenium + 超级鹰 识别验证码自动登录