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

文章目录

  • 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.rhkb.cn/news/109455.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++ 个人笔记

仅供个人复习, C语言IO占位符表 %d十进制整数(int)%ldlong%lldlong long%uunsigned int%o八进制整型%x十六进制整数/字符串地址%c单个字符%s字符串%ffloat,默认保留6位%lfdouble%e科学计数法%g根据大小自动选取f或e格式,去掉无效0 转义符表…

java八股文面试[多线程]——线程的生命周期

笔试题:画出线程的生命周期,各个状态的转换。 5.等待队列(本是Object里的方法,但影响了线程) 调用obj的wait(), notify()方法前,必须获得obj锁,也就是必须写在synchronized(obj) 代码段内。与等待队列相关的步骤和图 …

攻防世界-Web_php_unserialize

原题 解题思路 注释说了flag存在f14g.php中,但是在wakeup函数中,会把传入的文件名变成index.php。看wp知道,如果被反序列话的字符串其中对应的对象的属性个数发生变化时,会导致反序列化失败而同时使得__wakeup 失效(CV…

MySQL每日一练--销售管理系统

一,创建数据库SaleSys 二,在数据库SaleSys中创建3张表 品牌信息表(brand) BrandId --品牌编号,整型,自动增长,主键BrandName --品牌名称,字符型, 唯一约束 商品表…

7 集群基本测试

1. 上传小文件到集群 在hadoop路径下执行命令创建一个文件夹用于存放即将上传的文件: [atguiguhadoop102 ~]$ hadoop fs -mkdir /input上传: [atguiguhadoop102 hadoop-3.1.3]$ hadoop fs -put wcinput/work.txt /input2.上传大文件 [atguiguhadoop1…

【百草阁送书-第二期】一名阿里服务端开发工程师的进阶之路

文章目录 一、前言二、AI 时代,服务端开发面临新挑战三、服务端开发会被 AI 取代吗?四、知识体系化,构建核心竞争力五、业界首本体系化、全景式解读服务端开发的著作六、参与抽奖方式 一、前言 目前,资讯、社交、游戏、消费、出行…

C#__使用Thread启动线程和传输数据

class Program{static void Test(){Console.WriteLine("Start……");Thread.Sleep(2000); // 1s等于1000ms,暂停2sConsole.WriteLine("end");}static void Download(Object ob){string str ob as string; // 遍历传递过来的ob字符串Console.Wr…

leetcode 739. 每日温度

2023.8.28 本题用暴力双层for循环解会超时&#xff0c;所以使用单调栈来解决&#xff0c;本质上是用空间换时间。维护一个单调递减栈&#xff0c;存储的是数组的下标。 代码如下&#xff1a; class Solution { public:vector<int> dailyTemperatures(vector<int>&…

学习记录——FeatEnHancer

FeatEnHancer: Enhancing Hierarchical Features for Object Detection and Beyond Under Low-Light Vision 一种适用于任意低光照任务增强方法 ICCV 2023 提出了FeatEnHancer&#xff0c;一种用于低光照视觉任务的增强型多尺度层次特征的新方法。提议的解决方案重点增强相关特…

checkstyle检查Java编程样式:空格检查

一个空行不能有空格 例如&#xff0c;第22行是空行&#xff0c;有4个空格&#xff0c;checkstyle检查报错&#xff1a; 将4个空格删掉&#xff0c;checkstyle检查通过&#xff1a; 行末尾不能有空格 将行末尾的空格删掉即可消除这个违反项&#xff1a; 用WhitespaceAfte…

uniapp启动微信小程序开发者工具报错Enable IDE Service (y/N) 

下载安装好微信小程序开发者路径 配置好启动路径后 报错[微信小程序开发者工具] ? Enable IDE Service (y/N) [27D[27C 解决办法 因为微信开发者工具的服务端口号没有打开

5 群起集群

1.在启动集群之前&#xff0c;先配置workers,有几个节点就配置几个 [atguiguhadoop102 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers在该文件中增加如下内容&#xff1a; hadoop102 hadoop103 hadoop104 注意&#xff1a;该文件中添加的内容结尾不允许有空格&a…

打造个人的NAS云存储-通过Nextcloud搭建私有云盘实现公网远程访问

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…

数据结构(Java实现)-ArrayList与顺序表

什么是List List是一个接口&#xff0c;继承自Collection。 List的使用 List是个接口&#xff0c;并不能直接用来实例化。 如果要使用&#xff0c;必须去实例化List的实现类。在集合框架中&#xff0c;ArrayList和LinkedList都实现了List接口。 线性表 线性表&#xff08;lin…

爬虫selenium获取元素定位方法总结(动态获取元素)

目录 元素 查看元素信息 元素定位 通过元素id定位 通过元素name定位 通过xpath表达式定位 绝对路径 相对路径 通过完整超链接定位 通过部分链接定位 通过标签定位 通过类名进行定位 通过css选择器进行定位 id选择器 class选择器 标签选择器 属性选择器 定位带…

华为云物联网平台微信小程序开发教程2.0【完整详细教程】

一、简介 在之前曾发布过一篇文章“华为云物联网平台的微信小程序开发”&#xff0c;在最近接到部分用户私信在使用开发过程中出现的问题&#xff0c;例如API访问的"401"现象等问题&#xff0c;在重新查看上面的文章教程时发现教程内容的步骤不详细&#xff0c;现对教…

上位机采集8通道模拟量模块数据

模拟量模块和上位机的配合使用可以实现对模拟量数据的采集、传输和处理。下面是它们配合使用的一般步骤&#xff1a;1. 连接模拟量模块&#xff1a;将模拟量模块与上位机进行连接。这通常涉及将模拟量模块的输入通道与被监测的模拟信号源连接起来&#xff0c;如传感器、变送器等…

使用实体解析和图形神经网络进行欺诈检测

图形神经网络的表示形式&#xff08;作者使用必应图像创建器生成的图像&#xff09; 一、说明 对于金融、电子商务和其他相关行业来说&#xff0c;在线欺诈是一个日益严重的问题。为了应对这种威胁&#xff0c;组织使用基于机器学习和行为分析的欺诈检测机制。这些技术能够实时…

sql:SQL优化知识点记录(三)

&#xff08;1&#xff09;explain之select_type和table介绍 简单的查询类型是&#xff1a;simple 外层 primary&#xff0c;括号里subquery 用到了临时表&#xff1a;derived &#xff08;2&#xff09;explain之select_type介绍 trpe反映的结果与我们sql是否优化过&#xff…

驱动作业,按键中断阻塞LED灯

驱动程序 #include "head.h" #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include <linux/device.h> #include <linux/export.h> #in…