如何在MATLAB中留出一个交叉验证? [重复](how to create leave one

2019-07-21 18:44发布

这个问题已经在这里有一个答案:

  • 留出一个交叉验证算法的MATLAB 1个回答

我仍然困惑着我的代码。 我试图执行留出一个交叉验证在MATLAB进行分类。 所以在这里。 我拿出从训练成为测试数据的一个数据。 我已经做在MATLAB代码。 但是荫不知道这是正确的,因为结果是错误的。 有人可以帮我纠正? 非常感谢你。

这是我的代码:

clc    
[C,F] = train('D:\fp\',...
    'D:\tp\');


for i=size(F,1)
testVal = i;      
trainingSet = setdiff(1:numel(C), testVal); % use the rest for training

Ctrain = C(trainingSet,:);
Ftrain = F(trainingSet,:);
test= F(testVal,:);
svmStruct = svmtrain(Ftrain,Ctrain,'showplot',true,'Kernel_Function','rbf');
result_class(i)= svmclassify(svmStruct,test,'showplot',true);
ax(i)=result_class;
i=i+1;
end

Answer 1:

这是我平时用它来创建留出一个交叉验证。

[Train, Test] = crossvalind('LeaveMOut', N, M)

在这里, N将是你在训练+测试集共有的样本数。 M=1 ,你的情况。 你可以把这个在for循环中。

此外,您还可以使用随机数生成不使用预定义功能执行留一出交叉验证。



文章来源: how to create leave one out cross validation in matlab? [duplicate]