求大神幫我分析一下為什么測(cè)試樣本的誤差太大
clear all;
p=[5 2 5 1 5 5 5 3 3 4 4 3;
4 1 5 1 5 5 3 3 3 4 4 3;
5 2 1 1 5 5 4 3 3 4 4 3;
4 1 3 4 5 4 5 4 4 4 5 4;
5 2 5 4 5 5 4 4 4 4 5 4;
6 2 5 4 5 5 3 4 4 4 5 4;
4 1 1 5 5 5 1 3 4 4 2 4;
5 2 1 5 5 5 1 3 4 4 2 4;
3 1 3 4 2 3 5 5 5 3 5 4;
4 1 5 4 2 4 4 5 5 3 5 4;
5 2 5 4 5 5 4 5 5 3 5 4;
4 1 3 2 5 4 4 3 3 4 4 4;
5 2 3 2 5 4 4 3 3 4 4 4;
4 1 3 2 5 4 2 3 3 3 3 3;
3 1 3 1 5 3 4 3 3 3 3 3;
5 2 5 3 5 5 1 3 4 4 4 3;
4 1 5 3 5 4 5 3 4 4 4 3;
5 2 3 1 3 5 2 3 4 4 4 3;
5 4 1 4 5 5 4 4 4 5 5 5;
5 1 5 4 5 5 2 4 4 5 5 5;
4 1 3 4 5 4 3 4 4 5 5 5;
4 1 3 3 5 4 4 2 2 4 3 3;
5 1 5 3 5 4 4 2 2 4 3 3;
5 2 1 5 5 5 4 2 3 4 3 4;
5 2 5 5 5 5 4 2 3 4 3 4;
4 1 1 3 5 4 1 4 4 5 3 4;
4 2 3 3 5 3 4 4 4 5 3 4;
5 1 5 3 5 5 2 4 4 5 3 4;
3 1 5 2 5 4 4 2 3 4 3 3;
5 2 5 3 5 5 4 4 3 4 5 4;
4 1 3 3 5 4 1 4 3 4 5 4;
5 2 3 3 5 5 3 5 4 4 5 4;
4 1 5 3 5 4 2 5 4 4 5 4;
5 2 3 3 5 5 1 5 4 4 5 4;
4 1 3 3 5 4 2 4 4 4 5 3;
5 2 5 2 5 5 1 3 5 3 3 3;
4 1 1 4 3 3 4 4 4 4 5 3;
4 2 3 2 5 4 3 4 4 4 5 3;
5 2 5 2 5 5 5 4 4 4 5 3;
2 1 3 3 3 2 2 4 3 4 4 5;
5 1 5 3 5 4 4 4 3 4 4 5;
3 1 3 2 3 2 4 4 5 3 4 2;
5 2 1 2 5 4 2 4 5 3 4 2;
3 1 1 3 3 3 2 5 4 4 3 4;
4 1 5 3 5 4 4 5 4 4 3 4;
5 1 1 2 5 4 2 4 4 3 5 3;
5 2 3 4 5 5 1 2 2 5 2 4;
5 1 5 2 5 4 2 5 5 4 4 3;
5 2 1 2 5 5 2 5 5 4 4 3;
2 1 1 2 4 2 3 5 5 4 4 3;
];
%定義訓(xùn)練樣本輸入向量
p=p'
t=[8903;8513;8333;11445;12486;
16920;7563;8000;11160;12829;
14674;9511;9346;8889;9715;
8788;10707;7888;12500;15910;
14734;6123;6635;8274;8647;9075;
10113;11172;7527;9455;9317;
14063;12228;12786;9301;7077;
9147;9694;10152;10364;11567
8182;8910;10931;10144;9314
6970;10680;9790;10715];
%定義訓(xùn)練樣本輸出向量
t=t'
[pn,minp,maxp]=premnmx(p);%對(duì)進(jìn)行訓(xùn)練的輸入樣本進(jìn)行歸一化處理
[tn,minP,maxP]=premnmx(t);%對(duì)進(jìn)行訓(xùn)練的輸出樣本進(jìn)行歸一化處理
s1=25;%隱含層神經(jīng)元的個(gè)數(shù)
net=newff(minmax(pn),[25,1],{'logsig','purelin'},'traingdm');
inputWeights=net.IW{1,1};
inputbias=net.b{1};
%當(dāng)前網(wǎng)絡(luò)層權(quán)值和閡值
layerWeights=net.LW{2,1};
layerbias=net.b{2};
pause
clc
%設(shè)置訓(xùn)練參數(shù)
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=5000;
net.trainParam.goal=1e-10;
pause
clc
%調(diào)用TRA工NBFG算法訓(xùn)練BP網(wǎng)絡(luò)
[net,tr]=train(net,pn,tn);
pause
clc
A=sim(net,pn)
B=postmnmx(A,minP,maxP);
%計(jì)算仿真誤差
E=A-tn
%期望誤差
MSE=mse(E)
pause
P2=[3 1 5 2 4 2 3 5 5 4 4 3;
4 1 3 3 5 4 2 4 4 4 4 4;
5 2 5 3 5 5 5 4 4 4 4 4;
5 2 5 5 5 5 4 3 2 4 3 4;
4 1 1 5 5 3 2 3 2 4 3 4;
5 2 3 5 5 5 3 2 3 3 3 3;
5 1 5 5 5 4 4 2 3 3 3 3;
4 1 5 2 5 4 2 4 4 5 4 4;
5 2 5 3 5 5 1 4 4 4 4 4;
];
p2=P2';
p2n=tramnmx(p2,minp,maxp);
a2n=sim(net,p2n);
a2=postmnmx(a2n,minP,maxP);
T2=[11195;9783;10385;8371;8064;7356;7806;10225;8911];
t2=T2';
E2=a2-t2;
%期望誤差
figure(1)
plot(B,' g')
hold on
plot(t,'-*');
legend('預(yù)測(cè)輸出','期望輸出')
title('BP網(wǎng)絡(luò)預(yù)測(cè)輸出','fontsize',12)
ylabel('函數(shù)輸出','fontsize',12)
xlabel('樣本','fontsize',12)
%預(yù)測(cè)誤差
error=A-tn;
figure(2)
plot(error,'-.*k');
title('BP網(wǎng)絡(luò)預(yù)測(cè)誤差','fontsize',12);
ylabel('誤差','fontsize',12);
xlabel('樣本','fontsize',12);
figure(3)
plot((A-tn)./tn,'-.*k');
title('神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)誤差百分比');
figure(4)
plot(a2,'-ok');
hold on
plot(t2,'-.*k');
legend('預(yù)測(cè)輸出','實(shí)際輸出');
title('BP網(wǎng)絡(luò)預(yù)測(cè)輸出','fontsize',12);
ylabel('函數(shù)輸出','fontsize',12);
xlabel('樣本','fontsize',12);
figure(5)
plot(E2,'-.*k');
title('BP網(wǎng)絡(luò)預(yù)測(cè)誤差','fontsize',12);
ylabel('誤差','fontsize',12);
xlabel('樣本','fontsize',12);
figure(6)
plot((a2-t2)./t2,'-.*k');
title('神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)誤差百分比')
;
clc
echo off
![神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)誤差大]()
3.png
![神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)誤差大-1]()
untitled.png |