实验数据集
实验采用的是深沪300数据集sh300.csv,这是公开的数据集,百度一下应该也可以找得到,数据集展示如下,实验只使用了红框中的收盘价作为输入特征进行预测。
数据划分:以滑窗的方式进行数据划分,滑窗大小为20,输入特征为每次滑窗的第21天为预测的标签值。
实验环境
平台:Window11
语言:python9
编译器:Pycharm
实验内容及部分代码展示
model_1DCNN.py模型构建
model.py定义了项目用到的网络模型,本项目用到的模型是三层的一维卷积网络,使用relu激活,最后使用两层全连接层输出预测结果。
输入为20个数,每层网络的输出结果为:
train.py训练通用模板
训练过程集成到fit函数里面,是项目训练过程的通用代码,其他项目也可以在它的基础上修改后使用。
Config.py参数定义
config类中定义了项目所有需要的参数,可以在里面修改训练参数。
DataSplit.py数据划分
DataSplit.py是实现数据划分的函数,通过滑动窗口,将每个窗口大小的数据作为训练数据,将其后面一个数据作为预测结果,再进行划分训练数据和标签,最后分成训练集和验证集。
该py文件实现整体训练流程并做绘操作。依次实现加载数据、数据标准化、取出WIND数据、划分训练集测试集、数据转化为Tensor、形成数据更迭器、载入模型、定义损失、定义优化器、开始训练、损失可视化、显示预测结果。
test_pth.py模型训练后的测试文件
采用模型训练完成后的pth对数据进行预测,可以展示模型预测效果,前面的处理过程类似test_wind_CNN.py所示。
loss_draw.py模型训练后的测试文件
将训练产生并收集的loss.csv展示出来,也就是损失,红框可调展示范围。
实验结果及分析
loss损失
该损失是训练了200个epoch的损失:
纵坐标局部范围展示:
部分损失数据展示:
预测效果展示
训练epoch=200后的股票收盘价预测效果如下:
局部展示:
总结及资源
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点