how can divide the sample into two part (training and test) in Narnet
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
coqui
am 16 Mai 2015
Bearbeitet: Greg Heath
am 10 Jul. 2015
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 Kommentare
Akzeptierte Antwort
Greg Heath
am 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 Kommentar
Greg Heath
am 10 Jul. 2015
Bearbeitet: Greg Heath
am 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
Weitere Antworten (1)
the cyclist
am 16 Mai 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 Kommentare
Greg Heath
am 24 Mai 2015
Why don't you want a validation set?
What MATLAB version?
What training function?
Really need to see more code.
Siehe auch
Kategorien
Mehr zu Sequence and Numeric Feature Data Workflows finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!