Clear Filters
Clear Filters

How can I improve prediction ability of the BP network?

1 view (last 30 days)
Hi! There are 55 sampels, 2 inputs and 1 output. The following BP network's predictions for training data are not accurate. How can I improve prediction ability of the BP network? Please help! Thanks
clc,clear
% samples
data=[ 550 50.9114 4.9195
550 53.9864 4.8926
550 56.3262 4.8658
550 58.5372 4.5436
550 59.9610 3.3356
525 46.3723 4.5638
525 50.6499 4.5705
525 52.6551 4.5638
525 53.6585 4.5168
525 54.0599 4.4899
525 55.1983 4.3624
525 56.7400 4.1007
525 57.6911 3.1812
500 42.2350 4.1678
500 47.3824 4.1141
500 49.3885 4.0604
500 52.0637 3.9597
500 54.0059 3.7248
500 54.6201 2.9664
475 38.7662 3.7584
475 43.1781 3.7248
475 45.1173 3.6711
475 47.5921 3.5638
475 50.0018 3.3557
475 50.6136 2.7383
450 34.8298 3.3423
450 37.0355 3.3356
450 40.7792 3.2886
450 43.9895 3.1678
450 45.7969 3.0000
450 46.3401 2.4899
400 28.0909 2.6376
400 31.3660 2.6376
400 33.3715 2.6107
400 35.9125 2.5436
400 37.9872 2.3826
400 38.5303 1.8792
350 19.5438 2.1477
350 24.2224 2.1544
350 27.0301 2.1208
350 29.2368 2.0604
350 31.1102 1.9463
350 31.7844 1.5973
300 14.3362 1.8054
300 19.3493 1.7852
300 21.4217 1.7651
300 23.4944 1.7181
300 25.2336 1.6376
300 26.5071 1.4228
250 11.1324 1.5369
250 15.6110 1.5101
250 17.2824 1.4832
250 18.3522 1.4631
250 19.2214 1.4430
250 21.8308 1.2819 ];
p=data(:,[1 3])';
t=data(:,2)';
% input data for interpolation
data1=[ 425 2.3000
425 2.3500
425 2.4000
425 2.4500
425 2.5000
425 2.5500
425 2.6000
425 2.6500
425 2.7000
425 2.7500
425 2.8000
425 2.8500
425 2.9000
425 2.9500
425 3.0000 ];
dataInterp=data1';
% input data for extrapolation
data2=[200 1.1000
200 1.1250
200 1.1500
200 1.1750
200 1.2000
200 1.2250
200 1.2500
200 1.2750
200 1.3500 ];
dataExtrap=data2';
[normInput,ps]=mapminmax(p);
[normTarget,ts]=mapminmax(t);
validatePercent=0.1;
testPercent=0.1;
[trainSamples,validateSamples,testSamples] = dividevec(normInput,normTarget,validatePercent,testPercent);
TF1 = 'tansig';
TF2 = 'logsig';
TF3 = 'purelin';
net=newff(normInput,normTarget,[10 10],{TF1,TF2,TF3},'trainbr');
net.trainParam.epochs=300;
net.trainParam.lr=0.01;
net.trainParam.goal=0.0001;
[net,tr] = train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);
normInterp=mapminmax('apply',dataInterp,ps);
normExtrap=mapminmax('apply',dataExtrap,ps);
normTrainOutput=sim(net,normInput);
normInterpOutput=sim(net,normInterp);
normExtrapOutput=sim(net,normExtrap);
TrainOutput=mapminmax('reverse',normTrainOutput,ts);
InterpOutput=mapminmax('reverse',normInterpOutput,ts);
ExtrapOutput=mapminmax('reverse',normExtrapOutput,ts);
figure(1)
% comparison of traning data and predictions
plot(TrainOutput,p(2,:),'o');
hold on
plot(t,p(2,:),'r*');
% interpolation
plot(InterpOutput,dataInterp(2,:),'o')
% extrapolation
plot(ExtrapOutput,dataExtrap(2,:),'o')

Answers (0)

Community Treasure Hunt

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

Start Hunting!