-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstratified_split_scale.m
More file actions
40 lines (33 loc) · 1.66 KB
/
stratified_split_scale.m
File metadata and controls
40 lines (33 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
%% Split - Preprocess Data
function [trnData,chkData,tstData] = stratified_split_scale(data,preproc)
%idx=randperm(length(data));
c1 = cvpartition(data(:, end),'Holdout',0.4) ;
trnIdx = c1.training; %logical array
val_testIdx = c1.test; %logical array
val_test_data = data(val_testIdx, 1:end);
c2 = cvpartition(val_test_data(:, end),'Holdout',0.5) ;
valIdx = c2.training; %logical array
tstIdx = c2.test; %logical array
trnX=data(trnIdx,1:end-1);
valX=val_test_data(valIdx,1:end-1);
tstX=val_test_data(tstIdx,1:end-1);
switch preproc
case 1 %Normalization to unit hypercube
xmin=min(trnX,[],1);
xmax=max(trnX,[],1);
trnX=(trnX-repmat(xmin,[length(trnX) 1]))./(repmat(xmax,[length(trnX) 1])-repmat(xmin,[length(trnX) 1]));
valX=(valX-repmat(xmin,[length(valX) 1]))./(repmat(xmax,[length(valX) 1])-repmat(xmin,[length(valX) 1]));
tstX=(tstX-repmat(xmin,[length(tstX) 1]))./(repmat(xmax,[length(tstX) 1])-repmat(xmin,[length(tstX) 1]));
case 2 %Standardization to zero mean - unit variance
mu=mean(data,1);
sig=std(data,1);
trnX=(trnX-repmat(mu,[length(trnX) 1]))./repmat(sig,[length(trnX) 1]);
valX=(trnX-repmat(mu,[length(valX) 1]))./repmat(sig,[length(valX) 1]);
tstX=(trnX-repmat(mu,[length(tstX) 1]))./repmat(sig,[length(tstX) 1]);
otherwise
disp('Not appropriate choice.')
end
trnData=[trnX data(trnIdx,end)];
chkData=[valX val_test_data(valIdx,end)];
tstData=[tstX val_test_data(tstIdx,end)];
end