基于Matlab的深度学习LSTM模型时间序列多步预测——多对单

       LSTM在时间序列预测方面的应用非常广,但有相当一部分没有考虑使用多长的数据预测下一个,类似AR模型中的阶数P。我基于matlab2021版编写了用LSTM模型实现多步预测时间序列的程序代码,可以自己调整使用的数据“阶数”。序列数据是我随机生成的,如果有自己的数据,就可以自己简单改一下代码,读取txt或excel都可以。注意读取后的序列必须命名为行向量。代码最后还提供了误差分析部分,展示了绝对误差、MAE、RMSE、MAPE共4个误差指标,可供参考。代码基于matlab2021版编写,适用于2021版之后的所有版本。

       以下是模型训练过程,每次运行过程可能会存在差异。

       我将后面24个数据作为测试数据,同时为了避免过拟合,将历史数据的70%作为训练集、30%作为验证集。训练过程需要注意验证集的误差不能过大,否则容易出现过拟合。

       下面是程序运行结果。结果展示了单步预测(即1步预测)和24步预测的结果。数据为随机生成。若有自己的数据可以读取,然后自行调参。这里横坐标的意义为:<=0的表示历史数据,>0的表示为未来数据。

        下面详细分析了24步预测误差结果。包括绝对误差、MAE、RMSE、MAPE。总体来说结果还行,但是这个是因为序列本身具有一定规律。这个结果每次是不一样的,有多种原因,训练集和验证集是随机分配的,同时模型训练结果也存在一定离散性,导致结果有所不同。对于不同的数据,需要自行调整LSTM模型的超参数,不断尝试,这个过程需要经验,但也比较痛苦,如果有优化算法会更好。

        本程序的部分代码如下。

        程序的完整代码下载链接见:基于Matlab的LSTM模型时间序列多步预测——多对单 (不是免费哟)。欢迎大家讨论!

  • 5
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
BiLSTM(双向长短期记忆网络)是一种常用的深度学习模型,可用于时间序列预测。下面是MATLAB实现BiLSTM时间序列未来多步预测的步骤: 1. 准备数据 首先,需要准备时间序列数据。可以使用MATLAB中的时间序列对象或从CSV文件中读取数据。数据应该按照时间顺序排列。 2. 数据预处理 对于时间序列数据,通常需要进行一些预处理操作,例如归一化。可以使用MATLAB中的zscore函数将数据标准化,也可以使用MinMaxScaler函数将数据缩放到[0,1]的范围内。 3. 划分训练集和测试集 可以将时间序列数据划分为训练集和测试集。通常情况下,可以使用前80%的数据作为训练集,后20%的数据作为测试集。 4. 构建BiLSTM模型 可以使用MATLAB中的深度学习工具箱构建BiLSTM模型。可以设置LSTM层的数量、每个LSTM层的神经元数量、激活函数等参数。同时,也需要设置BiLSTM的输入和输出大小。 5. 训练模型 可以使用MATLAB中的trainNetwork函数训练BiLSTM模型。可以设置训练参数,例如学习率、迭代次数、优化器等参数。训练过程中,可以使用训练集进行训练,同时可以使用测试集进行验证。 6. 进行预测 可以使用已经训练好的BiLSTM模型进行预测。可以使用MATLAB中的predict函数进行预测,也可以使用循环进行多步预测。 总的来说,MATLAB实现BiLSTM时间序列未来多步预测的步骤包括数据准备、数据预处理、训练集和测试集划分、BiLSTM模型构建、模型训练和预测
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡伟成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值