【问题标题】:Why ROC's plotting function perfcurve of MATLAB is yielding 3 ROC curves in case of cross validation?为什么在交叉验证的情况下,MATLAB 的 ROC 绘图函数 perfcurve 会产生 3 条 ROC 曲线?
【发布时间】:2019-03-04 04:57:11
【问题描述】:

我将 5 折交叉验证数据绘制为一个元胞数组,以执行具有正 class=1 的函数。然后它生成了 3 条曲线,如图所示。我预计只有一条曲线。

[X,Y,T,AUC,OPTROCPT,SUBY,SUBYNAMES] = perfcurve(Actual_label,Score,1);

            plot(X,Y)

这里,Actual_label 和 Score 是一个大小为 5 X 1 的元胞数组。每个元胞数组的大小为 70 X 1。1 表示正 class=1。

P.S:我使用的是一类 SVM,而“fitSVMPosterior”函数不适合一类学习(documentation of MATLAB 中也提到过)。因此这里不能使用后验概率。

【问题讨论】:

    标签: matlab cross-validation roc auc


    【解决方案1】:

    当您计算置信界限时,X 和 Y 是一个 m×3 数组,其中 m 是固定 X 值或阈值(T 值)的数量。 Y 的第一列包含平均值。第二列和第三列分别包含逐点置信区间的下限和上限。 AUC 也是具有三个元素的行向量,遵循相同的约定。

    以上解释摘自MATLAB documentation

    【讨论】:

      【解决方案2】:

      这是意料之中的,因为您正在为 5 个折叠中的每一个绘制 ROC 曲线。

      现在,如果您希望分类器只有一个 ROC,您可以使用 5 个经过训练的分类器来预测独立测试集的标签,或者您可以平均 5 次折叠的后验概率并拥有一个 ROC。

      【讨论】:

      • 谢谢@Marouen。但是,我使用的是一类 SVM,而“fitSVMPosterior”函数不适合一类学习(MATLAB 的文档中也提到过)。因此这里不能使用后验概率。
      • 谢谢@Marouen。我使用的是五倍,所以应该有 5 个地块为什么是三个。我不确定,但它们表示上限和下限。
      • 我现在明白了。您可以单击图表上的显示图例按钮(上栏),它会告诉您您有多少个地块。
      猜你喜欢
      • 2019-08-15
      • 2014-07-04
      • 2018-01-15
      • 2012-09-11
      • 2021-05-08
      • 1970-01-01
      • 2021-01-30
      • 2020-01-02
      • 1970-01-01
      相关资源
      最近更新 更多