【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码1

简介: 【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码


时间序列预测在金融领域中扮演着举足轻重的角色,特别是在股票市场中。对于广大投资者和交易员而言,能够准确预测股票价格的变动趋势,不仅意味着能够在交易中做出更为明智的决策,还能够在风险管理中占据有利地位点击文末“阅读原文”获取完整代码数据


本文将通过视频讲解,展示如何用LSTM模型进行股票收盘价的时间序列预测,并结合一个PYTHON中TENSORFLOW的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化实例代码数据,为读者提供一套完整的实践数据分析流程。

视频

image.png

问题描述

在此项研究中,我们将聚焦于平安银行的股票价格,并利用其从2017年3月1日至2021年9月7日的每日收盘价数据来进行预测分析。通过深入剖析这些数据,我们期望能够揭示出股票价格变动的潜在规律,并据此构建出有效的预测模型。

为了评估模型的预测性能,我们将采用均方根误差(RMSE)作为主要的评估指标。RMSE能够直观地反映出模型预测值与实际值之间的差异程度,从而帮助我们准确评估模型的预测能力。

数据集介绍

我们使用的数据集涵盖了平安银行自2017年3月1日至2021年9月7日的股票历史行情数据。这些数据详细记录了每日的收盘价等重要信息,为我们提供了宝贵的分析材料。通过调用专业的数据接口——AKshare API,我们成功获取了这些高质量的数据,并将在后续的研究中充分利用这些数据来进行预测模型的构建和评估。


75b69ab3618e77800ab125df85426b0b.png

数据集部分展示

用于通过akshare库获取平安银行(股票代码000001)的股票历史行情数据,并将其保存到CSV文件中。

python复制代码
  import akshare as ak  
  import pandas as pd  
    
 
  stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol="000001", period="daily", start_date="20170301", end_date="20210907", adjust="")  
    
  # 将数据保存到CSV文件  
  stock_zh_a_hist_df.to_csv("stock_data.csv", encoding="utf_8_sig")  # 推荐使用 utf_8_sig 以确保Excel可以正确打开  
    
  # 如果你想查看数据集的一部分,可以使用head()方法  
  print(stock_zh_a_hist_df.head())


image.png

数据处理与可视化

将股票收盘价数据从原始数据中提取出来,进行折线图展示。


从图中,可以看出数据分布情况,大致可以分为三个阶段(分布),分别具有不同的均值和方差,这可能对最后的预测结果造成过拟合的影响。因此,按右图利用时间滑动窗口技术将数据集划分为训练集和测试集,以便尽可能减小分布差异带来的影响,当进行训练时我们也可以对数据进行归一化处理,进一步减小影响,还能加快模型收敛速度。



Yuehuan Wei

拓端分析师


c28fa88f473cf0ac943ea578a89db9bf.png


RNN模型

循环神经网络(RNN)是一个基于编码器-解码器框架的神经网络模型,见下图。其中编码器将符号序列编码为固定长度的矢量表示,解码器则将该矢量表示解码为另一个符号序列。


574938eafb5dd6cf24fb7b3ca7be3a49.png

830cb2b0c4769059608f766d2921d4ea.png

LSTM模型

LSTM长短期记忆网络是RNN循环递归网络的变体,引入了门还加入了细胞状态的新概念,LSTM通过忘记门f、输入门i和输出门o,来保留和更新细胞状态c,其中忘记门f负责组合新/旧细胞状态,输入门i负责接受/拒绝新输入,输出门o负责确定输出。具体的编码过程见右图。其中o、tanh 分别表示sigmoid、tanh激活函数

f997209936d4940a031fb13700b6ced1.png

LSTM模型

LSTM模型的形式化表示:

b0721a9d6d31f12f98d56fec22ee7b26.png

748b50fe7d2fc843deea134413831738.png


模型训练过程

