• 大小: 5KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: 其他
  • 标签: 神经网络  

资源简介

先加载excel文件中的数据,再训练,最后预测出未来几步的数据走势。预测步数可以自己设定。文本和程序注释有详细说明。

资源截图

代码片段和文件信息

%% 清空环境变量
clc;
clear all
close all
nntwarn off;
%% 数据载入
aa=xlsread(‘test.xls‘‘sheet3‘‘a1:a41‘);
lag=4;    % 自回归阶数
iinput=aa; % x为原始序列(行向量)
n=length(iinput);
%准备输入和输出数据
inputs=zeros(lagn-lag);%产生log行n-log列的元素为0的矩阵因为是两阶的。所以是两个数据预测第三个数据。
for i=1:n-lag
    inputs(:i)=iinput(i:i+lag-1)‘;
end
targets=aa(lag+1:end);
targets=targets‘;%将目标矩阵转置,与inputs矩阵对应使两个矩阵列数相等(与原始数据是横还是列数据有关)
%创建网络
hiddenlayerSize = 10; %隐藏层神经元个数
net = fitnet(hiddenlayerSize);%以隐藏层神经元的个数来建立网络
% 避免过拟合,划分训练,测试和验证数据的比例
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

%训练网络
[nettr] = train(netinputstargets);%trian训练函数,trian(网络结构,输入数据,对应的目标数据)
%% 根据图表判断拟合好坏
yn=net(inputs);
errors=targets-yn;
figure ploterrcorr(errors)                      %绘制误差的自相关情况(20lags)
figure parcorr(errors)                          %绘制偏相关情况
%[hpValuestatcValue]= lbqtest(errors)         %Ljung-Box Q检验(20lags)
figureplotresponse(con2seq(targets)con2seq(yn)) %看预测的趋势与原趋势
%figure ploterrhist(errors)                      %误差直方图
%figure plotperform(tr)                          %误差下降线
%% 下面预测往后预测几个时间段
fn=10;  %比如预测步数为fn。
f_in=iinput(n-lag+1:end);%原来给出的数据末尾几个数据作为预测的开始输入,具体是几个数据与自回归阶数log有关,log是几就以多少个末尾数据作为预测的输入。f_in=iinput(n-lag+1:end)‘;加不加转置与所给的数据是横还是列有关
f_out=zeros(1fn);  %预测输出
% 多步预测时,用下面的循环将网络输出重新输入

for i=1:fn
    f_out(i)=net(f_in);
    f_in=[f_in(2:end);f_out(i)];
end
% 画出预测图
figureplot(1:niinput‘b-s‘n:n+fn[iinput(end)f_out]‘r-d‘)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1872  2016-08-23 09:54  神经网络训练预测\Neizupre.m

     文件      19968  2016-08-23 09:49  神经网络训练预测\test.xls

     文件         52  2016-08-23 10:34  神经网络训练预测\使用说明.txt

     目录          0  2016-08-23 10:34  神经网络训练预测

----------- ---------  ---------- -----  ----

                21892                    4


评论

共有 条评论