当前位置:   article > 正文

Python实现基于LSTM对股票走势的预测_lstm模型实现对股票数据的预测

lstm模型实现对股票数据的预测

❖目录
❖摘要 3
一、问题描述 3

1.1 绪论 3

❖1.2 当前股票预测的方法概述 4
❖1.3 本文所使用的模型 5
❖二、数据集说明 5
❖2.1 tushare 库和 Talib 库概要 5
❖2.2 获取历史行情数据 6
装 2.3 实现代码: 7
❖2.4 数据预处理 9
❖2.5 设计代码 10

2.6股票预测使用数据说明 11

2.7特征工程处理 14

订 2.8 输出数据说明 16
❖三、LSTM 模型 16
❖3.1 LSTM 模型概要 16
❖3.2 股票预测模型特征分析 17
❖3.3 本文所使用的 LSTM 结构 18
❖3.4 本次实验所采用的结构图 19
线 四、实验流程和结果 19
❖4.1 数据获取 19
❖4.2 Pytorch 工具集概要 19
❖4.3 Pytorch 指令解析 19

4.4搭建 LSTM 预测模型 21

4.5拟合结果评估方法概要 21

❖4.6 项目附件说明 24
❖4.7 项目使用说明书 24
❖摘要

❖为对股票价格的涨跌幅度进行预测,本文使用了基于长短期记忆网络(LSTM)的方法。根
❖据股票涨跌幅问题, 通过对股票信息作多值量化分类,将股票预测转化成一个多维函数拟
❖合问题。将股票的历史基本交易信息作为特征输入,利用神经网络对其训练,最后对股票的
❖涨跌幅度做分类预测。数据集为代号 510050 的上证股票,实验结果表明该模型在单纯预测
❖涨跌的情况下有比较好的预测效果。

❖一、问题描述


1.1 绪论

❖随着我国经济的快速发展,政府、投资机构以及投资者们对股票预测的需求也越来越多。
❖因此, 对股票价格走势的分析成为越来越多研究者关注的课题。但股票价格高度的波动性
❖与不确定性,使其成 为计算机领域和金融领域的一大难题。
订 由于股票本身的波动性和不确定性,其价格是否可以被预测这一议题一直存在着不少争

议。在 1956 年,Fama 提出了“有效市场假说”,指出股票的价格可以立即充分地反映市场

上所有的已知信息,以及那些尚未发生但市场预期会发生的事件对股票价格的影响。这一假

❖说为之后的股票预测工作提供了依据。
❖股票投资通常会选择某一类或某一只股票来作为投资对象,对这一类或一只股票进行预线 测,既可以将整体的股票交易信息作为训练数据,也可以只选择该类或该只股票的交易信息
❖作为训练数据。模型有决策树、LR、支持向量机等传统机器学习的方法,也有深度学习的方
❖法。一种最常见的股票预测方法是自回归模型,然而此类模型通常用于处理线性的稳定数据,

用于处理股价存在着一定的局限性。因此也有人使用非线性模型如支持向量机、马尔可夫模

型等,用以处理股票的非线性特征。

❖考虑到股票数据的时序性,本文选择用对时序序列有较好性能的 LSTM 网络分别对其训
❖练,将训练好的模型用于预测次日收盘价的涨跌幅, 并对结果做对比分析。

from torch.autograd import Variable
import torch.nn as nn
import torch
from LSTMModel import lstm
from parser_my import args
from dataset import getData

def train():

    model = lstm(input_size=args.input_size, hidden_size=args.hidden_size, num_layers=args.layers , output_size=1, dropout=args.dropout, batch_first=args.batch_first )
    model.to(args.device)
    criterion = nn.MSELoss()  # 定义损失函数
    optimizer = torch.optim.Adam(model.parameters(), lr=args.lr)  # Adam梯度下降  学习率=0.001

    close_max, close_min, train_loader, test_loader = getData(args.corpusFile,args.sequence_length,args.batch_size )
    for i in range(args.epochs):
        total_loss = 0
        for idx, (data, label) in enumerate(train_loader):
            if args.useGPU:
                data1 = data.squeeze(1).cuda()
                pred = model(Variable(data1).cuda())
                # print(pred.shape)
                pred = pred[1,:,:]
                label = label.unsqueeze(1).cuda()
                # print(label.shape)
            else:
                data1 = data.squeeze(1)
                pred = model(Variable(data1))
                pred = pred[1, :, :]
                label = label.unsqueeze(1)
            loss = criterion(pred, label)
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
            total_loss += loss.item()
        print(total_loss)
        if i % 10 == 0:
            # torch.save(model, args.save_file)
            torch.save({'state_dict': model.state_dict()}, args.save_file)
            print('第%d epoch,保存模型' % i)
    # torch.save(model, args.save_file)
    torch.save({'state_dict': model.state_dict()}, args.save_file)

train()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/465558
推荐阅读
相关标签
  

闽ICP备14008679号