模型的编码器部分采用了一个单层LSTM神经网络,旨在捕获序列的动态特征。该网络输出一个隐状态h,其维度dn设定为32,以捕捉输入序列X的深层信息。输入序列X的时间步长timesteps设定为12,而每个时间步t的输入维度dm则为1,确保了模型能够处理单特征序列。

解码器部分则是一个Dense密集层神经网络,负责从编码器输出的最后一个隐状态h中提取关键信息,并生成输出序列K。输出序列的时间步长predsteps被设定为4,每个时间步t的输出维度dx为1,确保模型能够产生与目标序列Y相匹配的结果。

在训练阶段,我们采用编码器-解码器结构的神经网络模型进行联合训练。通过均方差函数(MSE)来计算模型输出序列与目标序列Y之间的误差,并使用Adam优化器进行迭代求解,以最小化误差。训练过程将进行500次迭代(epochs = 500),并在每个批次(batchsize = 32)的数据上进行参数更新。

在验证阶段,我们将利用训练好的模型对验证集进行预测,并通过适当的评估指标来衡量模型的性能,从而验证模型在实际应用中的效果。

e5ccd3a35cc2ea5aca424876afd8dd11.png

模型训练结果

4bef8549b5307e3b21b6776f5c98ea56.png

a570dd657c8a22a549359164e3871cea.png

使用其他模型进行对比

多种训练模型的训练均方差和验证均方差

0c24dea9f38fcc791eba6a0f747f2797.png

40b03852e0be9832bda01d76efa8605b.png



与RNN简单循环神经网络模型相比, LSTM具有能捕捉长期数据特征的优点,但是对于超长期的数据,仍旧无法进行很好的预测,而对于加入了Attention注意力机制的Transformer,正好可以解决这个难题,但是Transformer模型针对简单的数据集往往效果比不上LSTM,因为Transformer更容易导致过拟合,从而影响预测效果。





Yuehuan Wei

拓端分析师





PYTHON中TENSORFLOW的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化案例

最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出。

本文探索Python中的长短期记忆(LSTM)网络,以及如何使用它们来进行股市预测。

在本文中,你将看到如何使用一个被称为长短时记忆的时间序列模型。LSTM模型很强大,特别是在保留长期记忆方面。在本文中,你将解决以下主题。

  • 理解为什么你需要能够预测股票价格的变动。
  • 下载数据 - 使用从雅虎财经收集的股市数据
  • 分割训练-测试数据,并进行数据归一化
  • 应用单步预测技术。
  • 讨论LSTM模型。
  • 用当前的数据预测和可视化未来的股票市场

为什么你需要时间序列模型?

你希望对股票价格进行正确的建模,所以作为一个股票买家,你可以合理地决定何时买入股票,何时卖出股票以获得利润。这就是时间序列模型的作用。你需要好的机器学习模型,它可以观察一连串数据的历史,并正确预测该序列的未来数据。

提示:股票市场的价格是高度不可预测和波动的。这意味着数据中没有一致的模式,使你能够近乎完美地模拟股票价格随时间变化。

然而,我们不要一味地认为这只是一个随机的或者随机的过程,机器学习没有希望。我们至少对数据进行建模,做出的预测与数据的实际行为相关。换句话说,你不需要未来确切的股票价值,而是需要股票价格的变动(也就是说,如果它在不久的将来会上涨或下跌)。

# 可用的库
import numpy as np
import tensorflow as tf

下载数据

股票价格有几种不同的变量。它们是

  • 开盘:当天的开盘股票价格
  • 收盘价:当天的收盘股价
  • 高点:数据中最高的股票价格
  • 低点:当天的最低股价

获取数据

你要利用航空公司的股票市场价格来进行预测,所以你把股票代码设置为 "AAL"。此外,你还定义了一个url_string,它将返回一个JSON文件,其中包含航空公司过去20年的所有股市数据,以及一个file_to_save,它是你保存数据的文件。

