How to read result of sim using Patternnet ?

3 ビュー (過去 30 日間)
afef
afef 2017 年 6 月 28 日
コメント済み: Greg Heath 2017 年 7 月 3 日
I created neural network for binary classification , i have 2 classes and 9 features using an input matrix with a size of [9 981] and target matrix [1 981] . This is my code :
rng(0);
inputs = patientInputs;
targets = patientTargets;
[x,ps] = mapminmax(inputs);
t=targets;
trainFcn = 'trainbr';
% Create a Pattern Recognition Network
hiddenLayerSize =8;
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';
net.trainParam.max_fail=6;
% 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)
and when i tried to test the neural network with new data using
ptst2 = mapminmax('apply',tst2,ps);
bnewn = sim(net,ptst2);
I don't get the same values like the target i mean 0 or 1 however if i put test data with target 0 i have as a result of bnewn= 0.1835 and with data test having target 1 i got cnewn= 0.816. How can i read this results ? as i understand if it is >0.5 so target=1 else target=0
  4 件のコメント
afef
afef 2017 年 6 月 29 日
and for this part
and when i tried to test the neural network with new data using
ptst2 = mapminmax('apply',tst2,ps);
bnewn = sim(net,ptst2);
Because i applied mapminmax for the input i shouuld apply it for the new data before using sim
Greg Heath
Greg Heath 2017 年 7 月 3 日
You don't need the first equation.
net(newinput) and sim(net,newinput)
AUTOMATICALLY use MAPMINMAX as a default.
Hope this helps.
Greg

サインインしてコメントする。

採用された回答

Greg Heath
Greg Heath 2017 年 6 月 29 日
編集済み: Greg Heath 2017 年 6 月 30 日
For two class classifiers with scalar 0/1 targets
1. Use LOGSIG as the output function
2. The output class index is given by
outputclassindex = round(output)
or
outputclassindex = round(net(input))
3. You can use PURELIN as the output function.
However, that allows output to escape
the [ 0,1] constraint
Hope this helps.
Thank you for formally accepting this answer
Greg
  2 件のコメント
afef
afef 2017 年 6 月 29 日
what's the use of this ?
Greg Heath
Greg Heath 2017 年 6 月 30 日
See the revision of my answer.
Hope this helps.
Greg

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSequence 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