原文链接:https://www.r-bloggers.com/lang/chinese/1205​www.r-bloggers.com

机器学习中很常见的一个大类就是二元分类器。很多二元分类器会产生一个概率预测值,而非仅仅是0-1预测值。我们可以使用某个临界点(例如0.5),以划分哪些预测为1,哪些预测为0。得到二元预测值后,可以构建一个混淆矩阵来评价二元分类器的预测效果。所有的训练数据都会落入这个矩阵中,而对角线上的数字代表了预测正确的数目,即True Positive+True Nagetive。同时可以相应算出TPR(真正率或称为灵敏度)和TNR(真负率或称为特异度)。我们主观上希望这两个指标越大越好,但可惜二者是一个此消彼涨的关系。除了分类器的训练参数,临界点的选择,也会大大的影响TPR和TNR。有时可以根据具体问题和需要,来选择具体的临界点。

如果我们选择一系列的临界点,就会得到一系列的TPR和TNR,将这些值对应的点连接起来,就构成了ROC曲线。ROC曲线可以帮助我们清楚的了解到这个分类器的性能表现,还能方便比较不同分类器的性能。在绘制ROC曲线的时候,习惯上是使用1-TNR作为横坐标,TPR作为纵坐标。下面来看看如何在R语言中绘制ROC曲线。

# 做一个logistic回归,生成概率预测值

model1

pre

# 将预测概率prob和实际结果y放在一个数据框中

data

# 按预测概率从低到高排序

data

n

tpr

# 根据不同的临界值threshold来计算TPR和FPR,之后绘制成图

for (i in 1:n) {

threshold

tp threshold & data$obs == 1)

fp threshold & data$obs == 0)

tn

fn

tpr[i]

fpr[i]

}

plot(fpr,tpr,type='l')

abline(a=0,b=1)

R中也有专门用来绘制ROC曲线的包,例如常见的ROCR包,它不仅可以用来画图,还能计算ROC曲线下面积AUC,以评价分类器的综合性能,该数值取0-1之间,越大越好。

library(ROCR)

pred

performance(pred,'auc')@y.values #AUC值

perf

plot(perf)

ROCR包画图函数功能比较单一,笔者比较偏好使用功能更强大的pROC包。它可以方便比较两个分类器,还能自动标注出最优的临界点,图看起来也比较漂亮。

library(pROC)

modelroc

plot(modelroc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),

grid.col=c("green", "red"), max.auc.polygon=TRUE,

auc.polygon.col="skyblue", print.thres=TRUE)

roc图 r语言_浅谈ROC曲线-R语言相关推荐

  1. python的roc曲线与阈值_浅谈ROC曲线的最佳阈值如何选取

    为了获取ROC曲线的最佳阈值,需要使用一个指标--约登指数,也称正确指数. 借助于matlab的roc函数可以得出计算. % 1-specificity = fpr % Sensitivity = t ...

  2. 适合中职学生的C语言课本,浅谈中职c语言校本教材的开发.pdf

    申学.i罘{辅导 浅谈中职 C语言校本教材的开发 @ 付世杰 摘 要:校本教材是适应教学需要的一个很重要的工具,校本教材的 在校本教材的编写过程中,教师把教育理论与教育实践结合起来,通过 开发会给我们 ...

  3. 浅谈python语言_浅谈Python语言基础知识点!

    一.Python 语言的简述 Python语言是一种解释型.面向对象的编程语言,是一种开源语言. Python属于动态类定义语言,也是一种强调类型语言. 二.Python 语言的特点 1.简单.高级 ...

  4. verilog case语句_浅谈Design Compiler -- Verilog语言结构到门级的映射

    昨天的文章中,我们了解到Design Compiler(DC)作为Synopsys公司开发的一款用于电路综合的EDA工具,在全球数字电路市场去得了巨大的成功,它的设计初衷是将用Verilog HDL语 ...

  5. 判断图有无环_浅谈什么是图拓扑排序

    1 引言   在工程实践中,一个工程项目往往由若干个子项目组成.这些子项目间往往有两种关系:   (1) 先后关系,即必须在某个项完成后才能开始实施另一个子项目.   (2) 子项目间无关系,即两个子 ...

  6. 《计算机辅助教学及应用实践研究》,《论文_浅谈计算机辅助教学(定稿)》

    <论文_浅谈计算机辅助教学(定稿)> (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 摘要:计算机辅助教学中要用到多媒体课件 ...

  7. 对计算机辅助英语的看法,浅谈利用计算机辅助英语语言测试

    摘要:随着计算机技术不断深入发展,给我们的生活和学习带来了翻天覆地的变化,越来越多的学校利用计算机辅助各学科进行教学,对计算机教学设施的配备与老师掌握计算机技术方法的要求越来越高.尤其是利用计算机进行 ...

  8. c语言在数学方面的应用编程,浅谈数学在C语言编程中的应用.doc

    浅谈数学在C语言编程中的应用 浅谈数学在C语言编程中的应用 [][]C语言对学习者的数学基础要求较高对一部分学生来说学好C语言有一定的困难.本文就本专业知识和自身对C语言的学习经验对数学在C语言编程中 ...

  9. python判断两个对象是否为相等使用的运算符是_Python入门_浅谈逻辑判断与运算符...

    这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...

最新文章

  1. mkdir()提示No such file or directory错误的解决方法
  2. 基于Docker + Consul + Nginx + Consul-template的服务负载均衡实现
  3. sift+图像匹配 算法
  4. VSCode+BeetleX.VueHost开发Vue应用
  5. 关于窗口的一些小脚本
  6. 【转】SQL Server 索引结构及其使用(二)
  7. Flink的设计与实现:集群资源管理
  8. Highcharts的使用
  9. siob执行多条sql写法及创建表添加字段
  10. 【SQL】INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND
  11. Mysql 自动增长 重置
  12. mysql 截取 效率,MySQL 随机函数获取数据速度和效率分析
  13. 单片机编程:软件定时器
  14. batchplot插件用法_教大家如何使用Batchplot批量打印CAD图纸
  15. Overland Conveyor Belt Analyst 15.0.19.zip
  16. windows通过vnc远程桌面
  17. 操作系统之流?I/O操作?阻塞?epoll?
  18. 更换固态硬盘(不重装系统)(3)
  19. 分布式大气监测系统架构介绍及案例解析
  20. 旅游 - 珠海长隆海洋王国 - 鹦鹉过山车

热门文章

  1. 详细解释下小波去噪的原理
  2. IDA官网发布的每周技巧8----以批处理模式在后台运行IDA
  3. STC系列芯片的串口通信编程
  4. 登陆页面的获取验证码
  5. 为Adobe Reader添加书签功能
  6. 个人网站如何取消(注销)备案信息?
  7. stm32驱动 ov7670发送到串口上位机显示图像
  8. pubmed影响因子插件_科研干货 | Scholarscope在新版PubMed中实现基于影响因子的文献筛选...
  9. jQuery实现的地址选择
  10. mysql切换Tidb