BP神经网络预测代码

更新时间:2023-11-10 02:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

x=[54167 55196 56300 57482 58796 60266 61465 62828 64653 65994 67207 66207 65859 67295 69172 70499 72538 74542 76368 78534 80671 82992 85229 87177 89211 90859 92420 93717 94974 96259 97542 98705 100072 101654 103008 104357 105851 107507

109300 111026 112704 114333 115823 117171 118517 119850 121121 122389 123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 134480 135030 135770 136460 137510]';

% 该脚本用来做NAR神经网络预测 % 作者:Macer程 lag=3; % 自回归阶数

iinput=x; % x为原始序列(行向量) n=length(iinput);

%准备输入和输出数据 inputs=zeros(lag,n-lag); for i=1:n-lag

inputs(:,i)=iinput(i:i+lag-1)'; end

targets=x(lag+1:end);

%创建网络

hiddenLayerSize = 10; %隐藏层神经元个数 net = fitnet(hiddenLayerSize);

% 避免过拟合,划分训练,测试和验证数据的比例 net.divideParam.trainRatio = 70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100;

%训练网络

[net,tr] = train(net,inputs,targets); %% 根据图表判断拟合好坏 yn=net(inputs); errors=targets-yn;

figure, ploterrcorr(errors) %绘制误差的自相关情况(20lags) figure, parcorr(errors) %绘制偏相关情况

%[h,pValue,stat,cValue]= lbqtest(errors) %Ljung-Box Q检验(20lags) figure,plotresponse(con2seq(targets),con2seq(yn)) %看预测的趋势与原趋势 %figure, ploterrhist(errors) %误差直方图 %figure, plotperform(tr) %误差下降线

%% 下面预测往后预测几个时间段 fn=7; %预测步数为fn。

f_in=iinput(n-lag+1:end)'; f_out=zeros(1,fn); %预测输出

% 多步预测时,用下面的循环将网络输出重新输入 for i=1:fn

f_out(i)=net(f_in); f_in=[f_in(2:end);f_out(i)]; end

% 画出预测图

figure,plot(1949:2013,iinput,'b',2013:2020,[iinput(end),f_out],'r')

本文来源:https://www.bwwdw.com/article/ea9v.html

Top