当前位置: 首页 > news >正文

多维时序 | MATLAB实现PSO-CNN-BiLSTM多变量时间序列预测

多维时序 | MATLAB实现PSO-CNN-BiLSTM多变量时间序列预测

目录

    • 多维时序 | MATLAB实现PSO-CNN-BiLSTM多变量时间序列预测
      • 基本介绍
      • 模型特点
      • 程序设计
      • 参考资料

基本介绍

本次运行测试环境MATLAB2021b,MATLAB实现PSO-CNN-BiLSTM多变量时间序列预测。代码说明:基于粒子群优化算法(PSO)、卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM)的多变量时间序列预测算法。

模型特点

深度学习使用分布式的分层特征表示方法自动提取数据中的从最低层到最高层固有的抽象特征和隐藏不变结构. 为了充分利用单个模型的优点并提高预测性能, 现已提出了许多组合模型。构建基于卷积神经网络(Convolutional Neural Network,CNN)和双向长短期记忆(Bidirectional Long Short-Term Memory,BiLSTM)的混合模型(CNN-BiLSTM)进行棉花产量预估,提高时间维度和空间维度方面的特征提取能力。

  • 本研究提出的CNN-BiLSTM 模型结构主要由CNN模块、BiLSTM 模块和输出模块3 部分。CNN 结构的第一部分是卷积层,进行卷积运算提取局部空间特征。

  • BiLSTM 网络的主体隐藏层结构是在LSTM 网络的基础上由正向输入运算的LSTM 网络和反向输入运算的LSTM 网络上下叠加构成,在保留了LSTM 单元结构特点的同时,更加关注时序数据的前后关联性,确保时序特征的提取。

  • CNN-BiLSTM 模型的输出模块由全连接神经网络组成,网络输入向量包含CNN 提取的空间特征和BiLSTM网络提取的时序特征,其隐藏层数量为1,神经元个数为500,激活函数为ReLU,最终输出为估产结果。

  • 功能:
    1、多变量特征输入,单序列变量输出,输入前一天的特征,实现后一天的预测,超前24步预测。
    2、通过粒子群优化算法优化学习率、卷积核大小、神经元个数,这3个关键参数,以最小MAPE为目标函数。
    3、网络的特征可视化图;测试对比图;适应度曲线(若首轮精度最高,则适应度曲线为水平直线)。
    4、提供MAPE、RMSE、MAE等计算结果展示。

  • 适用领域:
    风速预测、光伏功率预测、发电功率预测、碳价预测等多种应用。

  • 使用便捷:
    直接使用EXCEL表格导入数据,无需大幅修改程序。内部有详细注释,易于理解。

程序设计

  • 完整程序和数据下载:私信博主回复MATLAB实现PSO-CNN-BiLSTM多变量时间序列预测
% CNN-BiLSTM多变量时间序列预测
% 数据集 列为特征,行为样本数目
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
clc
clear
load Train.mat
%
Train(1,:) =[];
y = Train.demand;
x = Train{:,3:end};
[xnorm,xopt] = mapminmax(x',0,1);
[ynorm,yopt] = mapminmax(y',0,1);
x = x';
k = 24;           % 滞后长度
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% 转换成4-D image
for i = 1:length(ynorm)-kTrain_xNorm{i} = reshape(xnorm(:,i:i+k-1),6,1,1,k);Train_yNorm(i) = ynorm(i+k-1);
end
Train_yNorm= Train_yNorm';
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%--------------------------------------------------------------------------
load Test.mat
Test(1,:) =[];
ytest = Test.demand;
xtest = Test{:,3:end};
[xtestnorm] = mapminmax('apply', xtest',xopt);
[ytestnorm] = mapminmax('apply',ytest',yopt);
xtest = xtest';
for i = 1:length(ytestnorm)-kTest_xNorm{i} = reshape(xtestnorm(:,i:i+k-1),6,1,1,k);Test_yNorm(i) = ytestnorm(i+k-1);Test_y(i) = ytest(i+k-1);
end
Test_yNorm = Test_yNorm';
  • 相关预测

1
2

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/127313031?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128011037?spm=1001.2014.3001.5502

http://www.lryc.cn/news/130223.html

相关文章:

  • 实现Java异步调用的高效方法
  • 批量提取文件名到excel,详细的提取步骤
  • C#中的泛型约束可以用在以下几个地方?
  • Linux Vm上部署Docker
  • ubuntu bind dns服务配置
  • 安卓的代码加固和其他安全问题
  • 关于Linux Docker springboot jar 日志时间不正确 问题解决
  • 提高批量爬虫工作效率
  • E96系列电阻阻值和代码、乘数对照表
  • 基于CentOS7.9安装部署docker(简洁版)
  • MySQL常用练手题目
  • Oracle字段长度不足位数补零
  • <数据结构与算法>二叉树堆的实现
  • FPGA:RS编码仿真过程
  • RocketMQ 5.0 架构解析:如何基于云原生架构支撑多元化场景
  • Android su
  • 微信小程序真机调试异常cmdId 1006, errCode-50011-已解决
  • 36.SpringMVC视图
  • LeetCode 热题 100(四):48. 旋转图像、240. 搜索二维矩阵 II、234. 回文链表
  • Qt 编译使用Bit7z库接口调用7z.dll、7-Zip.dll解压压缩常用Zip、ISO9660、Wim、Esd、7z等格式文件(二)
  • 224、仿真-基于51单片机音乐播放器流水灯控制Proteus仿真设计(程序+Proteus仿真+原理图+程序流程图+元器件清单+配套资料等)
  • 虹科展会 | 自动驾驶展品:上海汽车测试展精彩回顾
  • Unity自定义脚本的 初始模版
  • vue3中使用第三方插件mitt实现任意组件通讯
  • (五)、深度学习框架源码编译
  • 迈向通用听觉人工智能!清华电子系、火山语音携手推出认知导向的听觉大语言模型SALMONN
  • NOIP 2015 扫雷(mine)
  • elaticsearch(3)
  • DevOps系列文章 之 Gitlab+Docker自动部署SpringBoot
  • React Native 列表组件基础知识