【VMD-LSTM】变分模态分解-长短时记忆神经网络研究(Python代码实现)

本文介绍了使用变分模态分解(VMD)对复杂信号进行预处理,然后利用长短时记忆(LSTM)神经网络进行短时交通流预测的技术。VMD能有效地分解非线性信号,而LSTM解决了传统循环神经网络的梯度问题,能长期保持信息。文章提供了一段GRU模型训练和预测的Python代码示例,并引用了一篇相关研究论文。
摘要由CSDN通过智能技术生成

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

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

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

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

目录

💥1 概述

1.1 变分模态分解算法

1.2 LSTM

📚2 运行结果​编辑

🎉3 参考文献

🌈4 Python代码实现


💥1 概述

参考文献:

1.1 变分模态分解算法

变分 模 态 分 解 ( variational mode decomposition,VMD) 算法是由 Dragomiretskiy 等提出的一种自动自适应、非递归的信号处理方法。此算法克服了 EMD 及其改进算法端点效应和模态分量

混叠的问题,可以将非稳定性、非线性且复杂度高的信号分解为多个相对平稳的子序列,在求解过

程中可自适应匹配最佳中心特征,极大程度地迎合高频率复杂信号的分解。

1.2 LSTM

长短时记忆( long-short term memory,LSTM) 神经网络是 Hochreiter 等提出的一种改进后的循环式神经网络,可有效解决循环式神经网络存在的梯度爆炸和阶段性梯度消失的问题。在传统

循环式神经网络基础上,在隐含层增设记忆模块,可使信息较长时间地储存和遗传,其结构如图 1

所示。

📚2 运行结果

 

部分代码:

def GRU_predict(data=None, epochs=100, predict_duration=len(test), fitting=None): 
    trainX,trainY,scalarY = create_train_test_set(data, co_imf_predict_for_fitting=fitting) 
    x_train,x_test = trainX[:-predict_duration],trainX[-predict_duration:] 
    y_train,y_test = trainY[:-predict_duration],trainY[-predict_duration:]
    train_X = x_train.reshape((x_train.shape[0], x_train.shape[1], x_train.shape[2])) 
    test_X = x_test.reshape((x_test.shape[0], x_test.shape[1], x_test.shape[2])) 

    model = GRU_model(train_X.shape) 
    patience = epochs//10 
    EarlyStop = EarlyStopping(monitor='val_loss', patience=5*patience, verbose=0, mode='auto') 
    Reduce = ReduceLROnPlateau(monitor='val_loss', patience=patience, verbose=0, mode='auto')
    
    history = model.fit(train_X, y_train, epochs=epochs, batch_size=32, validation_split=0.1, verbose=0, shuffle=True, callbacks=[EarlyStop,Reduce]) 
    
    y_test_predict = model.predict(test_X) 
    df_gru_evaluation = evaluation_model(y_test, y_test_predict) 
    y_test_predict = y_test_predict.ravel().reshape(-1,1) 
    
    y_test_predict_result = scalarY.inverse_transform(y_test_predict) 
    y_test_raw = scalarY.inverse_transform(y_test)    
    df_predict_raw = pd.DataFrame({'raw': y_test_raw.ravel(), 'predict': y_test_predict_result.ravel()}, index=range(len(y_test_raw))) # Output
    df_train_loss= pd.DataFrame({'loss': history.history['loss'], 'val_loss': history.history['val_loss']}, index=range(len(history.history['val_loss'])))
    
    return df_predict_raw, df_gru_evaluation, df_train_loss

🎉3 参考文献

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

[1]邴其春,张伟健,沈富鑫,胡嫣然,高鹏,刘东杰.基于变分模态分解和LSTM的短时交通流预测[J].重庆理工大学学报(自然科学),2023,37(05):169-177.

🌈4 Python代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值