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

欢迎来到本博客❤️❤️

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

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

本文目录如下:

目录

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

你可能感兴趣的:(神经网络预测,python,神经网络,lstm)