利用CNN对股票“图片”进行涨跌分类——一次尝试【附源码】
首先解释一下标题:
CNN:卷积神经网络(Convolutional Neural Network), 在图像处理方面有出色表现,不是被川普怒怼的那个新闻网站;
股票涨跌:大家都懂的,呵呵;
股票图片:既然使用CNN,那么如果输入数据是股票某个周期的K线图片就太好了。当然,本文中使用的图片并不是在看盘软件上一张一张截下来的,而是利用OHLC数据“画”出来的;
尝试:这个词委婉一点说就是“一个很好的想法_",比较直白的说法是“没啥效果T_T”。
进入正题:
首先是画出图片。本文目前是仿照柱线图画的。
大致的想法是:
- 对每个样本,将32time_steps×4features(OHLC)数据归一化处理,即所有取值均在[0,1]之间;
- 构建一个128×128像素的全0数组,将[0,1]区间等分为128份,分到每列的128个像素点上;
- 然后使用每四列构建一根K线(前三列画柱状线,第四列作为间隔行):第一列描绘开盘价,开盘价与该列的哪个像素点最近,那么这个像素点取值就由0变为1;第二列描绘高低价区间,将 最高价至 最低价 范围内的像素点取值由0变为1;第三列描绘收盘价,收盘价与该列的哪个像素点最近,那么这个像素点取值就由0变为1。
这样每个样本就构建了一张由32根K线组成,类似柱线图的“图片”,下面是一个样本画的一张图(为了便于观看,将0替换成空格,将1替换成圆点):
其实还蛮像柱线图的。
测试阶段:
原始数据:最终选择的数据是100只2005年以前上市的股票。1只股票数据太少,全部股票数据又太多,所以 股票三千,我只取一百;“上市时间前于2005年”这个条件 主要考虑在每只股票上取样数量不会太少。
生成样本:每只股票每32根K线生成一个样本,每隔8根K线取一次样。然后按照上述作图方法将其变成图片。标签:若未来五日收益为正,标签为[1,0],否则,标签为[0,1]。15年1月1日之前数据用作train和evaluate,之后数据用作test。
构建模型:本文所用模型共5层,先后顺序为 卷积层-池化层-卷积层-池化层-全连接层,中间还夹杂了两个Dropout和一个Flatten,用来防止过拟合和一维化数据,不过由于他们是无权重的,所以没将他们算作一层。
预测效果:
在train和evaluate阶段,看起来还是不错的:
但是在test阶段:
第一个值是loss,第二个值是准确率,不要看反。。。呵呵
听说有一种很厉害的操作——去除label不明显的样本——可能会提高模型效果。所以本文又对训练样本进行了一次筛选,只保留了未来五日收益在最前30%和最后30%的样本。然后input到模型做训练。最终test集上效果:
有(mei)所(sha)改(xiao)善(guo)!
问题分析:
目前发现的一个问题:一幅图中被标记的像素点太少了。下面两张图为train-evaluate样本和test样本中值为1的像素点占总像素点(128×128=16384)比重的分布。
值为1的像素点占总像素点比重平均不到5%,最大的比重也未超过10%。这说明在模型训练阶段有些像素点对应的weights仅仅被训练了很少的次数甚至未经训练,这影响了模型在test数据上的表现。之后可能会针对这一问题做一些改进,以增加每张图值为1的像素点占总像素点比例
原文附详细代码:利用CNN对股票“图片”进行涨跌分类——一次尝试
BigQuant——人工智能量化投资平台
利用CNN对股票“图片”进行涨跌分类——一次尝试【附源码】相关推荐
- lda进行图片分类_利用CNN对股票“图片”进行涨跌分类——一次尝试
首先解释一下标题:CNN:卷积神经网络(Convolutional Neural Network), 在图像处理方面有出色表现,不是被川普怒怼的那个新闻网站:股票涨跌:大家都懂的,呵呵:股票图片:既然 ...
- echarts实现3D地图,轮播功能、背景图片、鼠标悬浮展示数据,附源码!
echarts实现3D地图,轮播功能.背景图片.鼠标悬浮展示数据,附源码! 一.图片效果 二. 代码 一.图片效果 由于本地图片上传失败,无法展示完整的,不过是在此图的基础上加了轮播和底纹 二. 代码 ...
- QT界面免费版开源图片转文字工具程序完整版附源码
QT界面免费版开源图片转文字工具程序完整版附源码 需求源码的朋友请留言 操作步骤如下:
- 【数据挖掘】利用sklearn进行数据预处理讲解与实战(超详细 附源码)
需要源码和PPT请点赞关注收藏后评论区留言私信~~~ scikit-learn提供的数据预处理相关的功能如下图 1. 数据标准化.平均去除和方差缩放 sklearn.preprocessing.sca ...
- chainer-图像分类-整体结构设计【附源码】
文章目录 图像的发展史及意义 一.图像分类框架搭建 二.数据集的准备 1.数据集描述 2.数据集准备 三.基于chainer的图像分类框架构建 1.导入主要的第三方库 2.数据加载器 3.模型构建 4 ...
- android仿疯狂猜图源码,Android开发实现高仿优酷的客户端图片左右滑动切换功能实例【附源码下载】...
本文实例讲述了Android开发实现高仿优酷的客户端图片左右滑动切换功能.分享给大家供大家参考,具体如下: 本例是用ViewPager去做的实现,支持自动滑动和手动滑动,不仅优酷网,实际上有很多商城和 ...
- 35行代码利用python生成字符画,非常适合初学者练习,附源码!
python字符画是一个简单有趣的小程序,非常适合初学者进行学(zhuang)习(bi).python字符画生成的原理及其简单,一句话概括就是----将图片像素点用不同字符代替,从而将像素组成的图片转 ...
- 用Python玩弄微信朋友圈,一键制作好友图片墙酷炸朋友圈(附源码)
上午发了张我微信近 2000 位好友的头像拼图,让大伙儿看能不能快速找到自己的头像,没想到反响很强烈,引得阵阵惊呼与膜拜,没有料到. 有没有犯密集恐惧症?这并不震撼,如果你有 5000 位好友的话,做 ...
- python利用百度AI进行图片识别与分类
python利用百度AI进行图片识别与分类 声明 此博客纯属记录我学习的过程,是本人的一次大作业,如果程序中有问题或者有更好的实现方法希望各位前辈多多指点 背景 大多数人的相册都是乱七八糟的,动物的照 ...
最新文章
- 二分类问题:基于BERT的文本分类实践!附完整代码
- 综述 | Google-斯坦福发布深度学习统计力学
- “智源 — INSPEC 工业大数据质量预测赛” 上线,为硬核工业制造炼就 AI 之心...
- C++中常用的字符串函数
- 前端获取div里面的标签_web前端教程JavaScript学习笔记DOM
- VTK:可视化之HanoiInitial
- Oracle数据库 ORA-01555 快照过旧 (undo表空间:撤销表空间)
- .net面试题大全,绝大部分面试题
- 怎么判断两颗二叉树相等
- Opencv--(x,y),(width,height)及(cols,rows)的关系
- OK335xS canutils deal with compile error
- ie6,ie7兼容性总结
- 树莓派安装摄像头 C110 motion
- ubuntu安装ffmpeg_手把手教你利用ffmpeg制作一个好用灵活的图片、视频压缩工具(再不需要去别的网站和用别的软件啦)...
- 网络数据库的复制和同步(一)
- 如何使用ArcGIS Pro制作三维地图
- easyswoole的安装
- Exception in thread main java.util.UnknownFormatConversionException: Conversion = ';'
- 揭开Java上传下载功能的神秘面纱
- 中国企业学习管理系统(LMS)市场趋势报告、技术动态创新及市场预测