0
点赞
收藏
分享

微信扫一扫

bp网络实现预测


本例题采用了一个线性序列,在实际应用中可以应用不同的数据进行预测,例如每天的温度,产量等。

具体实现如下:

 

clear
%本例题采用了一个线性序列,在实际应用中可以应用不同的数据进行预测,例如每天的温度,产量等
% day=[1,2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ...
% 20 ,21, 22 ,23, 24 ,25 ,26, 27, 28 ,29 ,30,...
% 31 ,32, 33, 34, ];
%%本例题采用了一个sin序列
Test=1:1:34;
day=sin(Test);
dayhistory=day(1:30);%取其中前三十个数据作为历史数据样本
dayhismod=reshape(dayhistory,5,6);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
dayday=day(1:25);% 取其中的前25个
daypost=day(6:30);%取其中的随后25个
p=reshape(dayday,5,5);% 将前25个数据分为5行5列矩阵作为网络的训练输入样本
t=reshape(daypost,5,5); %将随后的25个分为5行5列矩阵作为网络的目标输出向量
daylast=day(26:30);
h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
r=6:30;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 新建bp网络
net=newff(minmax(p),[5,5],{'purelin' 'purelin'},'trainlm');
y1=sim(net,p);
net.trainParam.epochs=2000; % 训练次数
nettrainParam.goal=1e-3; % 误差期望值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%训练网络
[net,tr,Y,E]=train(net,p,t);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 网络测试
y21=sim(net,p);
y2=reshape(y21,1,25);
clf
plot(r,y2,'b-^')
hold on
plot(1:34,day,'r-v')
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 预测
y3=sim(net,h3);
plot(31:35,y3,'-*')
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 给出说明性文字和图例
title('神经网络训练结果');
xlabel('序列');
ylabel('仿真输出结果');
legend('仿真模拟值','实际值','神经网络预测值','Location','NorthWest');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 绘制误差曲面
figure;
x=1:5;
y=1:5;
plot3(x,y,E(x,y))

举报

相关推荐

0 条评论