股票数据集3- 纳斯达克NASDAQ 100 指数预测

通过4天股票数据预测后1天的数据

1. 特征选择

从上一节的PCA特征分析中,我们大概选择40-60只股票就可涵盖该数据集的主要信息。

因此,我们选择前32 or 64只股票作为模型输入, NASDAQ指数作为预测输出。

也可以根据上一节内容,分析特征重要性以筛选重要特征,这里未做该部分优化。

2. 数据处理

2.1 处理空值nan

我们用的是全数据集full = './nasdaq100/full/full_non_padding.csv’

对里面大量nan值做填充(padding)

#数据清洗,去除NaN数据,用邻近均值做填充(padding)
def nan_helper(y):return np.isnan(y), lambda z: z.nonzero()[0]
data = df.to_numpy()
for col in range(data.shape[1]):nans, x = nan_helper(data[:,col])data[nans,col] = np.interp(x(nans),x(~nans),data[~nans,col])
df = pd.DataFrame(data,columns = columns)

2.2 数据拼接

我们选择数据的前n支股票,预测最后1个指数,数据的shape是(74501, 105)

因此需要抽取n支股票后按列拼接:


data1 = df.iloc[:,:(input_size-1)] # 这里需要保留前input_size-1个特征,
data2 = df.iloc[:,-1]  # 最后一个指数特征
data = pd.concat([data1,data2],axis=1) #按列拼接
print(data.shape)

3. 模型训练 &模型评估

模型有两种思路一种直接参考天气数据的预测:

  • 天气数据预测

另一种是通过自编码器,一种更复杂的RNN结构:

  • DA-RNN

我们用的是第一种,大体输出结果如下:

## RNN
# Test Loss: 6.7714215 Ep=10, LR=1e-3 
# Test Loss: 0.0841337 Ep=10, LR=1e-4
# Test Loss: 0.0620537 Ep=10, LR=5e-5 | Epoch [10/10], Loss: 0.0000688
# Test Loss: 0.0555936 Ep=10, LR=1e-5 | Epoch [10/10], Loss: 0.0000089## GRU
# Test Loss: 0.0495339 Ep=10, LR=1e-5 | Epoch [10/10], Loss: 0.0000048
# Test Loss: 0.0875661 Ep=20, LR=1e-5 | Epoch [20/20], Loss: 0.0000326# Test Loss: 0.0745597 Ep=10, LR=1e-6 | Epoch [10/10], Loss: 0.0000036
# Test Loss: 0.0763733 Ep=20, LR=1e-6 | Epoch [20/20], Loss: 0.0004341
# Test Loss: 0.0602298 Ep=20, LR=1e-5 | Epoch [20/20], Loss: 0.0000151
# Test Loss: 0.1652189 Ep=20, LR=1e-5 | Epoch [20/20], Loss: 0.0000038 | input_size = 32 => 64# Test Loss: 0.0413432 Ep=20, LR=1e-6 | Epoch [20/20], Loss: 0.0000610 | input_size = 32 => 64 hidden_size = 64 => 128# Test Loss: 0.0537035  Ep=20, LR=1e-6 | Epoch [20/20], Loss: 0.0003193  | input_size = 32 hidden_size = 64 => 128
# Test Loss: 0.0897933 Ep=20, LR=1e-6 | Epoch [20/20], Loss: 0.0003652 | input_size = 32 => 64 hidden_size = 64 => 128 Layers = 3# Test Loss: 0.0827767 Ep=20, LR=1e-7 | Epoch [20/20], Loss: 0.0080595  | input_size = 32 hidden_size = 128
# Test Loss: 0.0882905 Ep=30, LR=1e-7 | Epoch [30/30], Loss: 0.0144194  | input_size = 64 hidden_size = 128

通过4天股票数据预测后1天的数据,最好的测试结果在Test Loss: 0.0413432,有效,但还有改进的空间。

4.总结

  • train loss,不是越低越好
  • epoch, 也不是越低越好
  • 所有参数需要在“同等规模”下,即相匹配,才能发挥模型性能

Reference

  • 本案例代码: https://github.com/disanda/b_code/blob/master/2.Stock_Prediction/readme.md

  • A case: https://chandlerzuo.github.io/blog/2017/11/darnn

  • 数据集: https://cseweb.ucsd.edu/~yaq007/NASDAQ100_stock_data.html

  • 论文: https://arxiv.org/abs/1704.02971

    “A Dual-Stage Attention-Based Recurrent Neural Network for Time Series Prediction” IJCAI, 2017

    Code: https://github.com/Seanny123/da-rnn

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

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

相关文章

CISSP—实现安全治理和原则的策略

0x00 前言 首先拿到这个标题会想到什么内容呢, 实现安全治理和原则的策略,简要的拆分成问题就是 什么是安全治理什么是安全原则他们的策略是什么如何实现 其实这个就是当我们看到这个标题的时候应该想到的事情。若果这一章节学完,没有理解…

台灯学生用哪个牌子最好?学生台灯十大名牌排行榜分享

近年来,我们注意到儿童近视的现象呈现出增多且趋于低龄化的趋势。这一变化,部分原因可以归咎于孩子们越来越多地使用电子产品,另一部分则与他们面临的学业压力增加有关。鉴于此,家长们在挑选儿童学习用品时变得格外谨慎&#xff0…

Qt系统相关

本文目录 1.Qt事件事件的处理标签事件鼠标事件滚轮事件按键事件定时器事件窗口事件事件派发器 2.Qt文件操作QFile的基本使用 3.Qt多线程使用线程线程锁connect的第五个参数 条件变量和信号量 4.Qt网络编程UDP SocketTCP SocketQTcpServerQTcpSocket HTTP的编写 5.QT多媒体播放音…

