【问题标题】:Perfcurve positive class性能曲线正类
【发布时间】:2015-09-17 22:09:21
【问题描述】:

我正在使用 matlab perfcurve [X,Y,T,AUC] = perfcurve(labels,scores,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. 当我提供正类 (laebl=1) 时,它总是必须有更高的分数吗?
  2. 如果我让正类 (label=1) 的分数低于上述 b) 中的分数,ROC 曲线是否会翻转(与正常 ROC 曲线相反)

我使用数据生成的曲线如下所示。 图 1 是分数的分布。类以红色和蓝色显示。请注意,label=1(红色)类的得分较低。 红色->标签=1 蓝色-> 标签=0

下一张图是生成的 ROC 曲线。它基本上是我想看到的翻转图像。难道我做错了什么?还是这种行为与 label=1 分数低的类有关?

【问题讨论】:

    标签: matlab plot roc


    【解决方案1】:

    当您在第三个参数中写入 1 时,您将假定为正 (1) 的类标签,然后 perfcurve 通过查看您在第二个参数中提供的概率/分数来计算 fpr 和 tpr,相关到您定义的正类标签 (1)。每个数据的分数定义了它是 TP 还是 FP(您已经定义了正类),所以如果您如上所示交换分数,而不更改正类的类标签,每个 TP 变成 FP,因为 now 位于用于计算 ROC 曲线的阈值的另一侧。这就是为什么情节是你所期望的镜像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      相关资源
      最近更新 更多