how can divide the sample into two part (training and test) in Narnet
2 views (last 30 days)
Show older comments
By using Matlab code the divide function which I have employed is divideblock therefore I necessarily divided the sample into three part : training, validation and test.
How I can decomposed the sample inti only two parts (training and test), what's the code which I must employed instead 'divideblock'.
Thanks
0 Comments
Accepted Answer
Greg Heath
on 10 Jul 2015
close all, clear all, clc, tic
% help narnet
T = simplenar_dataset;
sizeT = size(T) % [ 1 100 ]
t = cell2mat(T);
[ O N ] = size(t) % [ 1 100 ]
minmaxt = minmax(t) % [ 0.16218 0.99991]
MSE00 = var(t',1) % 0.063306
MSE00a = var(t',0) % 0.063945
plot(t)
FD = 1:2, H = 10 % nonoptimal default
neto = narnet( FD , H ) % No semicolon
% divideFcn: 'dividerand'
% divideParam: .trainRatio, .valRatio, .testRatio
% divideMode: 'time'
neto.divideParam.valRatio = 0;
% The new defaults will be
newtestratio = 0.15 + ( 0.15/(0.7+0.15))*0.15 % 0.17647
newtrainratio = 0.70 + ( 0.70/(0.7+0.15))*0.15 % 0.82353
No = N - max(FD) % 98
Ntsto = round(newtestratio*No) % 17
Ntrno = No - Ntsto % 81
[ Xo, Xoi, Aoi, To ] = preparets( neto, {}, {}, T );
[ Oo No ] = size(To) % [ 1 98 ]
[ neto tro Yo Eo Xof Aof ] = train( neto, Xo, To, Xoi, Aoi );
tro = tro % No semicolon
% trainInd: [1x81 double]
% valInd: [1x0 double]
% testInd: [1x17 double]
% num_epochs: 313
% vperf: [1x314 double] NaN(1,314)
% val_fail: [1x314 double] zeros(1,314)
% best_perf: 4.3277e-10
% best_vperf: NaN
% best_tperf: 2.0093e-09
1 Comment
Greg Heath
on 10 Jul 2015
Edited: Greg Heath
on 10 Jul 2015
WHOOPS!
Did you want strictly 80/20 instead of the default 0.82353/0.17647?
I'll try assigning them and see what happens.
neto.divideParam.valRatio = 0;
neto.divideParam.trainRatio = 80;
neto.divideParam.testRatio = 20;
I get
delay/train/val/test = 2/78/0/20
Agreeing with
Ntst = round(0.20*98) = 20
Ntrn = 98-20 = 78
More Answers (1)
the cyclist
on 16 May 2015
Notice the syntax of divideblock:
divideblock(Q,trainRatio,valRatio,testRatio)
If you only want training and test sets, then use something like
divideblock(Q,0.8,0,0.2)
3 Comments
Greg Heath
on 24 May 2015
Why don't you want a validation set?
What MATLAB version?
What training function?
Really need to see more code.
See Also
Categories
Find more on Sequence and Numeric Feature Data Workflows in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!