【RF-SSA-LSTM】随机森林-麻雀优化算法优化时间序列预测研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

2.1 RF特征选择

2.2 LSTM预测 

2.3 SSA-LSTM预测 

2.4 MLP预测

2.5 几种算法比较 

🎉3 参考文献

🌈4 Python代码实现


💥1 概述

参考文献:

 

RF:随机森林指的是利用多棵树对样本进行训练并预测的一种分类器

RF善于处理高维数据,特征遗失数据,和不平衡数据

(1)训练可以并行化,速度快

(2)对高维数据集的处理能力强,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。

(3)在训练集缺失数据时依旧能保持较好的精度(原因:RF随机选取样本和特征;RF可以继承决策树对缺失数据的处理方式)

(4)泛化能力强,因为随机

麻雀搜索算法[18]是一种群体智能优化算法。相对于 PSO[19]、蜻蜓、灰狼等智能优化算法,SSA 求解速率更快、迭代更少。按照麻雀种群的分工不同划分为发现者、加入者和侦察者。适应度高的麻雀作为发现者,为种群寻找食物丰富的区域并为加入者提供位置信息。其位置更新如式(1)所示

 

本文采用的 LSTM 神经网络是循环神经网络的一种改进[20] ,主要是为了解决梯度爆炸、梯度消失[21]等问题而专门设计的, 可以有效保持较长时间的记忆,已经在智能化领域被广泛应用,在预测回归方面也取得了一些成果[22-23]。单元结构图如图 3 所示。

 

LSTM 包含遗忘门、输入门和输出门[24] ,通过控制三个门的状态来更新细胞状态里的数据信息。其计算过程如下:  

📚2 运行结果

2.1 RF特征选择

2.2 LSTM预测 

2.3 SSA-LSTM预测 

2.4 MLP预测

2.5 几种算法比较 

plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'
plt.figure(figsize=(7, 4))
# plt.subplot(2,2,1)
# plt.plot(data0,c='r', label='real')
# plt.plot(data2,c='b',label='pred')
# plt.ylabel('MLP')
# plt.legend()
#
# plt.subplot(2,2,2)
# plt.plot(data0,c='r', label='real')
# plt.plot(data3,c='b',label='pred')
# plt.ylabel('LSTM')
# plt.legend()
#
# plt.subplot(2,2,3)
# plt.plot(data0,c='r', label='real')
# plt.plot(data4,c='b',label='pred')
# plt.legend()
# plt.xlabel('time/h')
# plt.ylabel('SSA-LSTM')
#
# # In[7] 画图
# plt.subplot(2,2,4)
# plt.plot(data0,'-',label='real')
# plt.plot(data1,'-',label='SLP')
# plt.plot(data2,'-*',label='MLP')
# plt.plot(data3,'-*',label='LSTM')
# plt.plot(data4,'-*',label='SSA-LSTM')
plt.plot(data0,label='real')
plt.plot(data1,label='SLP')
plt.plot(data2,label='MLP')
plt.plot(data3,label='LSTM')
plt.plot(data4,label='SSA-LSTM')
plt.grid()
plt.legend()
plt.xlabel('time/h')
plt.ylabel('Compare')
plt.show()

plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'
plt.figure(figsize=(7, 4))
# plt.subplot(2,2,1)
# plt.plot(data0,c='r', label='real')
# plt.plot(data2,c='b',label='pred')
# plt.ylabel('MLP')
# plt.legend()
#
# plt.subplot(2,2,2)
# plt.plot(data0,c='r', label='real')
# plt.plot(data3,c='b',label='pred')
# plt.ylabel('LSTM')
# plt.legend()
#
# plt.subplot(2,2,3)
# plt.plot(data0,c='r', label='real')
# plt.plot(data4,c='b',label='pred')
# plt.legend()
# plt.xlabel('time/h')
# plt.ylabel('SSA-LSTM')
#
# # In[7] 画图
# plt.subplot(2,2,4)
# plt.plot(data0,'-',label='real')
# plt.plot(data1,'-',label='SLP')
# plt.plot(data2,'-*',label='MLP')
# plt.plot(data3,'-*',label='LSTM')
# plt.plot(data4,'-*',label='SSA-LSTM')
plt.plot(data0,label='real')
plt.plot(data1,label='SLP')
plt.plot(data2,label='MLP')
plt.plot(data3,label='LSTM')
plt.plot(data4,label='SSA-LSTM')
plt.grid()
plt.legend()
plt.xlabel('time/h')
plt.ylabel('Compare')
plt.show()

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]彭来湖,张权,李建强等.面向喷染车间的挥发性有机物浓度预测方法及应用研究[J/OL].安全与环境学报:1-12[2023-06-12].https://doi.org/10.13637/j.issn.1009-6094.2022.2173.

