jthawking 发表于 2009-9-1 19:44

BP神经网络预测问题

以下是我写的一段BP神经网络预测的代码,模型建好后,不知怎样预测下一年的T值,哪位高手来指导下...
%X为原始输入数据
P=[727000 297.35  327.53  2658 6.31  68.3 15948 737  16316 583.89 1.96;
30619 325.00  390.51  2763 6.94  69.6 17130 789  18600 707.67 2.28;
33282 423.00  474.63  2801 5.73  69.7 17866 894  19886 861.88 2.32;
33689 467.57  569.55  2887 7.76  69.8 18961 1015 20249 941.99 2.38;
41020 538.17  616.25  2920 8.23  69.7 19688 1198 21626 1082.6 2.73;
43344 832.04  686.37  3495 8.87  68.3 24465 1361 23544 1373.4 2.89;
46030 941.94  788.15  3495 9.57  68.2 24814 1710 24941 1756.5 2.82;
53887 1095.13 969.1   4885 9.65  68.7 36149 2100 25936 2199.5 3.08;
59271 1250.64 1092.6  5376 10.11 69.2 43008 2314 26596 2625.4 3.56;
64507 1437.67 1176.1  6091 15.05 69.2 51946 2500 28494 3229.4 3.98;
70597 1671.29 1273.7  7305 16.81 69.2 65745 2614 29628 3744.7 4.98;
79221 1905.03 1345    8023 18.6  69.1 70346 2798 30063 3792.6 5.1;
78812 2207.88 927.16  8328 20.52 69.3 71088 2964 30904 3951.64 5.21]';
%为原始目标数据
T=;
%原始数据归一化
=premnmx(P);
=premnmx(T);
%设置网络隐单元的神经元数%建立相应的BP网络
net=newff(minmax(pn(:,1:13)),,{'tansig','purelin'},'trainlm');
%当前输入层权值和阈值
inputWeights=net.IW{1,1}
inputbias=net.b{1}
%当前网络层权值和阈值
layerWeights=net.LW{2,1}
layerbias=net.b{2}
net=init(net);
% 网络训练代数
net.trainParam.epochs=10000;
% 网络训练目标误差
net.trainParam.goal=0.000001;
% 网络训练动量系数
net.trainParam.mc = 0.9;   
% 网络学习速率
net.trainParam.lr=0.05;
%调用TRAINGDM算法训练BP网络
net=train(net,pn(:,1:13),tn(1:13));
t_sim=sim(net,pn);
t_sim=postmnmx(t_sim,mint,maxt)
E=t_sim-T
M=sse(E)
N=mse(E)
figure(1)
i=1:1:length(t_sim);
j=1:length(T);
plot(i+1995,t_sim,'r',j+1995,T,'bo')
legend('模拟数据','原始数据')
Xlabel('年份');Ylabel('数量')
title('BP神经网络')

追梦者 发表于 2009-9-5 20:45

看看O(∩_∩)O~

Rosierl 发表于 2009-9-6 17:02

狂谢Ing……

A123J 发表于 2009-11-12 13:16

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!      eeeeeeeee

泽泽 发表于 2009-11-18 17:23

这个问题我也正想问,你解决了没?

zhuangqg6855 发表于 2010-4-1 16:39

嗯,先看看再说!!!!!!!!!!!!!!!!!!!!

zerodingying 发表于 2012-2-4 15:54

感谢楼主,很不错的说。。。。。

123水无痕 发表于 2012-2-24 15:46

我也想知道……求高手指点

0йly_ 发表于 2012-8-31 17:48

如果你要预测的话,你可以先输入一个预测的值,P_test=[];out=sim(net,P_test')~~希望对你有用

0.9清1.8清2.7清 发表于 2012-9-1 18:06

厉害啊!楼主!!!!!牛!
页: [1] 2
查看完整版本: BP神经网络预测问题