赞
踩
股票预测是金融领域中的重要问题,通过对历史股票数据的分析和建模,我们可以尝试预测未来股票的价格趋势,为投资决策提供参考。本项目是基于PyTorch深度学习框架实现一个使用1D卷积神经网络(1DCNN)来进行股票预测的项目,该网络可以有效地处理时间序列数据,通过卷积层和提取输入序列中的特征,并通过全连接层进行预测。网络的输入是历史股票收盘价(单特征),输出是预测的股票价格。【本项目的代码文件分模块整理,包含模型构建、数据划分、训练过程等模块都清晰分明】
实验采用的是深沪300数据集sh300.csv(后文有源码和数据集获取方式),这是公开的数据集,百度一下应该也可以找得到,数据集展示如下(所展示的数据是本人删掉某些列的数据),实验只使用了红框中的收盘价作为输入特征进行预测。
数据划分:以滑窗的方式进行数据划分,滑窗大小为20,输入特征为1,每次滑窗的第21天为预测的标签值。
平台:Window 11
语言:python3.9
编译器:Pycharm
框架:Pytorch:1.13.1
model.py定义了项目用到的网络模型,本项目用到的模型是三层的一维卷积网络,使用relu激活,最后使用两层全连接层输出预测结果。
输入为20个数,每层网络的输出结果为:
训练过程集成到fit函数里面,是项目训练过程的通用代码,其他项目也可以在它的基础上修改后使用。
config类中定义了项目所有需要的参数,可以在里面修改训练参数。
DataSplit.py 是实现数据划分的函数,通过滑动窗口,将每个窗口大小的数据作为训练数据,将其后面一个数据作为预测结果,再进行划分训练数据和标签,最后分成训练集和验证集。
该py文件实现整体训练流程并做绘图操作。依次实现加载数据、数据标准化、取出WIND数据、划分训练集测试集、数据转化为Tensor、形成数据更迭器、载入模型、定义损失、定义优化器、开始训练、损失可视化、显示预测结果。
采用模型训练完成后的pth对数据进行预测,可以展示模型预测效果,前面的处理过程类似test_wind_CNN.py所示。
将训练产生并收集的loss.csv展示出来,也就是损失图,红框可调展示范围。
该损失是训练了200个epoch的损失图:
纵坐标局部范围展示(0-0.0002):
部分损失数据展示:
训练epoch=200后的股票收盘价预测效果如下(使用pth文件进行预测):
局部展示(展示前两百天的预测效果):
若有朋友需要可运行的源码和数据集,可以guan注【科研小条】gong众号,回复【股票预测1dcnn】,即可获得。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。