Matlab 为什么crossvalind失败了?
我正在一个非常小的数据上使用交叉valind函数。。。然而,我观察到,它给了我同样的错误结果。这应该发生吗 我有MatlabR2012A,这是我的输出Matlab 为什么crossvalind失败了?,matlab,Matlab,我正在一个非常小的数据上使用交叉valind函数。。。然而,我观察到,它给了我同样的错误结果。这应该发生吗 我有MatlabR2012A,这是我的输出 crossvalind('KFold',1:1:11,5) ans = 2 5 1 3 2 1 5 3 5 1 5 请注意,没有集合4。。这是虫子吗?我希望每套至少有2个元素,但它给了我一个0。。。经常发生的情况是,值在集合中的分布不均匀。的帮助说明您使用的表单是:crossvalind(方法、组等)。在这种情况下,组
crossvalind('KFold',1:1:11,5)
ans =
2
5
1
3
2
1
5
3
5
1
5
请注意,没有集合4
。。这是虫子吗?我希望每套至少有2个元素,但它给了我一个0。。。经常发生的情况是,值在集合中的分布不均匀。的帮助说明您使用的表单是:crossvalind(方法、组等)
。在这种情况下,组是数据的类别标签。所以1:11作为第二个论点在这里是混乱的,因为它表明没有两个例子有相同的标签。我认为这是非常不寻常的,如果函数做了一些奇怪的事情,您不应该感到惊讶
我试着做:
numel(unique(crossvalind('KFold', rand(11, 1) > 0.5, 5)))
结果它可靠地给出了5
,这正是我所期望的;我的例子对应一个两类问题(我猜,作为一般规则,您可能需要类似numel(unique(group))的东西)
crossvalind('KFold', 11, 5);
crossvalind('LeaveMOut', 11, 1);
for leave_out=1:11
fold_number = (1:11) ~= leave_out;
<code here; where fold_number is 0, this is the leave-one-out example. fold_number = 1 means that the example is in the main fold.>
end