利用神经网络实现股票预测

2023-11-07

神经网络(NeuralNetworks)是一种用训练数据拟合目标函数的黑箱模型,只要数据量足够大,它可以拟合出输入到输出之间的任意函数关系。

本篇教程我们将使用神经网络进行股市的预测,利用数据样本学习,得到相关因素预测股票走势。

01

问题描述

1)数据

首先我们预设一组数据,下图为股票上证指数2019年07月到2019年09月的30天开盘价格和收盘价格。

▍股票开盘和收盘价格

2)网络结构

设计三层神经网络,隐含层包括25个节点,利用所设计的神经网络来预测股票的收盘均价。

3)可视化

可建立一个30行2列的矩阵存储股票数据,矩阵的第一列输入上列数据中的股票开盘价格,第二列输入股票的收盘价格,如果股票的收盘价格高于开盘价格则用红色显示,反之则用绿色显示,可视化股票数据如下图所示。采用本实例所设计的神经网络预测股票收盘均价,并可视化预测结果。

▍股票价格柱形图

02

实现代码

Python实现代码如下所示:

importtensorflow as tf

importnumpy as np

importmatplotlib.pyplot as plt

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]

ifendPrice[i]>beginPrice[i]:

plt.plot(dateOne,priceOne,'r',lw=6)

else:

plt.plot(dateOne,priceOne,'g',lw=6)

plt.xlabel("date")

plt.ylabel("price")

# 网络结构:X(30x1)*w1(1x25)+b1(1*25) = hidden_layer(30x25)

# hidden_layer(30x25)*w2(25x1)+b2(30x1) = output(30x1)

# X->hidden_layer->output

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)

withtf.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})

predPrice = np.zeros([30,1])

for i in range(0,30):

predPrice[i,0]=(pred*3000)[i,0]

plt.plot(date,predPrice,'b',lw=1)

plt.show()

03

运行结果

运行以上代码可视化神经网络的预测结果如下图所示。

▍可视化股票价格预测结果

04

扫码,微店限时优惠

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用神经网络实现股票预测 的相关文章

