【转】基于keras 的神经网络股价预测模型

  1 from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY
  2 from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc
  3 #import matplotlib
  4 import tushare as ts
  5 import pandas as pd
  6 import matplotlib.pyplot as plt
  7 from matplotlib.pylab import date2num
  8 import datetime
  9 import numpy as np
 10 from pandas import DataFrame
 11 from numpy import row_stack,column_stack
 12
 13 df=ts.get_hist_data(‘601857‘,start=‘2016-06-15‘,end=‘2017-11-06‘)
 14 dd=df[[‘open‘,‘high‘,‘low‘,‘close‘]]
 15
 16 #print(dd.values.shape[0])
 17
 18 dd1=dd .sort_index()
 19
 20 dd2=dd1.values.flatten()
 21
 22 g1=dd2[::-1]
 23
 24 g2=g1[0:120]
 25
 26 g3=g2[::-1]
 27
 28 gg=DataFrame(g3)
 29
 30 gg.T.to_excel(‘gg.xls‘)
 31
 32
 33
 34 #dd3=pd.DataFrame(dd2)
 35 #dd3.T.to_excel(‘d8.xls‘)
 36
 37 g=dd2[0:140]
 38 for i in range(dd.values.shape[0]-34):
 39
 40     s=dd2[i*4:i*4+140]
 41     g=row_stack((g,s))
 42
 43 fg=DataFrame(g)
 44
 45 print(fg)
 46 fg.to_excel(‘fg.xls‘)
 47
 48
 49 #-*- coding: utf-8 -*-
 50 #建立、训练多层神经网络,并完成模型的检验
 51 #from __future__ import print_function
 52 import pandas as pd
 53
 54
 55 inputfile1=‘fg.xls‘ #训练数据
 56 testoutputfile = ‘test_output_data.xls‘ #测试数据模型输出文件
 57 data_train = pd.read_excel(inputfile1) #读入训练数据(由日志标记事件是否为洗浴)
 58 data_mean = data_train.mean()
 59 data_std = data_train.std()
 60 data_train1 = (data_train-data_mean)/5  #数据标准化
 61
 62 y_train = data_train1.iloc[:,120:140].as_matrix() #训练样本标签列
 63 x_train = data_train1.iloc[:,0:120].as_matrix() #训练样本特征
 64 #y_test = data_test.iloc[:,4].as_matrix() #测试样本标签列
 65
 66 from keras.models import Sequential
 67 from keras.layers.core import Dense, Dropout, Activation
 68
 69 model = Sequential() #建立模型
 70 model.add(Dense(input_dim = 120, output_dim = 240)) #添加输入层、隐藏层的连接
 71 model.add(Activation(‘relu‘)) #以Relu函数为激活函数
 72 model.add(Dense(input_dim = 240, output_dim = 120)) #添加隐藏层、隐藏层的连接
 73 model.add(Activation(‘relu‘)) #以Relu函数为激活函数
 74 model.add(Dense(input_dim = 120, output_dim = 120)) #添加隐藏层、隐藏层的连接
 75 model.add(Activation(‘relu‘)) #以Relu函数为激活函数
 76 model.add(Dense(input_dim = 120, output_dim = 20)) #添加隐藏层、输出层的连接
 77 model.add(Activation(‘sigmoid‘)) #以sigmoid函数为激活函数
 78 #编译模型,损失函数为binary_crossentropy,用adam法求解
 79 model.compile(loss=‘mean_squared_error‘, optimizer=‘adam‘)
 80
 81 model.fit(x_train, y_train, nb_epoch = 100, batch_size = 8) #训练模型
 82 model.save_weights(‘net.model‘) #保存模型参数
 83
 84 inputfile2=‘gg.xls‘ #预测数据
 85 pre = pd.read_excel(inputfile2)
 86
 87 pre_mean = data_mean[0:120]
 88 pre_std = pre.std()
 89 pre1 = (pre-pre_mean)/5  #数据标准化
 90
 91 pre2 = pre1.iloc[:,0:120].as_matrix() #预测样本特征
 92 r = pd.DataFrame(model.predict(pre2))
 93 rt=r*5+data_mean[120:140].as_matrix()
 94 print(rt.round(2))
 95
 96
 97
 98 rt.to_excel(‘rt.xls‘)
 99
100 #print([email protected]_train.iloc[:,116:120].std().values+data_mean[116:120].as_matrix())
101
102
103
104 a=list(df.index[0:-1])
105
106 b=a[0]
107
108 c= datetime.datetime.strptime(b,‘%Y-%m-%d‘)
109
110 d = date2num(c)
111
112
113 c1=[d+i+1 for i in range(5)]
114 c2=np.array([c1])
115
116 r1=rt.values.flatten()
117 r2=r1[0:4]
118 for i in range(4):
119
120     r3=r1[i*4+4:i*4+8]
121     r2=row_stack((r2,r3))
122
123 c3=column_stack((c2.T,r2))
124 r5=DataFrame(c3)
125
126 if len(c3) == 0:
127     raise SystemExit
128
129 fig, ax = plt.subplots()
130 fig.subplots_adjust(bottom=0.2)
131
132 #ax.xaxis.set_major_locator(mondays)
133 #ax.xaxis.set_minor_locator(alldays)
134 #ax.xaxis.set_major_formatter(mondayFormatter)
135 #ax.xaxis.set_minor_formatter(dayFormatter)
136
137 #plot_day_summary(ax, quotes, ticksize=3)
138 candlestick_ohlc(ax, c3, width=0.6, colorup=‘r‘, colordown=‘g‘)
139
140 ax.xaxis_date()
141 ax.autoscale_view()
142 plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment=‘right‘)
143
144 ax.grid(True)
145 #plt.title(‘000002‘)
146 plt.show()

