基于2DCNN的多特征输入股票涨跌的二分类预测项目实战(pytorch)(多特征)【小白可做,有数据集和代码,可运行】——仅用于课程和编程学习,不作为任何金融推荐!!!!

一、项目简介

股票预测是金融领域中的重要问题,通过对历史股票数据的分析和建模,可以为投资决策提供参考,本项目是基于PyTorch深度学习框架使用一个两层的一维卷积神经网络,实现股票未来一天涨跌的二分类任务。网络的输入是历史股票开盘价、收盘价、最高价、最低价、成交量指标、百分比变化量(多特征),输出是下一天是否涨跌(输出1为涨,0为跌)。【本项目的代码文件分模块整理,包含模型构建、数据划分、训练过程等模块都清晰分明】【本项目的代码文件分模块整理,包含模型构建、训练过程、绘图等模块都清晰分明】

二、实验数据集及实验说明

实验采用的是深沪300数据集sh300.csv(后文有源码和数据集获取方式),这是公开的数据集,百度一下应该也可以找得到,数据集展示如下(所展示的数据是本人删掉某些列的数据,即sh300_test.csv)。

数据划分:以滑窗的方式进行数据划分,如红框所示,假设滑窗大小为20,步长为1,输入特征为6,若第21天的收盘价大于第20天的收盘价,则标签设置为1,反之设置为0,将样本设置为二分类任务。(本项目在实验中使用的是滑窗为100,即用前100天的数据来预测第101天的股票是涨是跌。根据实验,滑窗越大准确率越高。)
 

三、实验环境

平台:Window 11;语言:python3.9;编译器:Pycharm;框架:Pytorch:1.13.1

四、实验内容及部分代码展示

1、2DCNN模型构建

model_2DCNN.py定义了项目用到的网络模型,本项目用到的模型是两层的二维卷积网络、relu激活函数、两层全连接层进行输出二分类的预测结果。

2、train.py 训练通用模板

训练过程集成到fit函数里面,包含测试集训练过程和验证集计算过程,是项目训练过程的通用代码,其他项目也可以在它的基础上修改后使用。

3、Config.py 参数定义

config中定义了项目的基本参数,可以在里面修改训练参数。(本项目在实验中使用的是滑窗为100,即用前100天的数据来预测第101天的股票是涨是跌。根据实验,滑窗越大准确率越高。)

4、train_2DCNN_run.py 训练文件

该py文件实现整体训练流程并做绘图操作。依次实现加载数据、数据标准化、样本和标签制作、划分训练集测试集、数据转化为Tensor、形成数据更迭器、载入模型、定义损失、定义优化器、开始训练、损失可视化、显示预测结果。

5、test_pth.py 模型训练后的测试文件

采用模型训练完成后产生的的pth参数文件对测试数据进行预测,可以展示模型预测效果,本项目还是用训练的数据作为该文件的测试数据,前面的处理过程类似train_2DCNN_run.py所示。

6、plot_loss_acc.py 准确率和损失的绘画

将训练产生并收集的loss.csv和acc.csv展示出来,也就是损失图,红框处可调展示范围。

7、tsne_plot.py 模型训练后用于绘制t-SNE聚类图

绘制了训练前和训练后样本的t-SNE聚类图

五、实验结果及分析

0、训练过程中

1、loss损失图

该损失是训练了200个epoch的损失图

2、acc准确率图

3、test_pth.py的预测效果展示 

所示案例预测准确

4、tsne_plot.py的聚类效果展示 

第一个是未训练时的样本聚类图,第二个是训练后的样本聚类图,模型训练后,样本的分布明显分隔开了,说明模型对股票涨跌的二分类有效果。

六、其他提示

数据在没有做标准化的时候进行训练,效果很差,准确率基本上是0.5左右,进行标准化之后进行训练,效果达到了90%以上。

七、资源与总结

若有朋友需要可运行的源码和数据集,可以guan注【科研小条】gong众号,回复【股票涨跌分类2DCNN】,即可获得。

  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
LSTM(长短期记忆)是一种循环神经网络(RNN)的变体,在时间序列预测中应用广泛。实现多变量输入多步预测的LSTM模型需要使用seq2seq(序列到序列)模型来进行多步预测。下面是使用PyTorch实现的步骤: 1. 数据准备:将原始时间序列数据转换为多变量输入和多步预测的形式。对于多变量输入,需要将每个时间步的多个特征作为输入。对于多步预测,需要将未来多个时间步的目标值作为输出。 2. 搭建模型:使用PyTorch构建seq2seq模型。首先定义一个LSTM层作为编码器网络,接受多变量输入序列作为输入。然后定义另一个LSTM层作为解码器网络,接受编码器的输出和前一个时间步的预测作为输入。最后使用全连接层将解码器的输出映射到目标值的维度上。 3. 定义损失函数和优化器:选择适当的损失函数(例如均方误差)作为模型的目标函数,并选择合适的优化器(例如Adam)来优化模型参数。 4. 训练模型:使用历史数据训练LSTM模型。将多变量输入序列喂给编码器,然后将解码器的输出与目标值进行比较计算损失,并根据损失更新模型参数。 5. 多步预测:使用已经训练好的模型进行多步预测。首先将历史数据输入编码器,然后利用解码器逐步生成未来多个时间步的预测值。 需要注意的是,在实际应用中,可能需要进行数据归一化、验证集划分、超参数调整等步骤,以获得更好的模型性能。此外,可以根据具体情况对模型进行调整,例如添加额外的层、调整隐藏层单元数或调整训练迭代次数等。以上是使用PyTorch实现的LSTM多变量输入多步预测时间序列预测的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

科研小条

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

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

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

打赏作者

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

抵扣说明:

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

余额充值