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

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

问题描述:

我仍然与我的代码混淆。我试图在matlab中实现离开一个交叉验证以进行分类。所以在这里。我从培训中拿出一个数据成为测试数据。我已经在matlab中做了一个代码。但Iam不确定它是正确的,因为结果是错误的。有人可以帮我纠正它吗?非常感谢你。如何在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 

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

​​

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

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