竞赛选题 基于大数据的时间序列股价预测分析与可视化 - lstm

news2024/11/24 15:55:52

文章目录

  • 1 前言
  • 2 时间序列的由来
    • 2.1 四种模型的名称:
  • 3 数据预览
  • 4 理论公式
    • 4.1 协方差
    • 4.2 相关系数
    • 4.3 scikit-learn计算相关性
  • 5 金融数据的时序分析
    • 5.1 数据概况
    • 5.2 序列变化情况计算
  • 最后

1 前言

🔥 优质竞赛项目系列,今天要分享的是

🚩 毕业设计 大数据时间序列股价预测分析系统

该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:3分

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

2 时间序列的由来

提到时间序列分析技术,就不得不说到其中的AR/MA/ARMA/ARIMA分析模型。这四种分析方法的共同特点都是跳出变动成分的分析角度,从时间序列本身出发,力求得出前期数据与后期数据的量化关系,从而建立前期数据为自变量,后期数据为因变量的模型,达到预测的目的。来个通俗的比喻,大前天的你、前天的你、昨天的你造就了今天的你。

2.1 四种模型的名称:

  • AR模型:自回归模型(Auto Regressive model);
  • MA模型:移动平均模型(Moving Average model);
  • ARMA:自回归移动平均模型(Auto Regressive and Moving Average model);
  • ARIMA模型:差分自回归移动平均模型。
  • AR模型:

如果某个时间序列的任意数值可以表示成下面的回归方程,那么该时间序列服从p阶的自回归过程,可以表示为AR§:

在这里插入图片描述
AR模型利用前期数值与后期数值的相关关系(自相关),建立包含前期数值和后期数值的回归方程,达到预测的目的,因此成为自回归过程。这里需要解释白噪声,白噪声可以理解成时间序列数值的随机波动,这些随机波动的总和会等于0,例如,某饼干自动化生产线,要求每包饼干为500克,但是生产出来的饼干产品由于随机因素的影响,不可能精确的等于500克,而是会在500克上下波动,这些波动的总和将会等于互相抵消等于0。

3 数据预览


import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

#准备两个数组
list1 = [6,4,8]
list2 = [8,6,10]

#分别将list1,list2转为Series数组
list1_series = pd.Series(list1) 
print(list1_series)
list2_series = pd.Series(list2) 
print(list2_series)

#将两个Series转为DataFrame,对应列名分别为A和B
frame = { 'Col A': list1_series, 'Col B': list2_series } 
result = pd.DataFrame(frame)

result.plot()
plt.show()

在这里插入图片描述

4 理论公式

4.1 协方差

首先看下协方差的公式:

在这里插入图片描述

在这里插入图片描述

4.2 相关系数

计算出Cov后,就可以计算相关系数了,值在-1到1之间,越接近1,说明正相关性越大;越接近-1,则负相关性越大,0为无相关性
公式如下:

在这里插入图片描述

4.3 scikit-learn计算相关性

在这里插入图片描述


#各特征间关系的矩阵图
sns.pairplot(iris, hue=‘species’, size=3, aspect=1)

在这里插入图片描述

Andrews Curves 是一种通过将每个观察映射到函数来可视化多维数据的方法。
使用 Andrews Curves 将每个多变量观测值转换为曲线并表示傅立叶级数的系数,这对于检测时间序列数据中的异常值很有用。


plt.subplots(figsize = (10,8))
pd.plotting.andrews_curves(iris, ‘species’, colormap=‘cool’)

在这里插入图片描述
这里以经典的鸢尾花数据集为例

setosa、versicolor、virginica代表了三个品种的鸢尾花。可以看出各个特征间有交集,也有一定的分别规律。


#最后,通过热图找出数据集中不同特征之间的相关性,高正值或负值表明特征具有高度相关性:

fig=plt.gcf()
fig.set_size_inches(10,6)
fig=sns.heatmap(iris.corr(), annot=True, cmap='GnBu', linewidths=1, linecolor='k', \
square=True, mask=False, vmin=-1, vmax=1, \
cbar_kws={"orientation": "vertical"}, cbar=True)

在这里插入图片描述

5 金融数据的时序分析

主要介绍:时间序列变化情况计算、时间序列重采样以及窗口函数

5.1 数据概况


import pandas as pd

tm = pd.read_csv('/home/kesci/input/gupiao_us9955/Close.csv')
tm.head()

在这里插入图片描述