接下来,指定条件:如果你还没有保存数据,从你在url_string中设置的URL中抓取数据;把日期、低点、高点、成交量、收盘价、开盘价存储到一个pandas DataFrame df中,把它保存到file_to_save。

# 从URL中抓取数据
    # 将日期、低点、高点、成交量、收盘价、开盘价存储到Pandas DataFrame中
            #提取股票市场数据
            df = pd.DataFrame(columns=['Date', 'Low', 'High', 'Close', ' Open'])      
        print('数据保存到:%s'%file_to_save)        
    # 如果数据已经存在,只需从CSV中加载即可
    否则。
        print('文件已经存在,从CSV中加载数据')
        df = pd.read_csv(file_to_save)

数据探索

在这里你将把收集的数据输出到DataFrame中。你还应该确保数据是按日期排序的,因为数据的顺序在时间序列建模中至关重要。

# 按日期对数据框架进行排序
df = df.sort_values('Date')
# 仔细检查结果
df.head()

7604fbb78db4580bebf7b0c4913fc553.png

【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码2:https://developer.aliyun.com/article/1501351

相关文章
|
5月前
|
机器学习/深度学习 算法 安全
【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)
【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)
290 1
|
6月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
225 2
|
5月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
551 2
|
4月前
|
机器学习/深度学习 自然语言处理 PyTorch
21_RNN与LSTM:序列建模的经典方法
在自然语言处理领域,处理序列数据是一个核心挑战。传统的机器学习方法难以捕捉序列中的时序依赖关系,而循环神经网络(Recurrent Neural Network,RNN)及其变种长短期记忆网络(Long Short-Term Memory,LSTM)通过其独特的循环结构,为序列建模提供了强大的解决方案。本教程将深入探讨RNN和LSTM的原理、实现方法和最新应用,帮助读者全面掌握这一NLP核心技术。
|
5月前
|
机器学习/深度学习 数据采集 算法
基于VMD-LSTM的电力负荷预测研究(Matlab代码实现)
基于VMD-LSTM的电力负荷预测研究(Matlab代码实现)
374 0
|
5月前
|
机器学习/深度学习 数据采集 资源调度
基于长短期记忆网络定向改进预测的动态多目标进化算法(LSTM-DIP-DMOEA)求解CEC2018(DF1-DF14)研究(Matlab代码实现)
基于长短期记忆网络定向改进预测的动态多目标进化算法(LSTM-DIP-DMOEA)求解CEC2018(DF1-DF14)研究(Matlab代码实现)
147 0
|
5月前
|
机器学习/深度学习 安全 Serverless
【创新未发表】【故障诊断】基于连续小波变换-CNN, ResNet, CNN-SVM, CNN-BiGRU, CNN-LSTM的故障诊断研究【凯斯西储大学数据】(Matlab代码实现)
【创新未发表】【故障诊断】基于连续小波变换-CNN, ResNet, CNN-SVM, CNN-BiGRU, CNN-LSTM的故障诊断研究【凯斯西储大学数据】(Matlab代码实现)
406 0
|
5月前
|
机器学习/深度学习 传感器 数据采集
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
867 0
|
6月前
|
机器学习/深度学习 算法 安全
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
330 0
|
8月前
|
机器学习/深度学习 算法 数据挖掘
基于WOA鲸鱼优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
本项目基于MATLAB 2022a/2024b实现,采用WOA优化的BiLSTM算法进行序列预测。核心代码包含完整中文注释与操作视频,展示从参数优化到模型训练、预测的全流程。BiLSTM通过前向与后向LSTM结合,有效捕捉序列前后文信息,解决传统RNN梯度消失问题。WOA优化超参数(如学习率、隐藏层神经元数),提升模型性能,避免局部最优解。附有运行效果图预览,最终输出预测值与实际值对比,RMSE评估精度。适合研究时序数据分析与深度学习优化的开发者参考。

热门文章

最新文章