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

2 次查看(过去 30 天)
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

采纳的回答

Greg Heath
Greg Heath 2015-7-10
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 个评论
Greg Heath
Greg Heath 2015-7-10
编辑:Greg Heath 2015-7-10
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

请先登录,再进行评论。

更多回答(1 个)

the cyclist
the cyclist 2015-5-16
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 个评论
Greg Heath
Greg Heath 2015-5-24
Why don't you want a validation set?
What MATLAB version?
What training function?
Really need to see more code.
coqui
coqui 2015-7-5
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?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Sequence and Numeric Feature Data Workflows 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by