深度学习RNN实现股票预测填坑笔记
本文主要参考以下网址,本文是对该网址所列出的步骤的实践笔记,如有侵权,请与我联系:
https://blog.****.net/buptgshengod/article/details/78880941
1.代码下载
根据作者最后列出的网址,在GIT-cmd下使用命令下载文件:
git clone https://github.com/jimenbian/stock-rnn
如果你没有更改配置,这个stock-rnn就下载在你的git根目录下。
2.运行
1.用python3第一次运行时你会出现这个错误:
File "D:\Pro2\Anaconda3\lib\random.py", line 272, in shuffle
x[i], x[j] = x[j], x[i]
TypeError: 'range' object does not support item assignment
参照这个网址的意见:
http://cache.baiducontent.com/c?m=9d78d513d9850aed0ffa950e5a56973b594381132bd6a3027fa58448e2735a310735bfee70351075c4c50d7000df140cb2a76734200351e1c69fc95dddcace75699f2745315bc4034f935fb8cb377e8777cf4de9de4aa6fbab67cff1858f9940148a0d0a20c6b6c91b1715b972ed5174a6b1993f481e41e0b66c36e8590075c8655df500aea174355addebd75747c72cc7666593af30b535&p=987ec64ad48111a05bec94255b4096&newp=9a72c64ad4934eac59eddc374e5c86231610db2151d7da166b82c825d7331b001c3bbfb423261507d3c676610bac4f57ecf63d71340225a3dda5c91d9fb4c57479&user=baidu&fm=sc&query=TypeError%3A+%27range%27+object+does+not+support+item+assignment&qid=cb6367ba00010053&p1=4
由于这个程序是在python2.7版本的tensorflow下运行的,但window下的python2.7无法安装tensorflow,
所以为了运行,要把这个python2.7版本的程序改成python3.5版本的。所以这样修改:
data_model.py文件第63行:
batch_indices = range(num_batches)
改为:
batch_indices = list(range(num_batches))
2.model_rnn.py文件第191行:
for sample_sym, indices in sample_indices.iteritems():
改为:
for sample_sym, indices in sample_indices.items():
3.之后程序能运行了,但是在stock/image下的图片由于背景是透明的,这些图片在win10自带的图片查看软件下的透明背景是黑的,很难看,所以我修改了背景为白色:
stock-rnn.py文件第269行:
plt.savefig(figname, format='png', bbox_inches='tight', transparent=True, )
改为:
plt.savefig(figname, format='png', bbox_inches='tight', transparent=True, facecolor='white', edgecolor='black')
# facecolor='white'在这里修改背景颜色
然后anaconda prompt下使用命令安装依赖的库:
pip install numpy==1.13.1 pandas==0.16.2 scikit-learn==0.16.1 scipy==0.19.1 tensorflow==1.2.1
anaconda prompt转到stock-rnn目录下输入命令开始训练并预测:
python main.py --stock_symbol=SP500 --train --input_size=1 --lstm_size=128 --max_epoch=50
3.查看结果
在stock-rnn/images/目录下的文件夹就是此次你训练后测试生成的图片。
如果使用更大的数据量,经过更多次数的迭代,预测结果会更准确。
附录:
1.关于使用anaconda出现CondaHTTPError错误的解决
https://blog.****.net/ling_xiobai/article/details/78659981
按照上面配置了清华大学的镜像
2.安装tensorflow==1.2.1时遇到错误:
Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: 'd:\\pro2\\anaconda3\\lib\\site-packages\\tensorflow_gpu-1.1.0.dist-info\\METADATA'
去Anaconda3\Lib\site-packages下搜索tensorflow_gpu-1.1.0.dist-info并删除这个文件夹与搜索到的文件
3.怎么理解神经网络的迭代:iteration、epoch
https://zhidao.baidu.com/question/716300338908227765.html
atchsize:中文翻译为批大小(批尺寸)。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
iteration:中文翻译为迭代,1个iteration等于使用batchsize个样本训练一次;一个迭代 = 一个正向通过+一个反向通过
epoch:迭代次数,1个epoch等于使用训练集中的全部样本训练一次;一个epoch = 所有训练样本的一个正向传递和一个反向传递
举个例子,训练集有1000个样本,batchsize=10,那么:训练完整个样本集需要:100次iteration,1次epoch。
4.股市中VOLUME是什么意思
https://zhidao.baidu.com/question/1576619087572264900.html
Volume 表示股票成交量的意思,成交量=成交股数*成交价格 再加权求和;成交量指标(VOL)是指一个时间单位内撮合成交的股数,用柱形实体表示。里面绿柱,红柱是随当日K线的变化而变化,也就是说日K线收红则成交量柱也为红,反之是绿。但并不是说涨了就为红,而是收盘价高于开盘价则K线为红,收盘价低于开盘价则K线为绿。