此代码已经继续加入单步预测(单变量、多特征变量、风速、电力负荷预测)全家桶:单步预测全家桶(单变量、多特征变量、风速、电力负荷预测) (mbd.pub)
多特征变量包括以下内容:
2.多特征变量序列预测(七) CEEMDAN+Transformer-BiLSTM预测模型 (mbd.pub)
3.多特征变量序列预测(六) CEEMDAN+CNN-Transformer风速预测模型 (mbd.pub)
4.多特征变量序列预测(三)CNN-Transformer风速预测模型 (mbd.pub)
5.多特征变量序列预测(二)CNN-LSTM-Attention风速预测模型 (mbd.pub)
6.多特征变量序列预测(一)CNN-LSTM风速预测模型 (mbd.pub)
7.多特征变量序列预测(四)Transformer-BiLSTM风速预测模型 (mbd.pub)
8.多特征变量序列预测-Transformer预测模型 (mbd.pub)
9.多特征变量序列预测-LSTM预测模型 (mbd.pub)
10.多特征变量序列预测(五)CEEMDAN+CNN-LSTM风速预测模型 (mbd.pub)
11.多特征变量序列预测(11) 基于Pytorch的TCN-GRU预测模型 (mbd.pub)
单变量包括以下内容:
1.VMD-CNN-Transformer预测模型 (mbd.pub)
2.VMD-CNN-BiLSTM预测模型 (mbd.pub)
3.基于Python时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 (mbd.pub)
4.风速预测:基于EMD-LSTM的预测模型 (mbd.pub)
5.单步预测模型(三)CNN-GRU并行模型 (mbd.pub)
6.风速预测:EMD-Transformer模型 (mbd.pub)
8.风速预测:EMD-CNN-LSTM模型 (mbd.pub)
9.单步预测模型(二)CNN-LSTM模型 (mbd.pub)
10.风速预测:EMD-LSTM-Attention(基于Pytorch实现) (mbd.pub)
11.风速预测:EMD-CNN-GRU并行模型 (mbd.pub)
12.单步预测(八)CEEMDAN-TCN-Attention预测模型 (mbd.pub)
包括 风速数据, 以及已经生成制作好的风速数据集、标签集,对应代码均可以运行
CNN-LSTM-Attention 模型, 有着更小的MSE, MAE,效果特别明显
包括数据预处理的代码,和完整CNN-LSTM-Attention模型预测代码、可视化代码
环境:python 3.9
任何环境安装或者代码问题,请联系作者沟通交流,对于购买者,作者免费解决调试问题,关注微信公众号[建模先锋],联系作者;
前言
本文基于前期介绍的风速数据( 文末附数据集 ),介绍一种多特征变量序列预测模型CNN-LSTM-Attention,以提高时间序列数据的预测性能。该数据集一共有天气、温度、湿度、气压、风速等九个变量,通过滑动窗口制作数据集,利用多变量来预测风速。
LSTF(Long Sequence Time-Series Forecasting)问题是指在时间序列预测中需要处理长序列的情况。在实际应用中,时间序列可能会包含非常大量的数据点,在这种情况下,传统的时间序列预测模型可能会遇到一些挑战,因为处理长序列时会出现一些问题,例如:
- 长期依赖性: 随着时间序列数据的增长,模型需要能够捕捉长期的依赖关系和趋势。
- 计算复杂性: 针对长序列进行训练和预测通常需要更多的计算资源和时间。
- 内存消耗: 长序列通常需要大量的内存来存储数据和模型参数,这可能会导致内存耗尽或者性能下降的问题。
在处理LSTF问题时,选择合适的窗口大小(window size)是非常关键的。选择合适的窗口大小可以帮助模型更好地捕捉时间序列中的模式和特征,为了提取序列中更长的依赖建模,本文把窗口大小提升到96,运用CNN-LSTM-Attention模型来充分提取序列中的特征信息。
1 多特征变量数据集制作与预处理
1.1 导入数据
1.2 数据集制作与预处理
先划分数据集,按照9:1划分训练集和测试集
制作数据集
2 基于Pytorch的CNN-LSTM-Attention 预测模型
2.1 定义CNN-LSTM-Attention预测模型
注意:输入风速数据形状为 [256, 96, 8], batch_size=256,96代表序列长度(滑动窗口取值), 维度8维代表挑选的8个变量。
2.2 设置参数,训练模型
50个epoch,MSE 为0.00082814,多变量特征CNN-LSTM-Attention预测效果良好,适当调整模型参数,还可以进一步提高模型预测表现。
注意调整参数:
- 可以适当增加CNN和LSTM层数和隐藏层的维度,微调学习率;
- 调整注意力维度数,增加更多的 epoch (注意防止过拟合)
- 可以改变滑动窗口长度(设置合适的窗口长度)
3 模型评估与可视化
3.1 结果可视化
3.2 模型评估

