How to calculate accuracy for neural network algorithms?

4 Ansichten (letzte 30 Tage)
sandhya sandhya
sandhya sandhya am 14 Mär. 2019
Kommentiert: Osama Tabbakh am 15 Jul. 2019
How to calculate accuracy for neural network algorithms?
  1 Kommentar
Adam
Adam am 14 Mär. 2019
I'm pretty sure this is a topic with literally thousands of hits if you google it! Or are you asking specifically about a Matlab coded network, in which case showing some code helps.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Greg Heath
Greg Heath am 15 Mär. 2019
I normalize the mean-square-error
MSE = mse(error) = mse(output-target)
by the minimum MSE obtained when the output is a constant.
If the output is a constant, the MSE is minimized when that constant is
the average of the target. For a 1-D target
NMSE = mse(output-target) / mse(target-mean(target))
= mse(error) / var(target,1)
This is related to the R-square statistic (AKA as R2) via
Rsquare = R2 = 1 - NMSE
Both NMSE and R2 are contained in [0,1].
I have posted zillions of examples in both the NEWSGROUP and ANSWERS.
Just search using
Greg NMSE
Thank you for formally accepting my answer
Greg
  5 Kommentare
sandhya sandhya
sandhya sandhya am 25 Mär. 2019
Input signal with dimension 1*420 was my previous signal ,I forgot to modify the dimension.Now,the input signal with dimension 23*2560 and *.val is the inbuilt file of input signal.If you give command as plot(input),it displays the error.But ,if you give command as
plot(input.val), then it displays the output.Can you please add accuracy commands to my code.
input=load('project1.mat'); 23*2560
target=load('braineeg.mat');
hiddenLayerSize = 10;
net = feedforwardnet(hiddenLayerSize );
net.divideFcn = 'divideind';
net.divideParam.trainInd = 1:1792;
net.divideParam.valInd = 1793:2176;
net.divideParam.testInd = 2177:2560;
net = configure(net,input.val,target.val);
[net,tr] = train(net,input.val,target.val);
view(net)
output = net(input.val);
errors = gsubtract(target.val,output);
performance = perform(net,target.val,output);
view(net)
figure, plotperform(tr)
figure, plottrainstate(tr)
figure, plotconfusion(target.val,output)
[c,cm] = confusion(target.val,output);
figure, ploterrhist(errors)
trainTargets = target.val .* tr.trainMask{1};
valTargets = target.val .* tr.valMask{1};
testTargets = target.val .* tr.testMask{1};
trainPerformance = perform(net,trainTargets,output);
valPerformance = perform(net,valTargets,output);
testPerformance = perform(net,testTargets,output);
YPred = predict(net,input.val);
MSE=mse(output-target.val);
NMSE = MSE / mse(target-mean(target.val));
Osama Tabbakh
Osama Tabbakh am 15 Jul. 2019
But what I do not understand is in the way of R-square statistic you calculate with the consideration that the behavior between the target and the output is linear. But when the behavior is nonlinear, then you get high accuracy, although the network produces a large error.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Sequence and Numeric Feature Data Workflows finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by