数据中各个指标含义:

  • AAPL.O | Apple Stock
  • MSFT.O | Microsoft Stock
  • INTC.O | Intel Stock
  • AMZN.O | Amazon Stock
  • GS.N | Goldman Sachs Stock
  • SPY | SPDR S&P; 500 ETF Trust
  • .SPX | S&P; 500 Index
  • .VIX | VIX Volatility Index
  • EUR= | EUR/USD Exchange Rate
  • XAU= | Gold Price
  • GDX | VanEck Vectors Gold Miners ETF
  • GLD | SPDR Gold Trust

8年期间价格(或指标)走势一览图

在这里插入图片描述

5.2 序列变化情况计算

  • 计算每一天各项指标的差异值(后一天减去前一天结果)
  • 计算pct_change:增长率也就是 (后一个值-前一个值)/前一个值)
  • 计算平均计算pct_change指标
  • 绘图观察哪个指标平均增长率最高
  • 计算连续时间的增长率(其中需要计算今天价格和昨天价格的差异)

计算每一天各项指标的差异值(后一天减去前一天结果)

在这里插入图片描述

计算pct_change:增长率也就是 (后一个值-前一个值)/前一个值)

在这里插入图片描述

计算平均计算pct_change指标
绘图观察哪个指标平均增长率最高

在这里插入图片描述
除了波动率指数(.VIX指标)增长率最高外,就是亚马逊的股价了!贝佐斯简直就是宇宙最强光头强

计算连续时间的增长率(其中需要计算今天价格和昨天价格的差异)


#第二天数据
tm.shift(1).head()

#计算增长率
rets = np.log(tm/tm.shift(1))
print(rets.tail().round(3))

#cumsum的小栗子:
print('小栗子的结果:',np.cumsum([1,2,3,4]))

#增长率做cumsum需要对log进行还原,用e^x
rets.cumsum().apply(np.exp).plot(figsize=(10,6))

在这里插入图片描述
以上是在连续时间内的增长率,也就是说,2010年的1块钱,到2018年已经变为10多块了(以亚马逊为例)

(未完待续,该项目为demo预测部分有同学需要联系学长完成)

最后

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1009839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Git】Git 快照 Snapshot

Git 快照 Snapshot 在对 Git 基础的学习过程中,我们了解了 Git 仓库的基本结构: 工作目录暂存区版本库,即 .git 仓库 下面我们就通过一次修改、暂存以及提交的工作流程,来理解快照(Snapshot)的概念。 现…

基于Docker的JMeter分布式压测实战讲解

一个JMeter实例可能无法产生足够的负载来对你的应用程序进行压力测试。如本网站所示,一个JMeter实例将能够控制许多其他的远程JMeter实例,并对你的应用程序产生更大的负载。JMeter使用Java RMI[远程方法调用]来与分布式网络中的对象进行交互。JMeter主站…

Linux:基础开发工具之Makefile和缓冲区的基本概念

文章目录 动静态库自动化构建代码缓冲区 动静态库 首先要知道什么是链接: C程序中,并没有定义printf的函数实现,且在预编译中包含的stdio.h中也只有该函数的声明,而没有定义函数的实现 系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没…

旋转偏心裁切刀切向跟踪及半径补偿

1 裁刀半径补偿问题的提出 偏心裁刀一般皮革和纸箱行业用的比较多,它适用于裁切比较厚的材料。对于如图1所示的偏心裁刀,它的刀尖和旋转轴(也就是刀心)存在一个距离,设为半径r。由于改刀刀刃有方向,所以用该刀去切割直线时&#…

使用nvm管理node.js

使用nvm管理node.js 一、简介 nvm是一个node的版本管理工具。可以在多种系统上管理Node.js 版本的工具。使用 NVM,可以轻松地切换不同版本的Node.js,并方便地管理不同版本的全局包和本地包。 二、安装与下载 1.删除原有node.js 首先需要卸载已安装的…

免费音乐下载网站分享(MP3文件格式)

免费音乐下载网站分享(MP3文件格式) 最近需要下载一些歌曲,发现很多音乐app上下载文件都需要vip,再上网查询了一番,最后发现了一个宝藏网站,可以免费下载各种格式的MP3文件,在这里给大家分享一…

建设数字孪生智慧城市是未来城市的重要增长点

中国国家创新与发展战略研究会学术委员会常务副主席、重庆市原市长黄奇帆在《瞭望》撰文指出: AI时代的城市是由实体空间和数字空间组成的数字孪生城市,要充分重视对数字空间的治理。随着城市数字化进程的加快,城市、企业、个人开始形成多样化…

软件需求怎么写?

