用matlab神经网络进行需水量预测有28年的数据6235 6897 7012 7023 7289 7896 7589 7986 7998 8012 8123 8456 8498 8654 8723 8923 10093 11626 11536 11276 9606 8769 8068 7541 9717 8886 9287 9710需要用神经网络进行预测,进行拟合
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 23:45:02
用matlab神经网络进行需水量预测有28年的数据6235 6897 7012 7023 7289 7896 7589 7986 7998 8012 8123 8456 8498 8654 8723 8923 10093 11626 11536 11276 9606 8769 8068 7541 9717 8886 9287 9710需要用神经网络进行预测,进行拟合
用matlab神经网络进行需水量预测
有28年的数据6235 6897 7012 7023 7289 7896 7589 7986 7998 8012 8123 8456 8498 8654 8723 8923 10093 11626 11536 11276 9606 8769 8068 7541 9717 8886 9287 9710
需要用神经网络进行预测,进行拟合对比分析.因为没学过MATLAB对此一窍不通,任务又需要,所以请大侠帮忙,如何实现.
对比是与原来的这些数据对比
用matlab神经网络进行需水量预测有28年的数据6235 6897 7012 7023 7289 7896 7589 7986 7998 8012 8123 8456 8498 8654 8723 8923 10093 11626 11536 11276 9606 8769 8068 7541 9717 8886 9287 9710需要用神经网络进行预测,进行拟合
clear;
%用bp网络,首先对数据分组:
%假设从当年起后3年的需水量和前十年有关.即第十一,十二,十三年的需水量由第一年到第十年确定,第十二,十三,十四年的需水量由第二年到第十一年确定...
%则:输入量
p=[6235 6897 7012 7023 7289 7896 7589 7986 7998 8012;
6897 7012 7023 7289 7896 7589 7986 7998 8012 8123 ;
7012 7023 7289 7896 7589 7986 7998 8012 8123 8456;
7023 7289 7896 7589 7986 7998 8012 8123 8456 8498;
7289 7896 7589 7986 7998 8012 8123 8456 8498 8654;
7896 7589 7986 7998 8012 8123 8456 8498 8654 8723;
7589 7986 7998 8012 8123 8456 8498 8654 8723 8923;
7986 7998 8012 8123 8456 8498 8654 8723 8923 10093;
7998 8012 8123 8456 8498 8654 8723 8923 10093 11626;
8012 8123 8456 8498 8654 8723 8923 10093 11626 11536;
8123 8456 8498 8654 8723 8923 10093 11626 11536 11276;
8456 8498 8654 8723 8923 10093 11626 11536 11276 9606;
8498 8654 8723 8923 10093 11626 11536 11276 9606 8769 ;
8654 8723 8923 10093 11626 11536 11276 9606 8769 8068;
8723 8923 10093 11626 11536 11276 9606 8769 8068 7541;
8923 10093 11626 11536 11276 9606 8769 8068 7541 9717];
%对应输出量:
t=[8123 8456 8498;
8456 8498 8654;
8498 8654 8723;
8654 8723 8923;
8723 8923 10093;
8923 10093 11626;
10093 11626 11536;
11626 11536 11276 ;
11536 11276 9606;
11276 9606 8769;
9606 8769 8068;
8769 8068 7541;
8068 7541 9717;
7541 9717 8886;
9717 8886 9287;
8886 9287 9710;];
%对数据进行归一化(即缩放到0,1之间),P,T分别为归一化后的输入量和输出量
for i=1:16
P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
for i=1:16
T(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:)));
end
%选取前14组数据训练网络,第15,16组用来测试训练好的网络.
PP=[P(1,:);P(2,:);P(3,:); P(4,:);P(5,:);P(6,:);P(7,:);
P(8,:);P(9,:);P(10,:); P(11,:);P(12,:);P(13,:);P(14,:)];
Ptest=[P(15,:);P(16,:)]';
TT=[T(1,:);T(2,:);T(3,:); T(4,:);T(5,:);T(6,:);T(7,:);
T(8,:);T(9,:);T(10,:); T(11,:);T(12,:);T(13,:);T(14,:)];
Ttest=[T(15,:);T(16,:)]'
PP=PP'
TT=TT'
%s是隐层单元数,用for循环试试3种隐层
s=[10,15,18];
res=1:3;
for i=1:3
net=newff(minmax(PP),[s(i),3],{'tansig','logsig'},'trainlm');
net.trainParam.epochs=500;
net.trainParam.goal=0.0001;
net=train(net,PP,TT);
y=sim(net,PP);
error=y-TT;
res(i)=norm(error);
end
%用Ptest测试训练好的网络效果.
Y=sim(net,Ptest)
Ttest =
1.0000 0
0 0.4867
0.4826 1.0000
Y =
0.0000 0.0000
0.9974 0.9990
0.9985 1.0000
对比Ttest和Y,如果相似,则预测效果好,呃,很明显,我这个网络效果很糟糕...你将数据重新分组,数据分组有两个参数,即今年之前m年影响今年之后N年.像上面我是之前10年决定之后3年,看来不行...