Why do i have NAN values in the confusion matrix only in the validation test?
4 views (last 30 days)
Show older comments
I wanted to create neural network for binary classification for dataset with input matrix with size [9 981] and output matrix [1 981]and this is the code that i used
rng('default');
inputs = patientInputs;
targets = patientTargets;
x = mapminmax(inputs);
t=targets;
trainFcn = 'trainbr';
% Create a Pattern Recognition Network
hiddenLayerSize =10;
net = patternnet(hiddenLayerSize,trainFcn);
net.divideFcn = 'dividerand'; % Divide data randomly
net.divideMode = 'sample'; % Divide up every sample
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
net.performFcn = 'mse';
% Choose Plot Functions
% For a list of all plot functions type: help nnplot
net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ...
'plotconfusion', 'plotroc'};
% Train the Network
net= configure(net,x,t);
[net,tr] = train(net,x,t);
y = net(x);
e = gsubtract(t,y);
performance = perform(net,t,y)
tind = vec2ind(t);
yind = vec2ind(y);
percentErrors = sum(tind ~= yind)/numel(tind);
% Recalculate Training, Validation and Test Performance
trainTargets = t .* tr.trainMask{1};
valTargets = t .* tr.valMask{1};
testTargets = t .* tr.testMask{1};
trainPerformance = perform(net,trainTargets,y)
valPerformance = perform(net,valTargets,y)
testPerformance = perform(net,testTargets,y)
% View the Network
view(net)
At first i used the default trainFcn 'trainscg' then i tried to use 'trainbr' the accuracy improved but i got NAN values in the confusion matrix only in the validation test as you can see it here
Can anyone help me please?
0 Comments
Accepted Answer
Greg Heath
on 28 Jun 2017
MATLAB doesn't allow a validation set for trainbr because they think it isn't necessary for generalization.
Although they are correct, I have found in the literature that using BOTH trainbr and a validation set is better in most cases.
Although you cannot force trainbr to have validation set, I think you can work around it using trainlm and/or trainscg with regularization.
Hope this helps
Thank you for formally accepting my answer
Greg
PS: I don't remember details.
3 Comments
muhammed shames
on 5 Nov 2018
Hello sir can you explain me how you got rid of that NaN values ? Ive been working on it but it didnt work by just setting the max fail to 6 !
Ismail Cem Tüzün
on 20 Feb 2023
when I set max fail to 6 even 10, it worked. I also re-assigned my epoch number. May be it also affected the system, not sure. Thanks for the information, btw
More Answers (0)
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!