欢迎来到本博客❤️❤️
博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
本文目录如下:
目录
1 概述
2 运行结果
2.1 RF特征选择
2.2 LSTM预测
2.3 SSA-LSTM预测
2.4 MLP预测
2.5 几种算法比较
3 参考文献
4 Python代码实现
参考文献:
RF:随机森林指的是利用多棵树对样本进行训练并预测的一种分类器
RF善于处理高维数据,特征遗失数据,和不平衡数据
(1)训练可以并行化,速度快
(2)对高维数据集的处理能力强,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。
(3)在训练集缺失数据时依旧能保持较好的精度(原因:RF随机选取样本和特征;RF可以继承决策树对缺失数据的处理方式)
(4)泛化能力强,因为随机
麻雀搜索算法[18]是一种群体智能优化算法。相对于 PSO[19]、蜻蜓、灰狼等智能优化算法,SSA 求解速率更快、迭代更少。按照麻雀种群的分工不同划分为发现者、加入者和侦察者。适应度高的麻雀作为发现者,为种群寻找食物丰富的区域并为加入者提供位置信息。其位置更新如式(1)所示
本文采用的 LSTM 神经网络是循环神经网络的一种改进[20] ,主要是为了解决梯度爆炸、梯度消失[21]等问题而专门设计的, 可以有效保持较长时间的记忆,已经在智能化领域被广泛应用,在预测回归方面也取得了一些成果[22-23]。单元结构图如图 3 所示。
LSTM 包含遗忘门、输入门和输出门[24] ,通过控制三个门的状态来更新细胞状态里的数据信息。其计算过程如下:
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()
部分理论来源于网络,如有侵权请联系删除。
[1]彭来湖,张权,李建强等.面向喷染车间的挥发性有机物浓度预测方法及应用研究[J/OL].安全与环境学报:1-12[2023-06-12].https://doi.org/10.13637/j.issn.1009-6094.2022.2173.