如何在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交叉验证,而无需使用预定义的函数。