如何在matlab中创建一个交叉验证?

时间:2013-03-16 15:55:53

标签: matlab cross-validation

我仍然对我的代码感到困惑。我试图在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

1 个答案:

答案 0 :(得分:1)

这就是我通常用来创建一个交叉验证的方法。

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

此处,N将是您在培训+测试集中拥有的总样本数。在你的情况下M=1。你可以把它放在for循环中。

此外,您可以使用随机数生成来执行留一交叉验证,而无需使用预定义函数。