Python Tensorflow神经网络实现股票预测
神经网络(NN)它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。在提供数据量足够大情况下,神经网络可以拟合出输入到输出之间的任意函数关系。
Tensorflow是一个优秀的深度学习框架,具体有啥好处,可以百度了解哈。
本文分享使用Tensorflow神经网络进行股市的预测
1、数据来源
首先找到一组股票数据,数据可以网络上爬虫,东方财富、大智慧都有。爬虫方法参看以前的文章。
date = np.linspace(1, 30, 30) #
beginPrice = np.array([2923.19, 2928.06, 2943.92, 2946.26, 2944.40, 2920.85, 2861.33, 2854.58, 2776.69, 2789.02,
2784.18, 2805.59, 2781.98, 2798.05, 2824.49, 2762.34, 2817.57, 2835.52, 2879.08, 2875.47,
2887.66, 2885.15, 2851.02, 2879.52, 2901.63, 2896.00, 2907.38, 2886.94, 2925.94, 2927.75])
endPrice = np.array([2937.36, 2944.54, 2941.01, 2952.34, 2932.51, 2908.77, 2867.84, 2821.50, 2777.56, 2768.68,
2794.55, 2774.75, 2814.99, 2797.26, 2808.91, 2815.80, 2823.82, 2883.10, 2880.00, 2880.33,
2883.44, 2897.43, 2863.57, 2902.19, 2893.76, 2890.92, 2886.24, 2924.11, 2930.15, 2957.41])
2、数据展示
基于matplotlib可视化库,建立一个30行2列的矩阵存储股票数据,矩阵的第一列是股票开盘价格,第二列是股票的收盘价格,如果股票的收盘价格高于开盘价格则用红色显示,反之则用绿色显示,可视化股票数据如下图所示。
for i in range(0, 30): # 画柱状图
dateOne = np.zeros([2])
dateOne[0] = i
dateOne[1] = i
priceOne = np.zeros([2])
priceOne[0] = beginPrice[i]
priceOne[1] = endPrice[i]
if endPrice[i] > beginPrice[i]:
plt.plot(dateOne, priceOne, 'r', lw=6)
else:
plt.plot(dateOne, priceOne, 'g', lw=6)
plt.xlabel("date")
plt.ylabel("price")
plt.show()
3、Tensorflow预测
基于Tensorflow神经网络框架,设计了三层神经网络,其中隐含层包括25个节点,设计的神经网络用来预测股票的收盘价。
dateNormal = np.zeros([30, 1])
priceNormal = np.zeros([30, 1])
# 归一化
for i in range(0, 30):
dateNormal[i, 0] = i / 29.0
priceNormal[i, 0] = endPrice[i] / 3000.0
x = tf.placeholder(tf.float32, [None, 1])
y = tf.placeholder(tf.float32, [None, 1])
# X->hidden_layer
w1 = tf.Variable(tf.random_uniform([1, 25], 0, 1))
b1 = tf.Variable(tf.zeros([1, 25]))
wb1 = tf.matmul(x, w1) + b1
layer1 = tf.nn.relu(wb1) # 激励函数
# hidden_layer->output
w2 = tf.Variable(tf.random_uniform([25, 1], 0, 1))
b2 = tf.Variable(tf.zeros([30, 1]))
wb2 = tf.matmul(layer1, w2) + b2
layer2 = tf.nn.relu(wb2)
loss = tf.reduce_mean(tf.square(y - layer2)) # y为真实数据, layer2为网络预测结果
# 梯度下降
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(0, 20000):
sess.run(train_step, feed_dict={x: dateNormal, y: priceNormal})
# 预测, X w1w2 b1b2 -->layer2
pred = sess.run(layer2, feed_dict={x: dateNormal})
date1 = np.linspace(0, 29, 30) #
plt.plot(date1, pred*3000, 'b', lw=3)
plt.show()
运行以上代码可视化神经网络的预测结果如下图所示
完整的代码如下:
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
# import tensorflow.compat.v1 as tf
# tf.disable_v2_behavior() # 如果是tensorflow2版本就取消这行注释
date = np.linspace(1, 30, 30) #
beginPrice = np.array([2923.19, 2928.06, 2943.92, 2946.26, 2944.40, 2920.85, 2861.33, 2854.58, 2776.69, 2789.02,
2784.18, 2805.59, 2781.98, 2798.05, 2824.49, 2762.34, 2817.57, 2835.52, 2879.08, 2875.47,
2887.66, 2885.15, 2851.02, 2879.52, 2901.63, 2896.00, 2907.38, 2886.94, 2925.94, 2927.75])
endPrice = np.array([2937.36, 2944.54, 2941.01, 2952.34, 2932.51, 2908.77, 2867.84, 2821.50, 2777.56, 2768.68,
2794.55, 2774.75, 2814.99, 2797.26, 2808.91, 2815.80, 2823.82, 2883.10, 2880.00, 2880.33,
2883.44, 2897.43, 2863.57, 2902.19, 2893.76, 2890.92, 2886.24, 2924.11, 2930.15, 2957.41])
for i in range(0, 30): # 画柱状图
dateOne = np.zeros([2])
dateOne[0] = i
dateOne[1] = i
priceOne = np.zeros([2])
priceOne[0] = beginPrice[i]
priceOne[1] = endPrice[i]
if endPrice[i] > beginPrice[i]:
plt.plot(dateOne, priceOne, 'r', lw=6)
else:
plt.plot(dateOne, priceOne, 'g', lw=6)
plt.xlabel("date")
plt.ylabel("price")
# plt.show()
dateNormal = np.zeros([30, 1])
priceNormal = np.zeros([30, 1])
# 归一化
for i in range(0, 30):
dateNormal[i, 0] = i / 29.0
priceNormal[i, 0] = endPrice[i] / 3000.0
x = tf.placeholder(tf.float32, [None, 1])
y = tf.placeholder(tf.float32, [None, 1])
# X->hidden_layer
w1 = tf.Variable(tf.random_uniform([1, 25], 0, 1))
b1 = tf.Variable(tf.zeros([1, 25]))
wb1 = tf.matmul(x, w1) + b1
layer1 = tf.nn.relu(wb1) # 激励函数
# hidden_layer->output
w2 = tf.Variable(tf.random_uniform([25, 1], 0, 1))
b2 = tf.Variable(tf.zeros([30, 1]))
wb2 = tf.matmul(layer1, w2) + b2
layer2 = tf.nn.relu(wb2)
loss = tf.reduce_mean(tf.square(y - layer2)) # y为真实数据, layer2为网络预测结果
# 梯度下降
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(0, 20000):
sess.run(train_step, feed_dict={x: dateNormal, y: priceNormal})
# 预测, X w1w2 b1b2 -->layer2
pred = sess.run(layer2, feed_dict={x: dateNormal})
date1 = np.linspace(0, 29, 30) #
plt.plot(date1, pred*3000, 'b', lw=3)
plt.show()
代码中需要用到numpy、matplotlib和tensorflow三个库,为了提高下载速度,建议切换到国内的pip源,例如豆瓣、清华等
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple
Python Tensorflow神经网络实现股票预测相关推荐
- TensorFlow神经网络实现股票预测
目录 1.数据来源 2.数据可视化 3.神经网络设计 神经网络(NeuralNetworks)是一种用训练数据拟合目标函数的黑箱模型,只要数据量足够大,它可以拟合出输入到输出之间的任意函数关系. 本篇 ...
- LSTM 长短期记忆神经网络及股票预测实现
一.介绍 我们知道RNN(循环神经网络)可以通过时间序列预测输出,LSTM也具有同样的功能,那么为什么需要LSTM呢? 由于RNN在参数更新过程中参数矩阵更新可能会造成梯度消失的问题,这才演化出了具有 ...
- 【遗传优化BP网络】基于自适应遗传算法的BP神经网络的股票预测MATLAB仿真
1.软件版本 MATLAB2021a 2.本算法理论知识 通过MATLAB对BP神经网络,基于遗传优化的BP神经网络,基于改进遗传优化的BP神经网络以及基于改进遗传优化的组合BP神经网络等多种算法的股 ...
- 利用神经网络实现股票预测 | 附Pyhon代码
神经网络(NeuralNetworks)是一种用训练数据拟合目标函数的黑箱模型,只要数据量足够大,它可以拟合出输入到输出之间的任意函数关系. 本篇教程我们将使用神经网络进行股市的预测,利用数据样本学习 ...
- python移动窗口求股票预测误差均值
目录 一.题目描述 二.题目分析 三.题目代码 四.总结 一.题目描述 已知贵州茅台的2019年1月至今每天的股票收益率序列(数据见下),采用移动窗口平均法预测,计算预测误差均值.并在[2,20]范围 ...
- python bp神经网络代码实现预测,用Python实现BP神经网络(附代码)
用Python实现出来的机器学习算法都是什么样子呢? 前两期线性回归及逻辑回归项目已发布(见文末链接),今天来讲讲BP神经网络. BP神经网络 全部代码 https://github.com/lawl ...
- 循环神经网络RNN、LSTM、GRU实现股票预测
Tensorflow--循环神经网络RNN 循环核 TensorFlow描述循环核 循环神经网络 TensorFlow描述循环神经网络 循环计算过程 输入一个字母,预测下一个字母 输入四个连续字母,预 ...
- MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测
MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测 摘要 近些年,随着计算机技术的不断发展,神 ...
- 基于遗传算法的BP神经网络的股票预测模型_matlab实现
文章目录 摘要 bp神经网络 遗传算法 实验结果与分析 完整代码下载: 摘要 在目前的股票投资市场,不少自然人股民的投资主要方式使根据对当天或者一个较长周期对股票数据的预测,来得到下一天的股票数据,从 ...
最新文章
- LeetCode 438. Find All Anagrams in a String--字符串-滑动窗口--C++,Python解法
- Apache Kafka之设计
- python 调用c/c++
- 如何删除Safari浏览器的扩展程序 大神教你搞定
- 拥有一亿会员的爱奇艺如何搭建大数据实时分析平台
- 逐行粒度的vuex源码分析
- 使用批处理build vs2005的工程
- 有可直接运营的IPTV/OTT系统ma?
- 2.3两个列表或元组首尾相连
- 高通WLAN框架学习(22)-- WPA3
- 输入法表情 mysql_Emoji表情符号在MySQL数据库中的存储
- twitter授权登录 php,PHP版实现Twitter第三方登录的成功案例
- 2026年中国软件定义存储市场容量将接近45.1亿美元
- JAVA添加水印,平铺和斜对角线我都有!
- WARN ThreadPoolAsynchronousRunner:608问题解决
- 【商城开发三】Android 仿淘宝商品详情页下拉足迹修改版
- 完成英语第一阶段的学习,明天开始第二阶段
- pragma comment的使用(转)
- ClickHouse安装-大数据培训
- paddle - crowdHuman数据集训练人体识别模型
热门文章
- tableau必知必会之学做漂亮易用的哑铃图
- 为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence)
- Hadoop学习之以伪分布模式部署Hadoop及常见问题
- Matplotlib实例教程 | 统计DataFrame中文本长度分布(条形统计图)
- neuralcoref使用教程-指代消解
- CSDN-markdown编辑器使用指南
- Hadoop 2.0联邦机制
- 如何来玩MNIST数据集?
- 【android-tips】如何在android应用中插入百度广告(附源码)
- Great Power, Great Responsibility: The 2018 Big Data AI Landscape