How can I do a 80-20 split on datasets to obtain training and test datasets?
Show older comments
I tried [training, test] = partition (faceDatabase, [0.8, 0.2]); but it gives me error. Can anyone help? Are there ways to do this manually? I can't find a function for this!
Accepted Answer
More Answers (2)
Akira Agata
on 15 Mar 2018
Edited: Akira Agata
on 15 Mar 2018
If you want to randomly select 80% of your data as training dataset, please try following:
PD = 0.80 ; % percentage 80%
% Let P be your N-by-M input dataset
% Solution-1 (need Statistics & ML Toolbox)
cv = cvpartition(size(P,1),'HoldOut',PD);
Ptrain = P(cv.training,:);
Ptest = P(cv.test,:);
Another possible solution:
% Solution-2 (using basic MATLAB function)
N = size(P,1);
idx = randperm(N);
Ptrain = P(idx(1:round(N*PD)),:);
Ptest = P(idx(round(N*PD)+1:end),:);
1 Comment
Chidiebere Ike
on 15 Mar 2018
Munshida P
on 14 Jan 2020
This will help you.
[training,test] = partition(faceDatabase,[0.8 0.2]);
Categories
Find more on Discriminant Analysis 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!