运行效果(为减少录屏时间,视频中epoch设置为30,改为100效果更佳):利用EEMD_LSTM模型对时序数据进行预测(视频中epoch为30,当为100 的时候效果更佳)_哔哩哔哩_bilibili
1.数据介绍:以每天为间隔的时序数据
第一列Oxygen Consumption(氧耗) 第二列Ammonia Nitrogen(氨氮),第三列PH,第四列(Dissolved Oxygen)溶解氧
目标:根据已知时间内的四列特征预测未来的溶解氧含量(第四列)
2.模型:EEMD_LSTM
EEMD是一种信号分解方法,它将信号分解成多个本征模态函数(IMFs),这些IMFs具有不同的频率特征。
本份代码实现了对时序数据的预测,具体地,它使用了 EEMD(Ensemble Empirical Mode Decomposition) 对时序数据进行分解,并且对分解出来的每一个 IMFs(Intrinsic Mode Functions) 进行 LSTM 模型的训练和预测,最后将多个 IMFs 的预测结果进行加权平均得到最终的预测结果。
这段代码的具体实现如下:
- 引入必要的库和模块,包括 numpy、pandas、sklearn、keras、matplotlib 等。
- 实现数据分割函数 data_split,将原始数据集划分为训练集和测试集,并且对每个数据窗口内的数据进行划分,分成输入和输出序列,用于训练 LSTM 模型。
- 实现数据预处理函数 data_split_LSTM,对训练集和测试集的输入和输出数据进行 reshape 处理,以符合 LSTM 模型的输入要求。(该模型用于对时间序列数据进行预测,主要用于股票价格、气温、交通流量等的预测。其中,输入数据的形状为(样本数量,时间步长,特征数量),输出数据的形状为(样本数量,预测步长,特征数量)。该模型使用均方误差作为损失函数,Adam优化算法进行优化,使用回调函数进行模型保存。)
- 实现 IMFs 分解函数 imf_data,对原始时序数据进行 EEMD 分解,并将分解出来的多个 IMFs 作为 LSTM 模型的输入。
- 实现 LSTM 模型函数 LSTM_Model,其中包括模型的定义、编译、训练和保存等操作。
- 实现异常值检测函数 isolutionforest,使用 IsolationForest 算法对输入数据进行异常值检测。
- 实现绘图函数 plot_curve,用于绘制预测结果和真实结果的对比曲线。
- 最后,调用各个函数完成对原始时序数据的分解、模型训练和预测、预测结果的加权平均等操作,得到最终的预测结果。
3.结果:
3.1测试集分解信号如图所示
3.2.测试集 预测值与真实值比较
指标: