利用深度学习生成数据的时间序列预测(Matlab代码实现)

简介: 利用深度学习生成数据的时间序列预测(Matlab代码实现)

💥1 概述

数据分析研究目前仍是行业热点,相关学者从数据分析关键技术中的异常检测、入侵检测、时间序列预测等角度展开研究。然而,现有研究在时间序列预测方面存在诸多局限性,没有考虑到复杂且规模庞大数据的计算消耗,忽视了非平稳数据的时间协变量漂移问题,缺乏一个实时、精准且泛化性能强的预测模型。


本文研究了使用不同的人工神经网络(即LSTM和GRU)对随机时间模型进行时间序列预测和预测的紧密程度。给定数据集包括辐照数据集和发电数据集,其基本上分别包含由传感器检测到的辐照度值和以(kw/h)为单位的发电值。


这些数据集包含从2018年12月到2019年11月的所有12个月的数据,每15分钟记录一次数据。


该项目的主要目标是找出最适合预测未来两天发电数据的ANN架构,从任何给定的一天开始,间隔为15、30、45、60分钟。


整个项目是通过matlab编程实现的。


📚2 运行结果

🎉3 参考文献

[1]王素. 基于深度学习的时间序列预测算法研究与应用[D].电子科技大学,2022.DOI:10.27005/d.cnki.gdzku.2022.003088.

👨‍💻4 Matlab代码

主函数部分代码:

load Generation_data.mat;                                                           % load data from hard drive to workspace
IrradiationData=readtable('Irradiation data.xlsx');
TrainIp=table2array(IrradiationData(1028:2927,4));                          % read data from workspace
TestIp=table2array(generationdata_table_dt(1005:2904,4));
TestIp(isnan(TrainIp)) = [];                                                % remove NAN from DATA
TrainIp(isnan(TrainIp)) = [];                                               % remove NAN from DATA
TrainIp(TestIp>50)=[];                                                      % remove noise (more than 50) from DATA
TestIp(TestIp>50)=[];                                                       % remove noise (more than 50) from DATA
TrainIp(TestIp<0)=[];                                                       % remove noise (less than 0) from DATA
TestIp(TestIp<0)=[];                                                        % remove noise (less than 0) from DATA
TestIp(TrainIp<=0)=[];                                                      % remove noise (less than 0) from DATA
TrainIp(TrainIp<=0)=[];                                                     % remove noise (less than 0) from DATA
TrainIp=TrainIp';                                                           % convert row vs column
TestIp=TestIp'; 
mn = min(TrainIp);                                                          % minimum of data
mx = max(TrainIp);                                                          % maximum of data
mn2 = min(TestIp);                                                          % minimum of data
mx2 = max(TestIp);                                                          % maximum of data
input = (TrainIp - mn) / (mx-mn);                                            %Normlize the Data
target = (TestIp - mn2) / (mx2-mn2);
numTimeStepsTrain = floor(0.8*numel(TrainIp));                               % 80 and 20 percent training and testing points
figure
plot(input(1:50))
hold on
plot(target(1:50),'.-')
legend(["Training" "Testing"])
xlabel("Time")
ylabel("kWh")
title(" Unit Generation")
close Figure 1;
XTrainIp = input(1:numTimeStepsTrain+1);                                     % training input data points
XTestIp = target(1:numTimeStepsTrain+1);                                     % training target data points
YTrainIp = input(numTimeStepsTrain+1:end);                                  % testing input data points
YTestIp = target(numTimeStepsTrain+1:end);
numFeatures = 2;                                                            % number of inputs=2
numResponses = 1;                                                           % number of output=1
numHiddenUnits = 200;                                                       % number of hidden unites
rmsepred=[];
rmseupdat=[];
maepred=[];
maeupdat=[];
mapepred=[];
mapeupdat=[];
layers = [ ...
    sequenceInputLayer(numFeatures)
    lstmLayer(numHiddenUnits)
    fullyConnectedLayer(numResponses)
    regressionLayer]; 
options = trainingOptions('adam', ...
    'MaxEpochs',250, ...
    'GradientThreshold',1, ...
    'InitialLearnRate',0.005, ...
    'MiniBatchSize',50, ...
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',90, ...
    'LearnRateDropFactor',0.2, ...
    'Verbose',false, ...
    'Plots','training-progress');                                           % LSTM other options
%     'ValidationData',{XTestIp,YTestIp},...
%     'ValidationFrequency',30, ...
相关文章
|
10月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
370 0
|
10月前
|
存储 监控 并行计算
目标跟踪中常用点迹航迹数据关联算法的MATLAB实现
通过计算测量点与预测点之间的欧氏距离,选择最近邻点进行关联,适用于单目标跟踪场景。
|
10月前
|
机器学习/深度学习 数据采集 自然语言处理
29_序列标注技术详解:从HMM到深度学习
序列标注(Sequence Labeling)是自然语言处理(NLP)中的一项基础任务,其目标是为序列中的每个元素分配一个标签。在NLP领域,序列标注技术广泛应用于分词、词性标注、命名实体识别、情感分析等任务。
899 0
|
11月前
|
机器学习/深度学习 算法 安全
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
311 2
|
11月前
|
传感器 资源调度 算法
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)
1083 0
|
11月前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
600 1
|
11月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
681 0
|
11月前
|
机器学习/深度学习 算法 vr&ar
【深度学习】基于最小误差法的胸片分割系统(Matlab代码实现)
【深度学习】基于最小误差法的胸片分割系统(Matlab代码实现)
215 0
阿里巴巴开发手册“泰山”版它来了,1.4.0+终极版+阿里内部PPT
阿里的《Java开发手册》距离上次发布已经过去了 10 个月了,而这次发布也增加了很多干货内容,比如:新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,发布日志如下图所示:
|
传感器 物联网 5G
5G的三大主要特性:解锁未来无限可能
5G的三大主要特性:解锁未来无限可能
2716 1