How can I do a 80-20 split on datasets to obtain training and test datasets?

55 次查看(过去 30 天)
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!

采纳的回答

KSSV
KSSV 2018-3-15
Let P and T be your input and target sets.
PD = 0.80 ; % percentage 80%
Ptrain = P(1:round(PD*length(T)),:) ; Ttrain = T(1:round(PD*length(T))) ;
Ptest = P(round(PD*length(T)):end,:) ;Ttest = T(round(PD*length(T)):end) ;
  2 个评论
Chidiebere Ike
Chidiebere Ike 2018-3-15
编辑:Chidiebere Ike 2018-3-15
I tried the code, it says "undefined function or variable T"... I will appreciate if you describe the letter P, T and length ... How do I resolve this. ?

请先登录,再进行评论。

更多回答(2 个)

Akira Agata
Akira Agata 2018-3-15
编辑:Akira Agata 2018-3-15
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),:);

Munshida P
Munshida P 2020-1-14
This will help you.
[training,test] = partition(faceDatabase,[0.8 0.2]);

类别

Help CenterFile Exchange 中查找有关 Get Started with Statistics and Machine Learning Toolbox 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by