How to use cross validation/ leave one out in algorithm
37 views (last 30 days)
Show older comments
How can I use cross validation/Leave one out in following example https://in.mathworks.com/help/deeplearning/ug/train-stacked-autoencoders-for-image-classification.html
0 Comments
Answers (1)
Pranav Verma
on 12 Aug 2020
Hi Chhavi,
The cvpartition(group,'KFold',k) function with k=n creates a random partition for leave-one-out cross-validation on n observations. Below example demonstrates the aforementioned function,
load('fisheriris');
CVO = cvpartition(species,'k',150); %number of observations 'n' = 150
err = zeros(CVO.NumTestSets,1);
for i = 1:CVO.NumTestSets
trIdx = CVO.training(i);
teIdx = CVO.test(i);
ytest = classify(meas(teIdx,:),meas(trIdx,:),...
species(trIdx,:));
err(i) = sum(~strcmp(ytest,species(teIdx)));
end
cvErr = sum(err)/sum(CVO.TestSize);
Alternatively, you can use cvpartition(n,'LeaveOut') leave-one-out cross-validation.
For further information about the cross-validation in MATLAB, please refer to the link: https://www.mathworks.com/help/stats/cvpartition.html
1 Comment
Chhavi Bharti
on 5 Feb 2021
Edited: Chhavi Bharti
on 5 Feb 2021
@Pranav Verma Hi pranav I tried this code. But this is randomly doing the partition. How cound i get an index for tested data?
fold=cvpartition(label,'LeaveOut');
cp=classperf(label);
confmat=0;
for k=1:size(label,2)
trainIdx=fold.training(k); testIdx=fold.test(k);
xtrainc=imgs(trainIdx); ytrainc=label(trainIdx);
xtestc=imgs(testIdx); ytestc=label(testIdx);
xTrainImages=xtrainc';
tTrain=ytrainc;
xTestImages=xtestc';
tTest=ytestc;
%%DNN model
[c,cm,ind,per]=confusion(tTest,y); % y is output of DNN model
end
See Also
Categories
Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!