Python实现人工神经网络逼近股票价格
1.基本数据绘制成图
数据有15天股票的开盘价格和收盘价格,可以通过比较当天开盘价格和收盘价格的大小来判断当天股票价格的涨跌情况,红色表示涨,绿色表示跌,测试代码如下:
1 # encoding:utf-8 2 3 import tensorflow as tf 4 import numpy as np 5 import matplotlib.pyplot as plt 6 date = np.linspace(1, 15, 15) 7 # 当天的收盘价格 8 endPrice = np.array([2511.90,2538.26,2510.68,2591.66,2732.98,2701.69,2701.29,2678.67,2726.50,2681.50,2739.17,2715.07,2823.58,2864.90,2919.08] 9 ) 10 # 当天的开盘价格 11 beginPrice = np.array([2438.71,2500.88,2534.95,2512.52,2594.04,2743.26,2697.47,2695.24,2678.23,2722.13,2674.93,2744.13,2717.46,2832.73,2877.40]) 12 print(date) # 打印日期 13 plt.figure() 14 for i in range(0,15): 15 # 通过循环遍历数据画出柱状图 16 dateOne = np.zeros([2]) 17 dateOne[0] = i 18 dateOne[1] = i 19 print(dateOne) 20 priceOne = np.zeros([2]) 21 priceOne[0] = beginPrice[i] 22 priceOne[1] = endPrice[i] 23 if endPrice[i] > beginPrice[i]: 24 # 如果收盘价格大于开盘价格说明股票上涨 用红色表示 lw为线条粗细 25 plt.plot(dateOne, priceOne,'r',lw=8) 26 else: 27 # 如果收盘价格小于开盘价格说明股票下跌 用绿色表示 lw为线条粗细 28 plt.plot(dateOne, priceOne,'g',lw=5) 29 plt.show()
运行后的图如下:
2.人工神经网络进行预测
建立一个简单的三层人工神经网络。
循环的终止条件可以为预先设定的循环次数或者与真实值的差异百分比
功能实现,完整的测试代码如下:
1 # encoding:utf-8 2 3 import tensorflow as tf 4 import numpy as np 5 import matplotlib.pyplot as plt 6 date = np.linspace(1, 15, 15) 7 # 当天的收盘价格 8 endPrice = np.array([2511.90,2538.26,2510.68,2591.66,2732.98,2701.69,2701.29,2678.67,2726.50,2681.50,2739.17,2715.07,2823.58,2864.90,2919.08] 9 ) 10 # 当天的开盘价格 11 beginPrice = np.array([2438.71,2500.88,2534.95,2512.52,2594.04,2743.26,2697.47,2695.24,2678.23,2722.13,2674.93,2744.13,2717.46,2832.73,2877.40]) 12 print(date) # 打印日期 13 plt.figure() 14 for i in range(0,15): 15 # 通过循环遍历数据画出柱状图 16 dateOne = np.zeros([2]) 17 dateOne[0] = i 18 dateOne[1] = i 19 print(dateOne) 20 priceOne = np.zeros([2]) 21 priceOne[0] = beginPrice[i] 22 priceOne[1] = endPrice[i] 23 if endPrice[i] > beginPrice[i]: 24 # 如果收盘价格大于开盘价格说明股票上涨 用红色表示 lw为线条粗细 25 plt.plot(dateOne, priceOne,'r',lw=8) 26 else: 27 # 如果收盘价格小于开盘价格说明股票下跌 用绿色表示 lw为线条粗细 28 plt.plot(dateOne, priceOne,'g',lw=5) 29 # plt.show() 30 # A(15x1)*w1(1x10)+b1(1*10) = B(15x10) 31 # B(15x10)*w2(10x1)+b2(15x1) = C(15x1) 32 # 1 A B C 33 dateNormal = np.zeros([15,1]) 34 priceNormal = np.zeros([15,1]) 35 # 日期和价格进行归一化处理 36 for i in range(0, 15): 37 dateNormal[i, 0] = i/14.0 38 priceNormal[i, 0] = endPrice[i]/3000.0 39 print(dateNormal) 40 print(priceNormal) 41 42 x = tf.placeholder(tf.float32, [None, 1]) # 表明是N行1列的 43 y = tf.placeholder(tf.float32, [None, 1]) # 表明是N行1列的 44 45 # B 46 w1 = tf.Variable(tf.random_uniform([1, 10], 0, 1)) # 可变值 可以通过误差修改值 范围0-1 47 b1 = tf.Variable(tf.zeros([1, 10])) # 可变值 可以通过误差修改值 48 wb1 = tf.matmul(x, w1)+b1 49 layer1 = tf.nn.relu(wb1) # 激励函数 映射成另一个值 50 # 第一二层完毕 51 52 # C 53 w2 = tf.Variable(tf.random_uniform([10, 1], 0, 1)) # 可变值 可以通过误差修改值 范围0-1 54 b2 = tf.Variable(tf.zeros([15, 1])) 55 wb2 = tf.matmul(layer1, w2)+b2 56 layer2 = tf.nn.relu(wb2) # 激励函数 映射成另一个值 57 # 第二三层完毕 58 59 # 误差用loss表示 实际是一个标准差 60 loss = tf.reduce_mean(tf.square(y-layer2)) # y 真实 layer2 计算 61 # 每次调整的步长 梯度下降0.1 目的是缩小loss减小真实值与误差值的差异 62 train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) 63 with tf.Session() as sess: 64 sess.run(tf.global_variables_initializer()) # 初始化 65 for i in range(0, 10000): # 训练次数为10000 66 sess.run(train_step, feed_dict={x: dateNormal, y: priceNormal}) 67 # w1w2 b1b2 A + wb -->layer2 68 pred = sess.run(layer2, feed_dict={x: dateNormal}) 69 predPrice = np.zeros([15, 1]) # 预测结果 70 for i in range(0, 15): # 还原数据需要*3000 71 predPrice[i, 0] = (pred*3000)[i, 0] 72 plt.plot(date, predPrice, 'b', lw=1) 73 plt.show()
运行结果如下:(图中蓝色的线表示股票的预测值)
转载于:https://www.cnblogs.com/shixinzei/p/10890707.html
Python实现人工神经网络逼近股票价格相关推荐
- 使用人工神经网络预测股票价格
<Python Machine Learning By Example> Third Edition 第八章笔记 文章目录 1 本章内容介绍 2 从浅层神经网络到深度学习 2.1 神经层 ...
- 用Python实现人工神经网络(简易版)
人工神经网络 人工神经网络简介 代码 神经网络的缺点 程序优化 BP算法 补充 人工神经网络简介 人工神经网络(Artificial Neural Network, ANN)是指一系列受生物学和神经学 ...
- Python与人工神经网络(2)——使用神经网络识别手写图像
人体的视觉系统是一个相当神奇的存在,对于下面的一串手写图像,可以毫不费力的识别出他们是504192,轻松到让人都忘记了其实这是一个复杂的工作. 实际上在我们的大脑的左脑和右脑的皮层都有一个第一视觉区域 ...
- Python与人工神经网络(5)——交叉熵成本函数
我们花了两篇文章的篇幅,建立了一个神经网络来识别手写图像,看起来效果相当不错,超过95%的正确率,实际上如果第二层使用100个隐藏神经元的时候,准确率可以再提升一个百分点.在这个过程中我们主要使用了随 ...
- python ANN人工神经网络手写字图像识别(成功运行)
opencv中也提供了一种类似于Keras的神经网络,即为ann,这种神经网络的使用方法与Keras的很接近. 关于mnist数据的解析,读者可以自己从网上下载相应压缩文件,用python自己编写解析 ...
- 吴裕雄 python 机器学习——人工神经网络与原始感知机模型
import numpy as npfrom matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Axes3D from ...
- python做神经网络识别车牌_Python与人工神经网络:使用神经网络识别手写图像介绍...
人体的视觉系统是一个相当神奇的存在,对于下面的一串手写图像,可以毫不费力的识别出他们是504192,轻松到让人都忘记了其实这是一个复杂的工作. 实际上在我们的大脑的左脑和右脑的皮层都有一个第一视觉区域 ...
- 【机器学习入门笔记13:BP神经网络逼近股票收盘价格】20190218
2019-02-18 by 崔斐然 目标:实现股票日线的绘制并且利用人工神经网络实现股票价格的拟合. 分为两大部分,第一部分基础数据绘制,第二部分BP神经网络搭建 第一部分:基础数据图绘制 1.导入 ...
- 用BP人工神经网络识别手写数字——《Python也可以》之三
赖勇浩(http://laiyonghao.com) 这是我读工程硕士的时候完成课程作业时做的,放在 dropbox 的角落中生尘已经有若干年头了,最近 @shugelee 同学突然来了兴致搞验证码识 ...
- 机器学习——人工神经网络之BP算法编程(python二分类数据集:马疝病数据集)
目录 一.理论知识回顾 1.神经网络模型 2.明确任务以及参数 1)待估参数: 2)超参数: 3)任务 3.神经网络数学模型定义 1)激活函数 2)各层权重.阈值定义 3)各层输入输出定义 4.优 ...
最新文章
- 自动编码(Autoencoder)器异常检测(outlier detection)实战
- 使用telnet模拟邮件的收发
- 频谱扩展 matlab,使用MATLAB进行频谱分析 | 学步园
- Linq标准查询运算及用法
- [pytorch、学习] - 3.11 模型选择、欠拟合和过拟合
- 常用Jquery前端操作
- C++总结篇(1)命名空间及引用
- angular 关闭当前页_angular刷新当前页 angularjs页面不刷新的解决办法 - 电脑常识 - 服务器之家...
- Hibernate笔记①--myeclipse制动配置hibernate
- 【图像去噪】基于matlab全变分算法图像去噪【含Matlab源码 1324期】
- Hadoop的安装教程,很详细
- 阿里云服务器使用命令行上发送邮件
- excel日期转换为周数_VBA将日期转换为周数
- 【APICloud系列|1】华为应用市场 应用版权证书或代理证书怎么填
- 【Matplotlib】 移动spines
- 201226元件_看电阻型号
- 除了欧拉公式,这8个数学公式也足够美丽且神奇
- @Value的用法及(“#{}“)与@Value(“${}“)的区别
- adb安装apk命令
- 人工智能专业基础课程
热门文章
- linux tomcat reload,linux-tomcat安装配置
- MySQL集群Cluste详解(二)——配置实战
- 性能测试二八原则,响应时间2/5/8原则
- 学习笔记--对最近学习的总结
- C++实践參考——二进制文件浏览器
- OC中方法与函数的区别
- 使用scrapy的定制爬虫-第三章-爬虫的javascript支持
- 正在发生的景象--从大众消费到圈层经济
- CO02工单下达时错误“订单类型 ZP91 工厂 1000: 没有检查工序的维护规则”
- 解决flash builder 4.6安装过程中安装程序遇到错误(-1)