我仍然对我的代码感到困惑。我尝试在 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
这是我通常用来创建留一交叉验证的方法。
[Train, Test] = crossvalind('LeaveMOut', N, M)
Here, N
将是您的训练+测试集中的样本总数。M=1
在你的情况下。您可以将其放入 for 循环中。
此外,您可以使用随机数生成来执行留一交叉验证,而无需使用预定义函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)