我在尝试在一个交叉验证代码中使用perfcurv。然而,在某个时刻,测试数据集的所有成员都属于同一类(0)。我的问题是一个二分类问题。因此,出现了以下错误:
使用perfcurve时出错(行368):在真实类别标签数组中发现少于两个类别。
在loadsurfperframe_GIE_leave_one_out中出错(行669):[x,y,t,AUC(i),OPTROCPT,SUBY,SUBYNAMES] = perfcurve(test_classes,ytest,1);
我应该如何解决这个问题?
回答:
函数perfcurve()
计算接收者操作特征(ROC)曲线,该曲线显示了二分类问题中敏感性和1-特异性之间的权衡,即哪个阈值更优。如果你只有0样本,就无法确定阈值应该设置在哪里。
此外,特异性定义为SEN = TP/T = TP/(TP+FN)
。如果我们将负样本视为0
,正样本视为1
,你的数据中没有任何正样本。因此,TP = 0
意味着无论阈值如何,值总是SEN=0
。