我遇到了Matlab的cvpartition函数问题。我想对数据集执行5倍交叉验证(用于分类),该数据集包含来自第1类(负数)的134个实例和来自第2类(正数)的19个实例。 使用5倍CV时,应该有类似4 - 4 - 4 - 4 - 3的正面实例,沿着5倍或接近分开(5 - 4 - 3 - 4 - 3也可以)。我做了30次重复的5倍CV,有时Matlab建立分区,如1 - 5 - 5 - 4 - 4甚至5 - 5 - 5 - 4 - 0,也就是说,在折叠上没有正面实例!这怎么可能,我该如何纠正?至少它应该保证这两个类总是在每个折叠中表示......
这在尝试计算PRecision,Recall,F-measure等时会给我带来问题......
LS
答案 0 :(得分:0)
您使用cvpartition
提供的分层交叉验证形式吗?
使用文档页面中描述的第二种语法,即c = cvpartition(group,'kfold',k)
而不是c = cvpartition(n,'kfold',k)
。这里group
是类标签的向量(或分类数组,字符串的单元格数组等),并将观察的选择分层为折叠,而不是将所有内容随机分组。