25 lines
858 B
Matlab
25 lines
858 B
Matlab
function [X_trn, y_trn, X_val, y_val, X_chk, y_chk] = split_data(data, ratios, seed)
|
|
%SPLITSET Splits the data-set to train, eval,check data
|
|
% Randomly split the data set according to ratios
|
|
%
|
|
|
|
% Argument check and default values
|
|
if nargin < 2 || isempty(ratios), ratios = [0.6 0.2 0.2]; end
|
|
if nargin == 2, rng(42, 'twister'); end
|
|
if nargin > 2, rng(seed,'twister'); end
|
|
|
|
N = size(data,1); % Scramble the set
|
|
idx = randperm(N);
|
|
|
|
Ntrn = round(ratios(1)*N); % Split positions
|
|
Nval = round(ratios(2)*N);
|
|
Itrn = idx(1:Ntrn);
|
|
Ival = idx(Ntrn+1:Ntrn+Nval);
|
|
Ichk = idx(Ntrn+Nval+1:end);
|
|
|
|
% Pick the data (in X and y)
|
|
X_trn = data(Itrn, 1:end-1); y_trn = data(Itrn, end);
|
|
X_val = data(Ival, 1:end-1); y_val = data(Ival, end);
|
|
X_chk = data(Ichk, 1:end-1); y_chk = data(Ichk, end);
|
|
|
|
end |