如何用R语言画ROC用excel画曲线图图

15094人阅读
浅谈ROC曲线机器学习中很常见的一个大类就是二元分类器。很多二元分类器会产生一个概率预测值,而非仅仅是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 &- (y~., =newdata, ='binomial')
pre &- (model1,type='response')
# 将预测概率prob和实际结果y放在一个数据框中
&- (=pre,obs=newdata$y)
# 按预测概率从低到高排序
&- [($prob),]
&- fpr &- (0,n)
# 根据不同的临界值threshold来计算TPR和FPR,之后绘制成图
for (i in 1:n) {
threshold &- $prob[i]
tp &- ($prob & threshold & $obs == 1)
fp &- ($prob & threshold & $obs == 0)
tn &- ($prob & threshold & $obs == 0)
fn &- ($prob & threshold & $obs == 1)
[i] &- tp/(tp+fn) # 真正率
fpr[i] &- fp/(tn+fp) # 假正率
(fpr,,type='l')
(a=0,b=1)R中也有专门用来绘制ROC曲线的包,例如常见的ROCR包,它不仅可以用来画图,还能计算ROC曲线下面积AUC,以评价分类器的综合性能,该数值取0-1之间,越大越好。
pred &- prediction(pre,newdata$y)
performance(pred,'auc')@y.values #AUC值
perf &- performance(pred,'tpr','fpr')
(perf)ROCR包画图函数功能比较单一,笔者比较偏好使用功能更强大的pROC包。它可以方便比较两个分类器,还能自动标注出最优的临界点,图看起来也比较漂亮。
modelroc &- roc(newdata$y,pre)
(modelroc, print.auc=TRUE, auc.polygon=TRUE, =(0.1, 0.2),
grid.col=(&green&, &red&), max.auc.polygon=TRUE,
auc.polygon.col=&skyblue&, print.thres=TRUE)
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:638483次
积分:6274
积分:6274
排名:第4274名
原创:72篇
转载:11篇
译文:11篇
评论:31条
文章:13篇
阅读:47300
文章:11篇
阅读:127433
(2)(3)(16)(5)(1)(2)(1)(2)(12)(9)(1)(28)(1)(1)(2)(8)R语言pROC包绘制ROC曲线
& head(mtcars)
&mpg cyl disp &hp drat
& &wt &qsec vs
am gear carb
Mazda RX4 & &
& & 21.0 & 6
&160 110 3.90 2.620 16.46 &0
Mazda RX4 Wag & & 21.0
& 6 &160 110 3.90 2.875 17.02
Datsun 710 & &
& &22.8 & 4
&108 &93 3.85 2.320 18.61
Hornet 4 Drive & &21.4
& 6 &258 110 3.08 3.215 19.44
Hornet Sportabout 18.7 & 8
&360 175 3.15 3.440 17.02 &0
Valiant & &
& & & 18.1
& 6 &225 105 2.76 3.460 20.22
& library(pROC)
& plot.roc(vs~wt,mtcars,col="1")-&r1
& lines.roc(vs~mpg,mtcars,col='2')-&r2
& roc(vs~wt,mtcars)-&r1
& roc(vs~mpg,mtcars)-&r2
& roc.test(r1,r2)
& Bootstrap test for two correlated ROC
data: &r1 and r2
D = -1.7035, boot.n = 2000, boot.stratified = 1, p-value =
alternative hypothesis: true difference in AUC is not equal to
sample estimates:
AUC of roc1 AUC of roc2&
& 0.8412698 &
0.9107143&
已投稿到:sponsored links
R语言绘制ROC曲线
(PS:下述内容或许部分表述有误,请谨慎参考,但以下操作本人均测试正常;本文很多内容参考了网友智慧,在次深表感谢。大部分参考资料已经注明来源,但疏忽在所难免,小部分未注明,请谅解。资源,共建共享,引用本文内容请注明出处,谢谢!)
内容:利用R语言绘制ROC曲线并计算AUC
平台:R 2.15.3
1. 吐槽一大堆,省略xxx字
2. 准备工作
2.3 pROC的详细使用,请参阅
Reference manual&
& & & 或者,你也可以在 R 界面中输入帮助命令 help(package=&pROC&) 查看
& & & 使用中的很多问题,都能得到解决
3. 开始工作
NOTE:R中,要使用一个包的时候,记得载入,所以,这里要载入已经安装好的 pROC 包,命令如下:
library(&pROC&)
载入成功后,就可以正常使用了
3.1 使用手册命令测试,简单的两条,就出来了你想要的结果
data(aSAH)
# Build a ROC object and compute the AUC
roc(aSAH$outcome, aSAH$s100b)
改进手册命令以便绘制ROC曲线,标注AUC面积,标注最适阈值
data(aSAH)
# Build a ROC object and compute the AUC, draw ROC, print AUC and the best THRESHOLDS
roc(aSAH$outcome, aSAH$s100b, plot=TRUE, print.thres=TRUE, print.auc=TRUE)
手册命令的使用和讲解就到这里,效果图如下所示
3.2 利用自己的数据绘制ROC曲线
3.2.1 数据格式
----------Data Sample---------------
label,score
-----------End Data Sample---------
NOTE:这里的数据每一行是以&,&分割的,在用R读入的时候有用
3.2.2 读入数据(非常感谢这里的参考资料)
切换工作目录到你的数据文件所在目录,比如你的文件名为 filename.txt,位于 E:\Rtest 目录,则输入如下命令切换
setwd(&E:\\Rtest&)只有将工作目录却换到你数据文件所在目录,才能正常打开
myData &- read.table(&filename.txt&, header=TRUE, sep=&,&)
3.2.3 绘制你的ROC曲线
roc(myData$label, myData$score, plot=TRUE, print.thres=TRUE, print.auc=TRUE)
至此,操作完成,结果如下所示,Good Luck!
Zhou N, Zhang J, Feng L, et al. IntApop: A web service for predicting apoptotic protein interactions in humans[J]. Biosystems, ): 238-244.
3.2.4 在同一图绘制两条ROC曲线
这里只需要适当修改3.2.3步中的命令
roc1 &- roc(myData$label, myData$score)
roc2 &- roc(myData2$label, myData2$score)
plot(roc1, col=&blue&)
plot.roc(roc2, add=TRUE, col=&red&)
1.加载package library('pROC') 2.制作相应的格式数据
F: factor型数据,用来表示结果的好坏. P:数值数据,作为predictor. 3.绘制命令 plot(roc(F, P,levels=C(&label1&,&label2&))) 注意,levels的label应该和F中的 ...
ROC曲线是通用的分类器评价工具,matlab函数中自带了绘制该曲线的函数plotroc. plotroc函数的原型为:plotroc(targets, outputs) 其中参数targets是一个矩阵,代表测试集,每一列表示一个测试样本的标签 如果有两类样本,比如第1,2,5个样本属于第1类,第3,4,6个样本属于第2类....则targets应为: 1 ...
From:/blog/1271580
介绍如何使用 R 绘制 heatmap 的文章. 今天无意间在Flowingdata看到一篇关于如何使用 R 来做 heatmap 的文章(请移步到这里).虽然 heatmap 只是 R 中一个很普通的图形函数,但这个例子使用了赛季 NBA 50个 ...
首先载入颜色扩展包RColorBrewer,具体使用方法可参见下面两篇文章/52.html,http://tianxingzhe./1199 library(RColorBrewer) 本文以hadoop集群wordcount程序的输出结果为数据源
barplot(rev(qs$ppp),horiz=T,xlim=c(-4,1),axes=F,col=rep(brewer.pal(9,'YlOrRd'),each=15)) text(seq(from=0.7,length.out=135,by=1.2),x=-2,label=rev(qs$nnn)) axis(3,c(0,0.25,0.5,0.75,1 ...拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3b8ef3f3f2bd43e9-ua98).
重新安装浏览器,或使用别的浏览器

我要回帖

更多关于 用excel画曲线图 的文章

 

随机推荐