随机推荐

  • java 提取存在逗号和小数点的字符串中的数字

    可以使用正则表达式来处理 以下是一个示例代码 可以提取字符串中可能包含逗号和小数点的数字 import java util regex Matcher import java util regex Pattern public class
  • Arduino和Python实时监督控制和数据采集系统(SCADA)

    本文 将向您展示如何设置环境温度信号 该信号将通过计算机上的实时仪表板记录和可视化数据 硬件设计 首先 我们将使用Arduino Uno开发板从红外温度计读取温度值 如上所示连接红外测温仪后 继续将以下程序上传到Arduino 要验证Ard
  • 如何在windows下切换node版本

    解决办法 1 用到某个版本对node重新卸载 安装对应的版本 2 使用nvm 很明显 第一种方法虽然也能解决node版本问题 但是太多麻烦 接下来介绍下nvm的安装使用 第一步 下载nvm并安装 推荐使用nvm setup zip nvm
  • ROS配置LTE第二链路实现故障自动切换

    本文几乎没有操作部分 主要是讲原理 设备是RB962 通过PPPoE方式上网 华为5577移动路由器配合电信日租卡作为第二链路备用 计划实现宽带正常时通过PPPoE线路上网 异常时通过LTE线路上网 PPPoE线路恢复正常时 流量回到PPP
  • 第37.2节 框选-框选场景中的物体

    目录 本节内容 实现要点 点选 性能 绘制球 本节内容 结合上一节 我们把框选这个功能给完善了 如下 白色的是我点击左CTRL 用鼠标左键在场景中拉的框 拉框的教程在第37 1节 框选 绘制框选框 拉完框后能够将场景中选择的物体置红 本节代
  • 基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(十二)光照贴图

    Vries的原教程地址如下 https learnopengl cn github io 02 20Lighting 04 20Lighting 20maps 关于OpenGL函数的详细解析及OpenGL关于满反射贴图与镜面反射贴图的知识点
  • 反射的使用

    反射 一 反射基本概念 1 反射是什么 2 Class类实例对象是什么 Field类实例对象和Method类实例对象是什么 3 jVM类加载机制 很难又很重要 待补充 二 反射的作用 三 Class详解 Class的使用场景 1 通过对象获
  • C语言之函数必备练习题

    笔者来自于一个普通二本 非科班出身 对于未来的打算博多 无法完事皆满意 所以 尽自己可能去实现 所以 打算转码中 C语言XX必备练习题 凝聚了笔者精华所有 请看到的读者认真思考 在进行 话不多说 直接上题 笔者的一贯要求 速度 1 作业标题
  • Python爬虫从入门到精通:(9)数据解析_xpath解析2_爬取4K高清动漫图片_Python涛哥

    使用xpath爬取4K高清动漫图片名称和图片数据 爬取当前页 创建文件夹 存储图片 dirName GirlsLib if not os path exists dirName os mkdir dirName headers User A
  • 购物商城---freemarker在项目中的应用

    一 1 通过模板 数据 生成静态化页面 2 缺点 数据不实时 3 适用于于数据长时间不更新的情况 二 在项目中搭建freemarker freemarker xml
  • pandas对dataframe内部数据的增删改查操作整理汇总

    文章目录 一 增加数据 1 增加行数据 2 增加列数据 二 删除数据 删除前 后 N 行 三 修改数据 四 查询 索引数据 五 合并Dataframe 1 按行合并 根据行index合并 自定义合并规则 2 按列合并 根据列名称合并 六 拆
  • 【福利】光荣之路公开课视频下载大全

    最新视频 JAVA编程系列 六哥 第七讲 日志 异常和反射 6月6日 http yun baidu com s 1mhA7Sbm Python编程系列 第十五讲 网络编程和pyh应用举例 3月14日 http yun baidu com s
  • Linux解压命令

    Linux解压命令 解压到当前文件下 unzip test zip 3D打印梦想库了解一下
  • 系统稳定性方法论 - 提感知、快响应、做复盘

    之前在 lt 系统稳定性方法论 gt 中提到了稳定性建设的四大抓手 在 lt 降发生 gt 之后 今天来说一说其余的三点 提感知 快响应 做复盘 提感知 何为 提感知 提感知指的是 对于已经出现问题 能够及时且精准的进行告警 提升对异常的感
  • 关于scrapy爬虫的注意事项

    1 图片下载的设置 class ClawernameSpider scrapy Spider 定制化设置 custom settings LOG LEVEL DEBUG Log等级 默认是最低级别debug ROBOTSTXT OBEY F
  • XMPP客户端库Smack 4.1.4版官方开发文档之六

    一 处理出入的字节 smacke 类库 提供了处理传入的字节 主要依靠两个类 org jivesoftware smack PacketCollector 和 org jivesoftware smack PacketListener or
  • lpad用法 oracle,oracle中lpad函数的用法详解

    oracle中lpad函数的用法详解 oracle中lpad的用法 pad翻译 填充 lpad函数 在字符串的左侧添加指定字符串 用法 www jb51 net lpad String 截取长度 添加的字符串 说是添加字符串也不准确 比较准
  • DCMTK读取dcm图片+opencv显示图片

    读取DCM格式图片中的一些基本信息 DcmFileFormat是最基本的文件对象 OFCondition是每一次操作的返回值 用来判断操作是否成功 所有的数据都存在DcmDataSet对象中 用getDataSet方法得到 void Loa
  • webpack(4版本)使用

    webpack简介 webpack 是一种前端资源构建工具 一个静态模块打包器 module bundler 在 webpack 看来 前 端的所有资源文件 js json css img less 都会作为模块处理 它将根据模块的依赖关系
  • 利用神经网络实现股票预测

    神经网络 NeuralNetworks 是一种用训练数据拟合目标函数的黑箱模型 只要数据量足够大 它可以拟合出输入到输出之间的任意函数关系 本篇教程我们将使用神经网络进行股市的预测 利用数据样本学习 得到相关因素预测股票走势 01 问题描述