2017-04-04 151 views
1

考虑我有一个像A的分类及其分类的结果给了我如下表:如何使用混淆矩阵的值绘制ROC曲线?

TP TN FP FN 
A 225 100 175 100 

TP是真阳性

TN是真阴性

FP是假模型正

FN是假阴性

如何我ca n绘制ROC的曲线曲线?

我知道,我可以定义一个变量,并尝试基于A预测它,然后创建一个完全模拟上述值的数据帧,最后,我可以使用this代码。但我认为应该有一个更简单的方法?

+0

ROC曲线绘制的概率,而不是“阈限”的预测。 尝试从模型中获取原始输出。 – JanLauGe

回答

3

这是不可能的,因为您对分类器的某个(未知)阈值只有一个混淆矩阵。 ROC曲线包含有关所有可能阈值的信息。

混淆矩阵对应于你的ROC曲线的单点:

灵敏度= TP/TP + FN
1 - Specificy = TN/TN + FP

+0

您对此有何看法? https://www.researchgate.net/post/How_can_I_draw_a_ROC_curve_having_TP_Rate_and_FP_Rate_Values – user5363938

+0

您应该针对不同的阈值建立这样的表格,获得不同的点以及ROC曲线的形状。 – R18

+1

@ user5363938在链接的讨论中,我们给出了每个观察的分数和真实值。你只在你的问题中提供了一个混淆矩阵。 – AlexR

0

我不明白你为什么'd模拟一个新的变量。你基本上要求从单一点绘制曲线,这是不可能的。相反,您应该在训练或测试数据中使用因变量来训练模型。这将允许您找到您认为最佳的截止点。

pROC软件包允许我们轻松绘制ROC曲线。 假设我们有一个数据帧名为测试和模型命名为MyModel,我们可以使用这样的事情:

library('pROC') 
plot(roc(test$y, predict(mymodel, test, type = "prob")) 
+0

请注意,ROC需要预测的_probability_而不是预测的_class_。 – AlexR