我正在使用matlab perfcurve [X,Y,T,AUC] = perfcurve(标签,分数,posclass)
我对以下内容感到困惑。首先是一个基本的例子,然后我将跟进我的问题
a)[X,Y,T,AUC] = perfcurve([1 1 1 0 0 0],[。9 .9 .9 .1 .1 .1],1)产生AUC = 1
b)[X,Y,T,AUC] = perfcurve([0 0 0 1 1 1],[。9 .9 .9 .1 .1 .1],1)产生AUC = 0
我用我的数据生成的曲线如下所示。 图1是分数的分布。类以红色和蓝色显示。请注意,label = 1(红色)类的得分较低。 红色 - >标签= 1 蓝 - > label = 0
下一张图片是生成的ROC曲线。它基本上是我想要看到的翻转图像。难道我做错了什么?或者这种行为是否与具有低分数的label = 1类有关?
答案 0 :(得分:0)
当您在第三个参数中写入1时,您将类标签定义为正(1),然后perfcurve通过查看您在第二个参数中提供的概率/分数来计算fpr和tpr,关系式你定义的正类标签(1)。每个数据的分数定义它是TP还是FP(你已经定义了正类),所以如果你如上所示交换分数,而不改变正类的类标签,每个TP都变成FP,因为现在处于用于计算ROC曲线的阈值的相反侧。这就是为什么情节是你期望的镜像。