how can divide the sample into two part (training and test) in Narnet

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

 Réponse acceptée

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 commentaire

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

Connectez-vous pour commenter.

Plus de réponses (1)

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 commentaires

I have used these code but does not work
net.divideFcn = 'divideblock'; net.divideMode = 'time'; % Divide up every value
net.divideParam.trainRatio = 80/100;
net.divideParam.valRatio = 0/100;
net.divideParam.testRatio = 20/100;
Why don't you want a validation set?
What MATLAB version?
What training function?
Really need to see more code.
Hi Greg,
I have data running from 2009 to 2013. I want decompose the data into training data (2009-2012) and only 2013 for test, how I can put the code.
The model is narnet (matlab2013) trained with levenberg marquardt.
By using divideblock we must divide into three groups but I need only train and test.
how I can do it?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Deep Learning Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by