ROCR 包中截止值大于 1 的彩色 ROC 曲线
Posted
技术标签:
【中文标题】ROCR 包中截止值大于 1 的彩色 ROC 曲线【英文标题】:Colorized ROC curve with cutoff values greater than one in ROCR package 【发布时间】:2016-09-29 07:55:38 【问题描述】:我使用 ROCR 包绘制了彩色 roc 曲线。曲线本身没有任何问题,看起来不错,但调色板显示截止点大于 1,这是不正确的,因为这些是概率,应该在 0 到 1 的范围内。我检查了我的数据集几次,但它看起来没问题,我的数据集没有任何问题。
这是代码以及预测值及其对应的标签。here is the plotted roc curve for my classification
我最初的猜测是 ROCR 包中存在错误,但我不完全确定。任何帮助解决这个问题将不胜感激。
library(ROCR)
labels <-c(1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
scores<-c(1,1,1,0.8,1,1,1,0.95,1,1,1,1,1,0,0,0,0,0,0,0.97,0,0,0,0,0,0,0,0,0,0,0,0.206,0)
pred<-prediction(scores,labels)
perf<-performance(pred,"tpr","fpr")
plot(perf,colorize=TRUE)
【问题讨论】:
【参考方案1】:您似乎在ROCR
中发现了一个错误,这是由第一个cutoff
是Inf
引起的,这反过来又导致alpha.values
的第一个条目也是Inf
:
> attributes(pred)$cutoffs[[1]]
[1] Inf 1.000 0.970 0.950 0.800 0.206 0.000
> attributes(perf)$alpha.values[[1]]
[1] Inf 1.000 0.970 0.950 0.800 0.206 0.000
到目前为止这不是问题,但似乎alpha.values
用于着色,这可能会导致这种奇怪的行为。将第一个条目设置为 1
而不是 Inf
可以解决此问题,这可以用作此问题的快速修复:
> attributes(perf)$alpha.values[[1]][1] <- 1
> attributes(perf)$alpha.values[[1]]
[1] 1.000 1.000 0.970 0.950 0.800 0.206 0.000
> plot(perf,colorize=TRUE)
【讨论】:
你好,geekoverdose。谢谢,没错。现在看来是合理的:)以上是关于ROCR 包中截止值大于 1 的彩色 ROC 曲线的主要内容,如果未能解决你的问题,请参考以下文章