MATLAB Answers


Neural Network Data division

Asked by Arijit
on 13 Dec 2011

Hi all,

I am trying to build up a NN model in Matlab 2008a.

I am dividing the dataset using the following command

net.divideParam.trainRatio = 0.6;

net.divideParam.valRatio = 0.2;

net.divideParam.testRatio = 0.2;

Now after training, I want to have those datasets (_i.e._ target and network output only) that were used for training, testing and validation in three different files so that I can manually do the regression analysis. Can anyone please suggest the suitable command to so this.

Thanks for your kind help.


Greg Heath
on 13 Dec 2011

What do you mean by "regression analysis" ?

What quantities do you want that are not available via the output of TRAIN ?


on 13 Dec 2011

Hi Greg,

By regression analysis, I want to mean that after performing TRAIN, I can see the plots of target vs output for TRAIN, TEST and VALIDATION datasets. I guess those values (target and output) are getting stored at "tr". Now I want to have those values extracted from "tr" to three different files and plot that graph manually. I want to do it just because definitely there will be some values for "train dataset" which will be out of the user defined performance limit. To delete or identify those, I want to have this information.

Thanks for your information and help. Looking forward for your valuable comment.


on 14 Dec 2011

Hi Greg,
I got the answer of my previous question. If my output is "Y", then we can get the train output from "Y(tr.trainInd)".



No products are associated with this question.

1 Answer

Answer by Luca Cavazzana on 13 Dec 2011
 Accepted answer

after calling train you get as second input argument the training record tr. The attribute testMask{1} contains a matrix (the same size of the input matrix) whose value are 1 if the element is in the training set, NaN otherwise. You can find indices this way:

[net, tr] = train(net, input, targets);
testInd = find(~isnan(tr.testMask{1}(1,:)));
inputTest = input(:,testInd);
targetTest = target(:,testInd);

In the same way, trainMask{1} and valMask{1} gives you the training and validation mask.

edit: instead of the whole testInd=find(...) thing, I forgot there's already the attribute tr.testInd

  1 Comment

on 14 Dec 2011

Thanks Luca.
I did using tr.trainInd and got the desired output.


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today