
基于卷积-长短期记忆网络加注意力机制(CNN-LSTM-Attention)的时间序列预测程序,预测精度很高。
可用于做风电功率预测,电力负荷预测等等
标记注释清楚,可直接换数据运行。
代码实现训练与测试精度分析。
这段程序主要是一个基于CNN-LSTM-Attention神经网络的预测模型。下面我将逐步解释程序的功能和运行过程。
YID:5860673742612391
-
导入所需的库:
- matplotlib.pyplot:用于绘图
- pandas.DataFrame和pandas.concat:用于数据处理
- sklearn.preprocessing.MinMaxScaler:用于数据归一化
- sklearn.metrics.mean_squared_error和sklearn.metrics.r2_score:用于评估模型性能
- keras:用于构建神经网络模型
- numpy:用于数值计算
- math.sqrt:用于计算平方根
- attention:自定义的注意力机制模块
-
定义一个函数mae_value(y_true, y_pred)用于计算MAE(平均绝对误差)评价指标。
-
定义一个函数series_to_supervised(data, n_in=1, n_out=1, dropnan=True),将序列转换为监督学习问题。该函数将前一采样点的天气影响因素和电力负荷作为特征数据,将后一采样点的电力负荷作为标签,然后按照这个规律将数据转换为监督学习问题。
-
加载数据集,读取名为’cluster4.csv’的数据文件,并进行数据预处理,包括填充缺失值和转换数据类型。
-
数据归一化,将数据缩放到0-1之间。
-
调用series_to_supervised函数将数据集转换为监督学习问题。
-
丢弃不需要预测的列,只保留电力负荷作为标签。
-
将数据集分割为训练集、验证集和测试集。
-
分割输入和输出,将前一采样点的天气因素和电力负荷作为输入,后一采样点的电力负荷作为输出标签。
-
重塑数据形状,将数据转换为3D形状,满足循环神经网络的输入要求。
-
构建神经网络模型,包括卷积层、池化层、Dropout层、LSTM层、注意力层和全连接层。
-
编译模型,选择损失函数和优化器。
-
训练模型,使用训练集数据进行训练,同时使用验证集数据进行验证。
-
使用训练好的模型进行预测。
-
反向缩放预测值和实际值,将归一化的数据转换为原始数据。
-
计算RMSE(均方根误差)、MAPE(平均绝对百分比误差)、R2(确定系数)和MAE(平均绝对误差)等评价指标,并打印出来。
-
绘制训练集和测试集的损失值对比图。
-
绘制预测值和真实值的折线图。
-
将预测值保存到文件中。
总结:这段程序是一个基于CNN-LSTM-Attention神经网络的电力负荷预测模型。它将历史天气因素和电力负荷作为输入,通过神经网络模型进行训练和预测,最终得到预测结果。该模型可以在电力负荷预测领域应用,通过分析历史数据和天气因素,预测未来的电力负荷情况。程序涉及到的知识点包括数据处理、数据归一化、监督学习、神经网络模型构建和训练等。




