1

我有来自 svmlight 的输出,它有 x=predictions (0.1,-0.6,1.2,-0.7...),y=actual class {+1,-1}。我想为 10 个特定的不同阈值创建一条 ROC 曲线(让 t 成为包含 10 个不同阈值的向量)。我检查了 ROCR 包,但没有看到任何提供阈值向量的选项。我需要为每个阈值和绘图计算 TPR 和 FPR。有没有其他方法可以做到这一点?我是 R 编程的新手。

4

2 回答 2

2

ROCR 通过绘制许多不同阈值的 TPR 和 FPR 来创建 ROC 曲线。这可以通过一组预测和标签来完成,因为如果一个观察被分类为一个阈值的正面,它也将被分类为一个较低的阈值的正面。我发现这篇论文有助于更详细地解释 ROC 曲线。

您可以在 ROCR 中创建如下图,其中 x 是预测向量,y 是类标签向量:

pred <- prediction(x,y) 
perf <- performance(pred,"tpr","fpr")
plot(perf)

如果要访问与所有阈值关联的 TPR 和 FPR,可以检查性能对象“perf”:

str(perf)

以下答案显示了如何更详细地获取阈值:

https://stackoverflow.com/a/16347508/786220

于 2013-08-10T19:05:28.393 回答
2

你可以用这个pROC包来做到这一点。首先创建 ROC 曲线(针对所有阈值):

myROC <- roc(y, x) # with the x and y you defined in your question

然后您查询此曲线以获取您存储的 10 个(或任意数量)阈值t

coords(myROC, x = t, input="threshold", ret = c("threshold", "se", "1-sp"))

灵敏度是您的 TPR,而 1-Specificity 是您的 FPR。


免责声明:我是 pROC 的作者。

于 2014-01-23T21:13:06.587 回答