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 中发现了一个错误,这是由第一个cutoffInf 引起的,这反过来又导致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 曲线的主要内容,如果未能解决你的问题,请参考以下文章

如何用R语言画ROC曲线图

使用 rocr 包的决策树 ROC 曲线

使用 ROCR 包的 R 中的 ROC 曲线

一个绘图中的多条 ROC 曲线 ROCR

如何使用 r 中的 ROCR 包绘制 ROC 曲线,*只有分类列联表*

Roc 曲线和截止点。 Python