为什么在交叉验证的情况下,ROC的MATLAB绘制函数perfcurve会产生3条ROC曲线?

时间:2018-09-28 08:19:53

标签: matlab cross-validation roc auc

我绘制了5倍交叉验证数据作为单元数组以完善具有正类= 1的函数。然后它生成了3条曲线,如您在图中所见。我只希望有一条曲线。

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

            plot(X,Y)

此处,Actual_label和Score是大小为5 X 1的单元格数组。每个单元格数组的大小为70 X1。1表示正类= 1。

P.S:我使用的是一类SVM,并且'fitSVMPosterior'函数不适用于一类学习(documentation of MATLAB中已经提到过)。因此,此处不能使用后验概率。

enter image description here

2 个答案:

答案 0 :(得分:0)

这是可以预期的,因为您正在绘制5折中每一个的ROC曲线。

现在,如果您只想为分类器使用一个ROC,则可以使用5个训练有素的分类器来预测独立测试集的标签,或者可以对5折的后验概率求平均值并得到一个ROC。 / p>

答案 1 :(得分:0)

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

以上解释摘自MATLAB documentation