时间: 2024-08-30 07:43:42

【转】基于keras 的神经网络股价预测模型的相关文章

基于 Keras 用 LSTM 网络做时间序列预测

基于 Keras 用 LSTM 网络做时间序列预测 本文主要参考了 Jason Brownlee 的博文 Time Series Prediction with LSTM Recurrent Neural Networks in Python with Keras 原文使用 python 实现模型,这里是用 R 时间序列预测是一类比较困难的预测问题. 与常见的回归预测模型不同,输入变量之间的"序列依赖性"为时间序列问题增加了复杂度. 一种能够专门用来处理序列依赖性的神经网络被称为 递归

学习参考+《深度学习基于Keras的Python实践》PDF+ 源代码+魏贞原

深度学习学习框架有tensorflow.pytorch.keras.学习keras时,推荐<深度学习:基于Keras的Python实践>,适合深度学习入门和实践. 尤其是第三部分,利用卷积神经网络解决情感分析问题比较好. <深度学习:基于Keras的Python实践>系统讲解了深度学习的基本知识,以及使用深度学习解决实际问题,详细介绍了如何构建及优化模型,并针对不同的问题给出不同的解决方案,通过不同的例子展示了在具体项目中的应用和实践经验. 推荐参考:<深度学习:基于Kera

基于开源JOONE 神经网络实例

作者:北邮小生-chaosju 1.入门书籍推荐: 人工神经网络教程-韩力群  北京邮电大学出版社       写算法要了解算法的原理,方能写出好算法,明白原理实现算法 事半功倍 2.Joone JOONE(Java Object Oriented Neural Network)是sourceforge.net上一个用java语言迅速开发神经网络的开源项目.JOONE支持很多的特性,比如多线程和分布式计算,这意味着可以JOONE可以利用多处理器或是多计算机来均衡附载. JOONE主要有三个大的模

使用Keras训练神经网络备忘录

使用Keras训练神经网络备忘录 小书匠 深度学习 文章太长,放个目录: 1.优化函数的选择 2.损失函数的选择 2.2常用的损失函数 2.2自定义函数 2.1实践 2.2将损失函数自定义为网络层 3.模型的保存 3.1同时保持结构和权重 3.2模型结构的保存 3.3模型权重的保存 3.5选择网络层载入 4.训练历史的保存 4.1检测运行过程的参数 4.2保持训练过程得到的所有数据 5.陷阱:validation_split与shuffle 1.优化函数的选择 先写结论,后面再补上每个优化函数的

[AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建

这篇文章详细介绍在centOS7.5上搭建基于keras/tensorflow的深度学习环境,该环境可用于实际生产.本人现在非常熟练linux(Ubuntu/centOS/openSUSE).windows上该环境的搭建 :) 前面三篇博客代码实现均基于该环境(开发或者测试过): [AI开发]Python+Tensorflow打造自己的计算机视觉API服务 [AI开发]基于深度学习的视频多目标跟踪实现 [AI开发]视频多目标跟踪高级版 运行环境 1) centOS 7.5 ,不要安装GUI桌面:

基于Numpy的神经网络+手写数字识别

基于Numpy的神经网络+手写数字识别 本文代码来自Tariq Rashid所著<Python神经网络编程> 代码分为三个部分,框架如下所示: # neural network class definition class neuralNetwork: # initialise the neural network def __init__(): pass # train the neural network def train(): pass # query the neural netwo

算法-基于MACD的Adaboost股价涨跌预测模型

  郑重声明:股市有风险,投资需谨慎,利用本模型实盘请自行承担风险 MACD是一个指标,具体用法是MACD>0看涨,反之看跌,果真是这样的吗?由于所有的技术指标都基于对历史数据的统计,指标的滞后性也就难免,有时候MACD明明大于0,股价仍然跌,有时候macd小于0,股价仍然涨. 本文基于Adaboost算法提出了一种基于macd的线性阀值分类器作为若分类器,通过在限定的解空间内寻找使得错误率最小的阀值和偏置,这样做避免了训练若分类器的复杂性,经验证,这种方法有效. 关于什么是adaboost算法

DeepLearning (五) 基于Keras的CNN 训练cifar-10 数据库

数据库介绍 开发工具 网络框架 训练结果 训练要点 激活函数 Dropout 的作用 训练代码 [原创]Liu_LongPo 转载请注明出处[CSDN]http://blog.csdn.net/llp1992 数据库介绍 Cifar-10是由Hinton的两个大弟子Alex Krizhevsky.Ilya Sutskever收集的一个用于普适物体识别的数据集. Cifar-10由60000张32*32的RGB彩色图片构成,共10个分类.50000张训练,10000张测试(交叉验证).这个数据集最

基于并行化的神经网络和复旦中文语料库,构建中文概率语言模型

本文旨在基于复旦中文语料库和神经网络模型构建中文的概率语言模型. 统计语言模型的一个目标是找到句子中不同词汇的联合分布,也就是找到一个单词序列出现的概率,一个训练好的统计语言模型可以被应用于语音识别.中文输入法.机器翻译等领域.在神经网络方法被提出之前,一个非常成功的构建语言模型的方法是 n-gram,n-gram 模型学习出统计出给出特定的单词序列时某个单词出现的条件概率,并且通过把一系列重叠的短语拼接起来,获得了模型的泛化能力.然而 n-gram 模型也有很多不如人意的地方.第一, n 的数