融合创新!CNN-Transformer时间序列预测

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类算法的家人,可关注我的VX公众号:python算法小当家,不定期会有很多免费代码分享~

CNN-Transformer实现完美融合

CNN层在特征维度上提取有价值的信息,补偿了Transformer编码器从多元数据集中挖掘信息的有限能力。同时在不同编码器层之间使用多头注意层能有效地提高预测精度。

本文将使用CNN-Transformer完成电力负荷多元时间序列预测,这个模型当前用的人还比较少,且不仅适用于电力负荷预测,如光伏预测、股价预测等时间序列预测也是可以用的。下面先给大家看实验结果,模型原理在后面!!!

CNN-Transformer时间序列预测

输入数据(部分展示)

date dry bulb temperature dew point temperature wet bulb temperature humidity price Load
2007/5/1 0:00 17.6 10.1 13.6 61 56.27 8014.32
2007/5/1 0:30 17.3 10.25 13.55 63 53.64 7872.69
2007/5/1 1:00 17 10.4 13.5 65 39.47 7693.98
2007/5/1 1:30 16.75 10.55 13.45 67 51.36 7569.55

数据集介绍:
date:日期
dry bulb temperature:干球温度
dew point temperature:露点温度
wet bulb temperature:湿球温度
humidity:湿度
price:电价
Load:负荷(输出)

数据划分

# 定义输入数据,输出标签数据的格式的函数 ,同时将数据转换模型可接受的3D格式
def create_dataset(datasetX, datasetY, look_back=1, T=1):
    dataX, dataY = [], []
    for i in range(0, len(datasetX) - look_back, T):
        a = datasetX[i:(i + look_back), :]
        dataX.append(a)
        dataY.append(datasetY[i + look_back:i + look_back + T, 0])
    return np.array(dataX), np.array(dataY)

create_dataset函数用于将输入数据和输出标签数据格式化,并转换成模型可接受的3D格式。该函数通过滑动窗口的方式从时间序列数据中创建特征和标签。

模型创建

model = create_model(
input_shape=(look_back, num_features),
num_blocks=3, embed_dim=32, dense_dim=64,
num_heads=4, dropout_rate=0.1, output_sequence_length=T)

create_model函数用于创建CNN-Transformer时间序列预测模型。参数说明如下:

  • input_shape:输入数据的形状,通常为三维元组,包含look_back和num_features。
  • num_blocks:模型中的块数,表示模型由多少个重复模块组成。
  • embed_dim:嵌入维度,表示嵌入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值