【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代码实现

你可能感兴趣的:(神经网络预测与分类,python,算法,lstm)