基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)

该项目利用二维卷积网络对风速数据进行预测,对比一维卷积显示出优势,能同时处理时间和空间维度特征。实验基于wind_dataset.csv数据集,采用3×3卷积核,通过Python3.9和Pytorch1.13.1实现。模型包含Dropout层以减少过拟合,但发现去掉Dropout可能得到更好效果。文章展示了训练过程、损失曲线和预测结果,提供相关代码资源。
摘要由CSDN通过智能技术生成

 一、项目简介

本项目实现了基于二维卷积网络多特征输入的的风速预测(使用了数据集中的8个特征作为输入),其效果明显比本人之前文章所做的一维多特征效果好。

二、二维卷积网络的优势

我们都知道二维卷积用于图片数据的处理具有非常大的优势,相比于一维卷积,二维卷积可以提取更复杂的特征,比如在风速预测项目中,一维卷积只能提取其时序特征,但是二维卷积可以同时考虑时间和空间维度上的特征,所提取的特征具有良好的时空相关性,其中空间维度特征指的是不同特征之间的相对位置关系。对于多通道数据,比如风速预测中的多特征数据,二维卷积可以同时处理不同通道的特征信息,每个通道可以被看作是输入数据的一个特征维度,二维卷积网络可以同时对多个通道进行卷积操作,从而更好地捕捉不同通道之间特征的关系

三、实验数据

1、实验使用了风速预测数据集wind_dataset.csv中"WIND","IND","RAIN","IND.1","T.MAX","IND.2","T.MIN","T.MIN.G"的这八个特征进行风速预测。滑窗的步长为20,即前20天的8个特征(每份共8×20个数据)来预测第21天的风速。【数据集中的【NA】空值被置为0。】

2、图中红色框核箭头是卷积的示意图,红色框是本项目使用的卷积核大小为3×3,箭头是卷积的方向,步长默认为1,padding为1。

四、实验环境

平台:window11

语言:python3.9

编译器:Pycharm

Pytorch:1.13.1

网络运行过程

模型代码如下,该模型加入了Dropout层用于防止过拟合,但是最后的结果还是有些过拟合,但是不影响模型效果。【本人尝试了去掉dropout层似乎效果更好,有兴趣的同学可以去掉跑一下看看】。模型使用了三层卷积和两个全连接层,模型流程如图所示:

该模型的计算过程和参数如下所示: 

 其他数据集划分等代码可以参考之前写的一篇文章(1DCNN单特征风速预测),基础代码都大同小异,在输入特征维度上有所改变。

五、项目运行环境

window11+python3.9+pytorch1.31.1

 六、项目文件及运行说明

train.py 里面是训练过程的通用代码,其他项目也可以在它的基础上修改
Config.py 里面是项目所需要用到的参数
DataSplit.py 实现数据划分的函数
model_2DCNN.py 训练的模型配置
wind_dataset.csv 风速预测的数据集
test_wind_2DCNN.py 运行文件,配置好训练的参数,进行训练并在里面绘图
loss.csv训练过程产生的损失
loss_draw.py 根据训练输出的loss.csv文件绘制loss损失
cnn.pth 是训练过程中生成的模型参数,可用于做测试数据的预测
test_pth.py 根据生成的cnn.pth模型参数对测试数据进行预测

*.png文件是预测结果可视化

七、部分模型代码展示

、预测效果展示

代码实现功能,实现风速预测、独立保存loss参数、独立绘制loss曲线、风速测试集独立预测等功能,详细操作见上述文件说明。以下是模型的训练过程和效果展示。

以下是加入了dropout层的效果:

1、训练epoch=100产生的loss参数储存到loss_csv文件中

2、训练epoch=100的loss曲线:

 3、训练epoch=100的训练集风速预测曲线(前两百个数据点):

4、  训练epoch=100的测试集风速预测曲线(前两百个数据点):

以下是没有加入dropout层的效果:

1、训练epoch=100的loss曲线:

  2、训练epoch=100的训练集风速预测曲线(前两百个数据点):

 3、训练epoch=100的测试集风速预测曲线(前两百个数据点):

九、总结与资源

若有朋友需要源码,可以关zhu【科研小条】gong众号,回复【多特征二维卷积风速预测】,即可获得。

2D卷积技术在时间序列预测中的应用可以通过将时间序列数据转化为图像数据进行处理。传统的时间序列预测方法主要依赖于序列本身的自相关性,而2D卷积则能够利用图像处理中的卷积操作,从时间序列中提取更多的特征信息。 在进行时间序列预测时,首先需要将时间序列数据转化为二维图像。常用的方法是利用滑动窗口将时间序列划分为多个子序列,然后将这些子序列按照一定规则排列成二维矩阵形式。例如,可以将每个子序列的数值作为像素的灰度值,将子序列的顺序作为图像的行或列。 接下来,可以利用2D卷积神经网络CNN)对这些图像进行特征提取和预测2D卷积层可以通过不同的卷积核对图像进行卷积运算,提取出图像中的空间特征卷积核的大小和数量可以根据实际情况进行设置,以捕捉不同时间尺度上的特征。 在特征提取之后,可以通过全连接层等结构进行进一步的预测。相比于传统的时间序列预测方法,2D卷积技术能够更好地捕捉到序列中的非线性和局部相关性,从而提高预测的准确性和稳定性。 需要注意的是,使用2D卷积技术进行时间序列预测时,数据的预处理非常重要。合适的滑动窗口大小、图像排列方式以及卷积核的设置都会对预测结果产生影响。此外,还需要考虑实际问题中的噪声、趋势等因素,以提高模型的鲁棒性和可靠性。 总之,2D卷积技术对于时间序列预测具有潜力,可以通过转化为图像数据并利用卷积神经网络进行特征提取和预测,提高预测的准确性和稳定性。但在实际应用中需要根据具体情况进行合理的数据处理和模型设计。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科研小条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值