前言:一般来说,软件产品的需求人员的主要输出物就是软件需求,如果这个软件产品就XX系统,人们口中的“系统需求”和“软件需求”就没有什么区别了。在车企行业,推行这ASPICE体系,在这个体系中明确申请了系统…

2023工博会,正运动开放式激光振镜运动控制器应用预览(三)

展会倒计时:4天 本次的中国国际工业博览会正运动技术将携开放式激光振镜运动控制器ZMC408SCAN-V2亮相。 •绿色生产,减少材料和资源浪费,提升可持续性; •节省多套硬件成本,替代传统的激光加工系统,降低项…

【深度学习】树莓派Zero w深度学习模型Python推理

在机器学习开发过程中,当模型训练好后,接下来就要进行模型推理了,根据部署环境可分为三类场景: 边缘计算:一般指手机,嵌入式设备,直接在数据生成的设备上进行推理,因为能避免将采集…

MAC MINI 2012安装Montery折腾笔记

MAC MINI 2012安装Montery折腾笔记(作为电视盒子/远程开发机) 起因: 手头有个mac mini,2018年买的2手。一直都是10.12系统,处理python和苹果开发都受制于旧系统,很多软件也装不上,于是有了升级…

Qt开发 入门

1.Qt概述 什么是Qt 不论我们学习什么样的知识点首先第一步都需要搞明白它是什么,这样才能明确当前学习的方向是否正确,下面给大家介绍一下什么是Qt。 Qt是一个跨平台的C应用程序开发框架 具有短平快的优秀特质: 投资少、周期短、见效快、效益高几乎支持…

Java-集合类

集合 Java集合是Java中用于存储和管理一组对象的工具。Java集合提供了相应的方法,用于用户对集合内数据的操作。 Java集合类提供了许多不同的数据结构,如列表、队列、栈、集合和映射,以满足不同类型的编程需求。 程序中如何存储大批量同类型…

vue项目中使用特殊字体的步骤

写在前面 在项目中使用特殊字体,需要注意,所使用的特殊字体是否被允许商用或是个人开发,以及如何使用,切记不要侵权。 首先需要在对应字体网站下载字体文件,取出里面后缀名为.ttf的文件 然后把该文件放到src -> ass…

python自(2)切片 字典 遍历删除添加修改查询定义函数函数返回值作用域序列化异常报错urllib使用一个类型六个方法下载 视频音频图片

切片 # # 切片# s hello word# # 下标索引为0的 # print(s[0]) #h# # 左闭右开 (左是下标开始的,右是几个索引值)例如从0开始算 4个索引值 # print(s[0:4]) #hell# # 更改起始值的开始位置 # print(s[1:]) #ello word# # 下标结束位置 # p…

生成式人工智能在高等教育 IT 中的作用

作者:Jared Pane 通过将你大学的数据与公共 LLMs 和 Elasticsearch 安全集成来找到你需要的答案。 根据 2023 年 4 月 EDUCAUSE 的一项调查,83% 的受访者表示,生成式人工智能将在未来三到五年内深刻改变高等教育。 学术界很快就询问和想象生…

9月14日作业

实现myVector #include <iostream>using namespace std;template <typename T> class myVector { private:T* data;int size;int capacity; public:// 构造函数myVector() : data(nullptr), size(0), capacity(0) {}//拷贝构造函数myVector(const myVector& o…

Jetson Xavier NX开发板无屏幕远程连接

设备&#xff1a; jetson nx &#xff08;ubuntu20.04&#xff09;,win10 目标&#xff1a;实现jetson nx不连接屏幕实现远程连接并控制 网上比较多的答案都是使用vnc,但本人亲尝试过了vnc只有在jetson nx开发板连接有屏幕时候才有空&#xff0c;一旦不连接屏幕&#xff0c;…

千兆以太网网络层 ARP 协议的原理与 FPGA 实现

文章目录 前言一、ARP 帧的应用场景和存在目的二、ARP 帧工作原理三、以太网 ARP 帧发包实例设计四、以太网 CRC校验代码五、以太网 ARP 帧发包测试---GMII1.模拟数据发送2.仿真模块3.仿真波形六、以太网 ARP 帧发包测试---RGMII1.顶层文件2 .仿真代码七、上板测试(RGMII)前言…

浅显易懂理解傅里叶变换

说起电子硬件专业&#xff0c;那不得不提的就是傅里叶变换了。 大学课程中应该吓倒了很多人&#xff0c;谈傅里叶色变了。 本次就来重新认识一下电子硬件中的傅里叶变化。 首先理解之前&#xff0c;当然是需要先知道傅里叶这位大牛的人物百科啦。 傅里叶是法国数学家&#xff0…