1

我正在尝试在交叉验证代码中使用 perfcurv。然而,在某些时候,测试数据集的所有成员都属于同一类 (0)。我的问题是二进制分类问题。因此会出现以下错误:

使用 perfcurve 时出错(第 368 行) 在真实类标签数组中发现的类少于两个。

loadsurfperframe_GIE_leave_one_out 错误(第 669 行)[x,y,t,AUC(i),OPTROCPT,SUBY,SUBYNAMES] = perfcurve(test_classes,ytest,1);

我应该怎么做才能解决这个问题?

4

2 回答 2

2

您应该始终在地面实况数据中提供这两个类别的样本。否则 purfcurve 将不起作用,您无法使用此功能。

当您的真实数据中没有两个类别时,您不能说什么是精确度和召回率,因此这根本不合逻辑。尽量避免所有真实数据都来自同一类的情况。

于 2014-09-27T11:14:26.090 回答
2

该函数perfcurve()计算接收器操作特征 (ROC)曲线,该曲线显示了二元分类问题的灵敏度1-特异性之间的权衡,即哪个阈值更佳。如果你只有 0 个样本是不可能确定在哪里放置阈值的。

在此处输入图像描述

此外,特异性定义为SEN = TP/T = TP/(TP+FN)。如果我们将负样本视为0,将正样本视为1,则您的数据没有任何正样本。因此,TP = 0意味着该值始终SEN=0独立于阈值。

于 2014-09-27T11:15:13.377 回答