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

8 Ansichten (letzte 30 Tage)
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!

Akzeptierte Antwort

KSSV
KSSV am 15 Mär. 2018
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 Kommentare
Chidiebere Ike
Chidiebere Ike am 15 Mär. 2018
Bearbeitet: Chidiebere Ike am 15 Mär. 2018
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. ?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Akira Agata
Akira Agata am 15 Mär. 2018
Bearbeitet: Akira Agata am 15 Mär. 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 Kommentar
Chidiebere Ike
Chidiebere Ike am 15 Mär. 2018
Solution 1 gives an error message.. Error in cvpartition CV.Impl = internal.stats.cvpartitionInMemoryImpl(varargin{:});

Melden Sie sich an, um zu kommentieren.


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

Kategorien

Mehr zu Text Analytics Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by