Bonjour,
je suis entrain de faire une classification multi-classe en utilisant SVM. Je cherche à trouver les meilleurs paramètre en utilisant la méthode K-folds crossvalidation. J'ai eu l'erreur suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
??? Index exceeds matrix dimensions.
 
Error in ==> corossvalid_method at 28
   TestingFoldSample=TestingSample(Indices==1,:);
Voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
clear all
clc
close all
%%load data
data=load('data_appsvm.mat')
xdata= (data.X)';
group= (data.y)';
%%
p=0.5
[Train, Test] =crossvalind('HoldOut', group, p)
TrainingSample=xdata(Train,:);
TrainingLabel=group(Train,1);
TestingSample=xdata(Test,:);
TestingLabel=group(Test,1);
% numclass=max(group);
% for i=1:numclass
%     for j=i+1:numclass
%         inij=(LrainninLabel==j) | (TrainingLabel==i);
%     TrainingSampleij=TrainingSample(inij,:);
%      TrainingLabelij=TrainingLabel(inij,:);
%      
%     
% end
%% kfold crossvalidation
numfolds=5
Indices = crossvalind('Kfold', TrainingLabel, numfolds)
for i=1:numfolds
   TestingFoldSample=TestingSample(Indices==1,:);
    TrainingFoldSample=TestingSample(:,Indices~=1);
    TraingFoldLabeL=TraingFoldLabeL(:,Indices~=1);
     SVMStruct = svmtrain(TrainingSample,TrainingLabel...
   ,' showplot',0,'kernel_function','rbf', 'rbf_Sigma', 0,5);
outLabel=svmclassify(svmStruct,TestingfoldSample,'showplot',true);
    end
MERCI