🌈4 Python代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1942.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络】IP 地址处理函数

目录 1.struct sockaddr_in的结构 2.一般我们写的结构 3.常见的“点分十进制” 到 ” uint32_t 的转化接口 3.1. inet_aton 和 inet_ntoa (ipv4) 3.2. inet_pton 和 inet_ntop (ipv4 和 ipv6) 3.3. inet_addr 和 inet_network 3…

ECC加密算法详解+python实现

一.前言 目前比较受欢迎的加密算法一共存在两种,一种是基于大整数因子分解问题(IFP)的RSA算法和基于椭圆曲线上离散对数计算问题(ECDLP)的ECC算法。之前对RSA算法进行过很详细的讲解,但是ECC加密算法还没有…

简单指令实现Docker构建镜像启动运行保存导出后再导入新环境完整全流程

项目场景及问题描述 本文做一个简单Docker使用指令指南,可快速实现Docker构建镜像、启动、运行、保存、导出后再导入新环境完整全流程。具体每一个指令又有很多参数和学问,大家可自行查询更详细的解释,本文可用于小白快速构建镜像并使用。 使…

关于Nuxt3.6兼容低版本游览器的实战以及可能存在的问题

当我们网站打包上线后,有些问题我们肯定也要考虑在内,兼容性也是其中一个重要的一种,可能会有人说,都2023年了,还在乎那些废弃的游览器干啥,我只能说,错!大错特错! 我们不…

【AIGC】Chatglm2-lora微调

ChatGLM2介绍 ChatGLM2-6B源码地址:https://github.com/THUDM/ChatGLM2-6B ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性&…

文本分析-使用jieba库实现TF-IDF算法提取关键词

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

accountId、uid、roleId 游戏中的3种id

1)accountId: // 是一个字符串 这个是字符串,玩家可以输入名字(比如:输入zfoo) 或者 通过微信生成(openid是不变的)。 2)uid:// long 这个是一个很长的,玩家通过http登录授权后,通过web层,由雪花算法根据accountId生成…

Spring Bean的生命周期解读

目录 1. Spring IOC容器 1.1 Spring IOC 容器的设计 1.1.1 BeanFactory 1.1.2 ApplicationContext 1.2 Spring Bean的生命周期 1.2.1 BeanDefinition 1.2.2 InstantiationAwareBeanPostProcessor和BeanPostProcessor 1.2.3 测试生命周期 1. Spring IOC容器 1.1 Spring …

计算机网络那些事之 MTU 篇 pt.2

哈喽大家好,我是咸鱼 在《计算机网络那些事之 MTU 篇 》中,咸鱼跟大家介绍了 MTU 是指数据链路层能够传输的最大数据帧的大小 如果发送的数据大于 MTU,则就会进行分片操作(Fragment);如果小于 MTU&#x…

SpringBoot整合Redis缓存管理

1. 添加 Spring Data Redis 依赖启动器。在 chapter06 项目的 pom.xml 文件中添加 Spring Data Redis 依赖 启动器。 <!-- 引入整合 Redis 缓存的依赖启动器 --> <dependency> <groupId> org.springframework.boot </groupId> <artifactId>…

Java安全——应用安全

Java安全 Java 应用安全 JCE&#xff08;Java Cryptography Extension&#xff09;java加密扩展包 Java Cryptography Extension&#xff08;JCE&#xff09;是一个可选的Java标准扩展&#xff0c;提供了一组用于加密、密钥生成和密钥协商等功能的类和接口。JCE包含了导入、生…

android checkBox的使用

一、前言&#xff1a;之前工作中遇到的checkbox的使用是左边一个复选框&#xff0c;右边一个text。系统学完之后发现那样做的话有点别扭&#xff0c;还是中规中矩的舒坦。记录一下学习经过。 二、代码展示&#xff1a; 1.使用系统自带的checkbox插件。 创建一个CheckBoxActiv…