【CTF MISC】XCTF GFSJ0766 something_in_image Writeup(字符串搜索)

something_in_image 暂无 解法 用 binwalk 扫描。 binwalk badimages 找到一个 ext3 文件系统。 strings badimages | grep {*}找到 flag。 Flag Flag{yc4pl0fvjs2k1t7T}声明 本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验…

Redis面试题、知识点总结,一篇文章让Redis成为面试加分项

Redis面试题、知识点总结,一篇文章让Redis成为面试加分项 前言 参与了几次中大厂的面试,你会发现一面时对于八股文的考察也具有侧重点(MySQLRedis > 网络 > 系统 >设计模式 > java集合> JVM >spring) 本文的目标就是通过…

收音机的原理笔记

1. 收音机原理 有线广播:我们听到的声音是通过空气振动进行传播,因此可以通过麦克风(话筒)将这种机械振动转换为电信号,传到远处,再重新通过扬声器(喇叭)转换为机械振动&#xff0c…

软件设计师笔记-程序语言基础知识

编程语言之间的翻译形式 编程语言之间的翻译形式主要有三种:汇编、解释和编译。这三种方式在将源代码转换为机器可执行的代码时,有着各自的特点和流程。 汇编: 定义:汇编是低级语言(如汇编语言)到机器语言的一种翻译方式。汇编语言是为特定计算机或计算机系列设计的一种…

PostgreSQL的视图pg_database

PostgreSQL的视图pg_database pg_database 是 PostgreSQL 中的一个系统视图,用于显示当前数据库集群中的所有数据库的信息。通过查询 pg_database 视图,数据库管理员可以获取关于每个数据库的详细信息,例如数据库的名称、所有者、编码、表空…

打造精细化运维新玩法(四)

二、SLO健康度——从0到1构建SLO 和大多互联网企业一样,蚂蚁的基础设施侧存在众多的异构系统,被上层的业务应用和服务所依赖。考虑到不同系统的技术栈、架构、部署等因素,我们需要找到一种通用的、泛化性强的数字化方案指导和构建基础设施域内…

智能楼宇可视化:赋能智慧园区管理

图扑智慧园区楼宇可视化系统,集成多种数据源,实现全方位监控与管理,提升园区的资源利用率和用户满意度,推动智能化管理进程。

豆瓣电影信息爬虫实战-2024年6月

豆瓣电影信息爬虫教程 摘要 本文将详细介绍如何使用Python编写一个爬虫程序,用于抓取豆瓣电影列表页面上的电影详细信息。通过本教程,你将学习到如何使用requests和PyQuery库来发送HTTP请求、解析HTML内容,并提取所需的数据。 目录 环境搭…

【机器学习】使用RetinaNet解决图像识别的正负样本失衡问题

1. 引言 1.1. 研究背景 正负样本失衡问题的表现和影响在目标检测任务中尤为显著,下面我将从多个方面更详细地阐述这一问题: 1.1.1.正负样本失衡的表现形式 样本数量差异显著: 在目标检测的数据集中,正样本(包含目标…

电线电缆单根燃烧试验 电缆垂直燃烧试验

电线电缆单根燃烧试验 电线电缆单根燃烧试验是一种用来评估电线电缆在受到火焰作用时的燃烧性能的测试方法。这种试验通常是将电线电缆垂直固定,然后使用特定的火焰源对其进行燃烧,以观察电线电缆的燃烧行为和燃烧速度。通过这个试验,可以评估…

护眼台灯哪个品牌好?几款性价比最高的护眼台灯推荐

在过去,科技尚未发展至如今这般先进水平时,晚上需要照明的时候,我们通常只能依赖白炽灯。尽管白炽灯以其低成本和接近自然光的显色性获得了一定的青睐,随着时代的发展,现在市面上出现了更为护眼的选择——LED台灯。然而…

一文介绍暗区突围手游 游戏特色、具体玩法和独特的玩法体验

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 《暗区突围》是一款由腾讯魔方工作室群开发的第一人称射击游戏,于 2022 年 7 月 13 日正式公测,支持 Android 和 iOS 平台。这款游戏以从虚构的暗区收集物资并安全撤离作为最终目…

OpenGauss数据库-7.用户及角色

第1关:创建用户 gsql -d postgres -U gaussdb -W passwd123123 CREATE USER jackson WITH PASSWORD jackson123; 第2关:修改用户 gsql -d postgres -U gaussdb -W passwd123123 ALTER USER jackson WITH PASSWORD Abcd123; 第3关:创建角色 …

【JVM】JVM 的内存区域

Java虚拟机(JVM)在执行Java程序时,将其运行时数据划分到若干不同的内存区域。这些内存区域的管理对Java应用程序的性能和稳定性有着重要影响。JVM的内存区域主要包括以下几部分: 方法区(Method Area)&#…

Qt实现简易播放器

效果如图 源码地址: 简易播放器: 基于Qt的简易播放器,底层采用VLC源码 - Gitee.com GitHub:GitHub - a-mo-xi-wei/easy-player: 基于Qt的调用VLC的API的简易播放器

Linux操作系统学习:day01

内容来自:Linux介绍 视频推荐:Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试 day01 基础概念 Linux 是 UNIX 操作系统的一个克隆系统, 但是Linux是开源的。 Linux是一个基于文件的操作系统。操作系统需要和硬件进行交互…

【TensorFlow深度学习】使用TensorFlow实现双DQN与优先级经验回放

使用TensorFlow实现双DQN与优先级经验回放 使用TensorFlow实现双DQN与优先级经验回放:强化学习的高级策略探索双DQN算法简介优先级经验回放代码实现结语 使用TensorFlow实现双DQN与优先级经验回放:强化学习的高级策略探索 在深度强化学习领域&#xff0…