我有来自svmlight的输出,其中x =预测(0.1,-0.6,1.2,-0.7 ......),y =实际类{+ 1,-1}。我想为10个特定的不同阈值创建一个ROC曲线(让我们成为一个包含10个不同阈值的向量)。我检查了ROCR包,但我没有看到提供阈值向量的任何选项。我需要计算每个阈值和绘图的TPR和FPR。还有其他办法吗?我是R编程的新手。
答案 0 :(得分:2)
ROCR通过绘制许多不同阈值的TPR和FPR来创建ROC曲线。这可以仅使用一组预测和标签来完成,因为如果观察被分类为对于一个阈值为正,则在较低阈值处也将其分类为正。我发现this paper有助于更详细地解释ROC曲线。
您可以在ROCR中按如下方式创建绘图,其中x是预测的向量,y是类标签的向量:
pred <- prediction(x,y)
perf <- performance(pred,"tpr","fpr")
plot(perf)
如果要访问与所有阈值关联的TPR和FPR,可以检查性能对象'perf':
str(perf)
以下答案显示了如何更详细地获取阈值:
答案 1 :(得分:1)
您可以使用pROC
包来执行此操作。首先创建ROC曲线(适用于所有阈值):
myROC <- roc(y, x) # with the x and y you defined in your question
然后您查询此曲线以查找存储在t
中的10个(或任意数量)阈值:
coords(myROC, x = t, input="threshold", ret = c("threshold", "se", "1-sp"))
敏感度是您的TPR,而1-特异性是您的FPR。
免责声明:我是pROC的作者。