Code pour la validation croisée
function [I,J] = crossValidationClass(trainvec,trainlab,nbFolders,Cs,Ks)
if nargin==5
precision = zeros(length(Cs),length(Ks));
else
error('Pb arguments : 5 arguments attendus');
end
rn = randperm(length(trainlab));
S = ceil(length(trainlab)/nbFolders);
for N = 1:nbFolders
selected = rn((S*(N-1))+1:min(end,N*S));
notselected = setdiff(rn,selected);
TV = trainvec(notselected,:);
TL = trainlab(notselected);
TTV = trainvec(selected,:);
TTL = trainlab(selected);
for i=1:length(Cs)
for j=1:length(Ks)
param = ['-s 0 -c ', num2str(Cs(i)), ' -g ', num2str(Ks(j))];
model = svmtrain(TL,TV, param);
[predict_label, accuracy] = svmpredict(TTL,TTV, model);
precision(i,j) = precision(i,j)+accuracy(1);
end
end
end
precision = precision./nbFolders;
A = find(precision == max(max(precision)));
[I,J] = ind2sub(size(precision),A);