matlab程序 BP神经网络预测 程序如下:

matlab程序 BP神经网络预测 程序如下:,第1张

P=[。。。]输入T=[。。。]输出

% 创建一个新饥烂的前向神经网络

net_1=newff(minmax(P),[10,1],,'traingdm')

% 当前输入层权值和阈值

inputWeights=net_1.IW

inputbias=net_1.b

% 当烂哗漏前网络层权值和阈值

layerWeights=net_1.LW

layerbias=net_1.b

应该没问题吧。芦滚

问题:

1:隐含层的节点数应该小于训练样本数(你这里et_1=newff(minmax(P),[150,1],{'tansig','purelin'},'traingdm')中的150远远大于训练样本数10个(1989:2003))

2:如果把时间当做样本输入的话,这是不太合适的。如果那样还不如用时间序列求解。而且在现在的这个程序中还会会出现ynhj88311说的那种情况。(这里还应该做归一化处理更好)

clc

clear

date=1988:2003

P0=[ 0.1093 0.1110 0.1127 0.1141 0.1154 0.1164 0.1171 0.1175  0.1178 0.1179 0.1179 0.1178 0.1179 0.1180 0.1182 0.1186]% 样本数据这里数据在0~1之间就不用归一化处理了

plot(date,P0,'b+') %原数据随时间变化的曲线

hold 迟汪on

title('原数据曲线图')

for i=1:13

P(:,i)=P0(i:i+2)

T(:,i)=P0(i+3)

end

%  创建一个新的前向神经网络

net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')

%  设圆核置训橘旦掘练参数

net_1.trainParam.show = 1

net_1.trainParam.lr = 0.2

net_1.trainParam.mc = 0.9

net_1.trainParam.epochs=10000000

net_1.trainParam.goal = 1e-10

%  调用 TRAINGDM算法训练 BP 网络

[net_1,tr]=train(net_1,P,T)

%  对 BP 网络进行仿真

A = sim(net_1,P)

E = T - A

MSE=mse(E)

P2001=sim(net_1,[0.1179 0.1178 0.1179 ]')

P2002=sim(net_1,[0.1178 0.1179 0.1180 ]')

P2003=sim(net_1,[0.1179 0.1180 0.1182 ]')

p2=P0(14:16)'

yuce2004=sim(net_1,p2)

figure

Y=[A(1,:),P2001,P2002,P2003,yuce2004]

Date=[date,2004]

plot(Date,Y,'r+')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12453537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存