split data to train,test and validation

28 次查看(过去 30 天)
I want to split my data into train and test in a ratio of 70:30,further I want to split my train data into train and validation in a ratio of 60:10. I want 5 folds of such train,test and validation data combination but test data should be same in all 5 folds.
How can I solve this ?
Can any one help me.

回答(1 个)

Adam Danz
Adam Danz 2020-11-15
If you have the Statistics and Machine Learning toolbox, use cvpartition.
Otherwise, randperm to create indicies that separate the test and training sets.
  2 个评论
Adam Danz
Adam Danz 2020-11-16
For example, let's say I want to split up vector "data" into 70/30 training/test sets.
data = rand(1,1000);
trainIdx = randperm(numel(data), round(numel(data)*.7));
testIdx = find(~ismember(1:numel(data), trainIdx));
trainIdx and testIdx are indices of the 'data' vector without overlap. To confirm that,
isequal(sort([trainIdx,testIdx]), 1:numel(data))
ans = logical
1
The training set will roughly cover 70% while the test set will roughly cover 30%. To confirm that,
[numel(trainIdx)/numel(data), numel(testIdx)/numel(data)]
ans = 1×2
0.7000 0.3000

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by