💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
1.1 完备集合经验模态分解原理
1.2 变分 模 态 分 解
1.3 GRU
📚2 运行结果
🎉3 参考文献
🌈4 Python代码实现
💥1 概述
1.1 完备集合经验模态分解原理
早期的 EMD 方法具有较强的自适应性,能够有效地分解时间序列;但是,算法在运算过程中
容易出现模态混叠现象。EEMD 分解方法的思想是:在原始信号中加入白噪声[16],使极值点分布更均衡;最终分量在EMD 的基础上进行集成平均而得。但是,这种方法具有计算量大且重构时残留噪音大的缺陷。CEEMDAN 是 EEMD 的改进算法。该算法通过添加有限次数的自适应白噪声,解决了集合平均次数限制下的重构误差较大的问题。
1.2 变分 模 态 分 解
变分 模 态 分 解 ( variational mode decomposition,VMD) 算法是由 Dragomiretskiy 等提出的一种自动自适应、非递归的信号处理方法。此算法克服了 EMD 及其改进算法端点效应和模态分量
混叠的问题,可以将非稳定性、非线性且复杂度高的信号分解为多个相对平稳的子序列,在求解过
程中可自适应匹配最佳中心特征,极大程度地迎合高频率复杂信号的分解。
1.3 GRU
循环神经网络(Recurrent neural network,RNN)是经典的神经网络之一。由于 RNN 隐藏层
在不同样本序列的同一个神经元之间存在记忆传递,因此 RNN 在处理时间序列的线性回归问题具有优势:即,可以将前一刻神经元受到的影响输送到下一次学习中。但是,传统的 RNN 在进行反向传播时,如果输入数据的序列比较长,就会出现梯度消失、梯度爆炸等问题。
长短期记忆网络(Long short term memory,LSTM)和 GRU 的优势,在于其通过“门”结构极大地避免梯度消失问题,可以有效地分析长期依赖关系。
LSTM 包含 3 个门结构:遗忘门,输入门、输出门[21]。GRU 在 LSTM 的基础上减少了单元中门的个数,化简了单元复杂度,因此其运行效果要好于 LSTM。GRU 是由更新门和重置门构成,其内部结构如图 1 所示。
📚2 运行结果
部分代码:
# 7.Predict Co-IMF0 by matrix-input GRU time0 = time.time() df_vmd_co_imf0['sum'] = df_integrate_result['co-imf0'] co_imf0_predict_raw, co_imf0_gru_evaluation, co_imf0_train_loss = GRU_predict(df_vmd_co_imf0) print('======Co-IMF0 Predicting Finished======\n', co_imf0_gru_evaluation) time1 = time.time() print('Running time: %.3fs'%(time1-time0)) co_imf0_predict_raw.plot(title='Co-IMF0 Predicting Result') co_imf0_train_loss.plot(title='Co-IMF0 Training Loss') # 8.Predict Co-IMF1 and Co-IMF2 by vector-input GRU co_imf1_predict_raw, co_imf1_gru_evaluation, co_imf1_train_loss = GRU_predict(df_integrate_result['co-imf1']) print('======Co-IMF1 Predicting Finished======\n', co_imf1_gru_evaluation) time2 = time.time() print('Running time: %.3fs'%(time2-time1)) co_imf1_predict_raw.plot(title='Co-IMF1 Predicting Result') co_imf1_train_loss.plot(title='Co-IMF1 Training Loss') co_imf2_predict_raw, co_imf2_gru_evaluation, co_imf2_train_loss = GRU_predict(df_integrate_result['co-imf2']) print('======Co-IMF2 Predicting Finished======\n', co_imf2_gru_evaluation) time3 = time.time() print('Running time: %.3fs'%(time3-time2)) co_imf2_predict_raw.plot(title='Co-IMF2 Predicting Result') co_imf2_train_loss.plot(title='Co-IMF2 Training Loss')
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]金子皓,向玲,李林春,胡爱军.基于完备集合经验模态分解的SE-BiGRU超短期风速预测[J].电力科学与工程,2023,39(01):9-16.
[2]蒋富康,陆金桂,刘明昊,丰宇.基于CEEMDAN和CNN-LSTM的滚动轴承故障诊断[J].电子测量技术,2023,46(05):72-77.DOI:10.19651/j.cnki.emt.2210775.