0

我在使用 Matlab 的 cvpartition 函数时遇到问题。我想对一个数据集执行 5 折交叉验证(用于分类),该数据集有来自第 1 类(负)的 134 个实例和来自第 2 类(正)的 19 个实例。对于 5 倍 CV,一个应该有类似 4 - 4 - 4 - 4 - 3 个正实例沿着 5 倍或接近分区(5 - 4 - 3 - 4 - 3 也可以)。我对 5 倍 CV 进行了 30 次重复,有时 Matlab 会构建像 1 - 5 - 5 -4 - 4 甚至 5 - 5 - 5 - 4 - 0 这样的分区,也就是说,折叠中没有正面实例!这怎么可能,我该如何纠正?至少它应该保证这两个类总是在每个折叠中都有代表......

这在尝试计算 PRecision、Recall、F-measure 等时给我带来了问题......

LS

4

1 回答 1

0

您是否使用提供的交叉验证的分层形式cvpartition

使用文档页面中描述的第二种语法,即c = cvpartition(group,'kfold',k)而不是c = cvpartition(n,'kfold',k). 这group是一个类标签的向量(或分类数组、字符串元胞数组等),它将观察的选择分层为折叠,而不是仅仅将所有内容随机分成组。

于 2013-06-11T11:25:31.847 回答