r roc函数_R画ROC曲线
学了一下ROC图形的原理,在此实现一下,算是理论落地的训练,只不过目前看的是二分类问题。
FPR、TPR简介
ROC曲线的横坐标为FPR,叫做假正例率,也就是实际为假的观测中被判断为真的所占的比例。
ROC曲线的纵坐标为TPR,叫做真正例率,也就是实际为真的观测中被判断为真的所占的比例。
举例如下:
表1
实际分类
判定分类
P
P
P
N
N
P
P
N
N
N
此例中,实际为假的观测(N:negative)共2个,其中被判定为真的有1个,因此FPR=1/2=0.5;实际为真的观测(P:positive)共3个,其中被判定为真的有1个,因此TPR=1/3。
ROC绘制过程
但是实际的二分类问题往往给出的是判定为真的概率,也就是如下的表格:
表2
实际分类
判定为真的概率
P
0.9
P
0.6
N
0.5
P
0.4
N
0.3
如果你认为判定为真的概率不小于0.9,就能认为该观测为真,那么表2更新如下:
表3
实际分类
判定分类
P
P
P
N
N
N
P
N
N
N
于是得到一个坐标(FPR,TPR)=(0/2,1/3)=(0,1/3)。
如果你认为判定为真的概率不小于0.6,就能认为该观测为真,那么表2更新如下:
表4
实际分类
判定分类
P
P
P
P
N
N
P
N
N
N
于是得到一个坐标(FPR,TPR)=(0/2,2/3)=(0,2/3)。
以此类推,即以“判定为真的概率”中的各个概率p为临界值,如果概率不小于p,则判定为真,否则为假。按照这条规则对表2进行更新,最终可以得到如下表格:
表5
实际分类
判定为真的概率
FPR
TPR
P
0.9
0
1/3
P
0.6
0
2/3
N
0.5
1/2
2/3
P
0.4
1/2
3/3
N
0.3
2/2
3/3
得到上面这5个点之后就可以画图了,一般来讲ROC图都是锯齿图,且图形越靠近左上角说明分类器准确率越高,越接近斜率为1的对角线说明分类器性能越差。
R代码实现
理解了上面的原理,画图也简单了,关键在于表2的更新如何实现,推荐的方法是先对判定为真的概率进行一个从大到小的排序。为了便于使用,这里直接定义一个函数进行封装。
ROC_Plot
real
rows
ROC
colnames(ROC)
for(i in 1:rows){
DF
DF_N
ROC[i,1]
DF_P
ROC[i,2]
}
with(as.data.frame(ROC),
{plot(FPR,TPR,xlim=c(0,1),ylim=c(0,1),...)
abline(a=0,b=1,lty='dotted')})
}
函数ROC_Plot的real_category是实际分类向量,probs是对应的判定为真的概率的向量,positive_symbol是观测为真的标志,'...'是省略的画图参数,这是需要自己加的。
直接调用该函数完成表2的ROC图绘制:
ROC_Plot(real_category=c('p','p','n','p','n'),
probs=c(0.9,0.6,0.5,0.4,0.3),
positive_symbol='p',
type="l",col="red",
xlab="假正例率(FPR)",ylab="真正例率(TPR)",main="ROC")
图形如下:
更多观测也可以直接套用该函数,在此只给代码示例,图形就不放了。
ROC_Plot(
real_category=
c('p','p','n','p','p',
'p','n','n','p','n',
'p','n','p','n','n',
'n','p','n','p','n'),
probs=
c(.9,.8,.7,.6,.55,
.54,.53,.52,.51,.505,
.4,.39,.38,.37,.36,
.35,.34,.33,.30,.1),
positive_symbol="p",
type="l",
col="red",
xlab="假正例率(FPR)",
ylab="真正例率(TPR)",
main="ROC")
r roc函数_R画ROC曲线相关推荐
- r roc函数_画ROC曲线的R包总结
原标题:画ROC曲线的R包总结 作者: Joseph Rickert 原文链接: https://rviews.rstudio.com/2019/03/01/some-r-packages-for-r ...
- r roc函数_R语言画ROC曲线总结
在本文中,我描述了如何在CRAN中搜索用于绘制ROC曲线的包,并重点介绍了六个有用的包. 尽管我从一些我想谈论的软件包开始就有了一些想法,例如ROCR和pROC(我在过去发现它们很有用),但我还是决定 ...
- r roc函数_R语言中绘制ROC曲线
两种方法: 第一种,摘自别人的方法: ROC曲线,做分类时经常会用到的一种结果表现方法.诸如此类的工作,首选工具当然是R.在CRAN上搜了一下,找到一个叫ROCR的包.尽管这个包已经很久没更新了,但用 ...
- r roc函数_R语言绘制ROC曲线
library(tidyverse)# for data manipulationlibrary(pkgsearch) # for searching packages 找与ROC相关的包该包会提供 ...
- r 语言roc_R语言画ROC曲线总结
原文链接:http://tecdat.cn/?p=10963tecdat.cn 在本文中,我描述了如何在CRAN中搜索用于绘制ROC曲线的包,并重点介绍了六个有用的包. 尽管我从一些我想谈论的软件包 ...
- R count函数_R分析之前的数据准备
数据分析项目中大多数的时间都用在了准备数据上,一个典型的项目80%的精力都花在分析而进行的发现.清洗和准备数据上.只有不到5%的精力用于分析(剩下的时间都耗在了写报告上面). 合并数据集 数据分析中最 ...
- R count函数_R语言系列第二期:R变量、脚本、作图等模块介绍
在上一篇文章里,给大家介绍了R语言的下载,界面操作,6个处理对象等等.R语言系列第一期(番外篇 ):R的6种对象-向量.矩阵.数组.因子.列表.数据框 在这些内容的基础上,我们在这个部分为大家介绍一些 ...
- R count函数_R最快且比dplyr最高效的大数据处理R包:tidyfst
R最快且比dplyr最高效的大数据处理R包:tidyfstmp.weixin.qq.com 写在前面 本包开发者黄天元: 首先我对tidyfst进行了一套完整的学习,因为这里面的函数并不多,满打满计 ...
- origin画ROC曲线
ROC曲线的全称是受试者工作特征(Receiver Operating Characteristic)曲线,是非常重要和常见的统计分析方法. 如果已经计算好FPR和TPR,可以直接使用最简单的图绘制. ...
最新文章
- jpa中使用Query判断条件查询
- 如何通过终端快速删除文件和目录(bash shell)[关闭]
- python多进程编程常用到的方法
- Java 语法规定之外的命名注释规范
- 高压电是以交流,还是直流方式输送?
- opcua客户端实现断线重连_PLCopen amp; OPC UA信息模型
- Android之解决底部4个TextView占比例大小不一致问题
- 工作流性能优化(敢问activiti有扩展性?)(3)
- 蓝桥杯 ADV-66算法提高 阮小二买彩票
- ThinPHP3.2中 addAll()批量插入数据
- Hi,我们的代码重构了
- (十) 一起学 Unix 环境高级编程 (APUE) 之 线程控制
- 作为游戏策划,软件记录
- HZRecorder+科大讯飞语音转换文字
- java实现模拟多道程序设计
- 交换机下接路由器lan还是wan_无线路由器wan口未连接如何解决【解决方法】
- spring boot启动报错:Reason: Canonical names should be kebab-case (‘-‘ separated), lowercase
- 网页获取到的图片bease64编码,转化为二进制,进而保存为图片
- Java获取word表格中的数据
- Java:多态乃幸福本源
热门文章
- 华为畅享20 Pro和OPPO A93s多维度对比,谁更胜一筹?
- 经常骑摩托车的朋友们,你们的iPhone还好吗?
- 软件提示应用程序无法启动,因为应用程序的并行配置不正确……
- SpringBoot整合SpringSecurity [超详细] (一)入门案例
- 【博学谷学习记录】超强总结,用心分享丨人工智能 多场景实战 常用英文缩写概念总结
- 谷歌输入法的英文联想功能(v3.0 beta)
- $.post()方法
- 电脑保存或者另存为文件时显示文件名无效
- SpringCloud(10)—— 国寿i动项目经验之(解决前后端跨域请求技术)
- 港联证券|海外资金悄然调仓增持科技赛道