how to create leave one out cross validation in matlab?
%说明：下面是我自己写的matlab代码，其实matlab有自带的交叉验证代码crossvalind， 见Chunhou Zheng师兄的Metasample Based Sparse Representation for Tumor提
This question already has an answer here:
I am still confused with my code. I tried to implement leave one out cross validation in matlab for classification. so in here . I take out one data from training become testing data. I already make a code in matlab. but Iam not sure it's correct because the result is wrong. can someone help me to correct it?? thank you very much.
this is my code :
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
this question edited Mar 16 '13 at 16:58 Parag S. Chandakkar 5,583 1 16 46 asked Mar 16 '13 at 15:55 user2157806 139 2 6 15
marked as duplicate by Shai, Charles Menguy, Stony, nsgulliver, Mia Clarke Mar 17 '13 at 11:12
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
This is what I usually use to create leave one out cross-validation.
[Train, Test] = crossvalind('LeaveMOut', N, M)
N will be the number of total samples you have in your training+testing set.
M=1 in your case. You can put this in a for loop.
Also, you can use random number generation to perform leave-one out crossvalidation without using predefined function.
this answer answered Mar 16 '13 at 16:57 Parag S. Chandakkar 5,583 1 16 46
Not the answer you're looking for? Browse other questions tagged matlab cross-validation or ask your own question.
- 4Matlab textread函数详解
- 5Matlab 线性拟合 & 非线性拟合