使用的编译器是anaconda

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# 折线图来绘制数据
# np.linespace(strat,stop,num =xx在起始点和终点之间取多少个数值)
date = np.linspace(1,15,15)
endPrice = np.array([2511.90, 2538.26, 2591.66, 2732.98, 2701.69, 2701.29, 2678.67, 2726.50, 2681.50, 2739.17, 2715.07, 2823.58, 2864.90, 2919.08, 2846.34])
beginPrice = np.array([2438.71, 2500.88, 2512.52, 2594.04, 2743.26, 2697.47, 2695.24, 2678.23, 2722.13, 2674.93, 2744.13, 2717.46, 2832.73, 2877.40, 2794.68])
print(date)

# 绘图
plt.figure(num = 'sheet')
for i in range(0,15) :
    
    #  把每一个柱状图当做一个单独的模块来处理
    dateOne = np.zeros([2]) #有两个数据,但是描绘的是同一天
    dateOne[0] = i
    dateOne[1] = i
    
    priceOne = np.zeros([2]) # [ 0., 0.]
    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.show()
# A(15X1)*W1(1X10)+b1(1x10) = B(15x10)
# B(15x10)*w2(10x1)+b2(15x1) = C(15X1)

dateNormal = np.zeros([15,1])
priceNormal = np.zeros([15,1])

# 归一化处理
for i in range(0, 15):
    dateNormal[i,0] = i/14.0
    priceNormal [i,0]= endPrice[i]/3000.0
    
# 输入
x = tf.placeholder(tf.float32,[None,1])
y = tf.placeholder(tf.float32,[None,1])

# B 从定义来看,最终的结果C与B的值相关,而B的值又与w和b相关
#   在使用梯度下降发的同时,会改变w1,b1,w2,b2的值,所以在这里把b和w的值设置为Variable
w1 = tf.Variable(tf.random_uniform([1,10],0,1))  #  tf.random_uniform给一个随机值,[1,10]表示一行十列,且在0,1之间变化
b1 = tf.Variable(tf.zeros([1,10]))
# 实现  A(15X1)*W1(1X10)+b1(1x10) = B(15x10) 得到我们的隐藏层
wb1 = tf.matmul(x,w1)+b1
# 加上一个激励函数
layer1 = tf.nn.relu(wb1)

# C即是输出层的实现 
w2 = tf.Variable(tf.random_uniform([10,1],0,1))
b2 = tf.Variable(tf.zeros([15,1]))
wb2 = tf.matmul(layer1,w2)+b2
layer2 = tf.nn.relu(wb2)  # 这里的layer2也就是最后得到的C

# 差异的计算
#mean计算的是均值,之后我们再做一个相减的开放,也就是最小二乘
loss = tf.reduce_mean(tf.square(y-layer2))

# 利用梯度下降法来调整w1等这些参数来使得我们的损失逐渐减小
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) #0.1是每次梯度下降的步长,


with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())  #  变量的初始化
    #我们使用for循环来终止
    for i in range(0,10000): 
        sess.run(train_step,feed_dict = {x:dateNormal,y:priceNormal})
        # 我们想运行最后的train_step,究其根本还是在于x,y的输入值
    
    # 在这第77行代码运行之前,通过梯度下降法,我们得到了新的一系列w和b的值
    # 我们进行迭代。得到最终的结果pred
    pred = sess.run(layer2,feed_dict = {x:dateNormal})
    
    # 对归一化之后的值进行处理
    predPrice = np.zeros([15,1])
    for i in range(0,15):
        predPrice[i,0] = (pred*3000)[i,0]
    plt.plot(date,predPrice,'b',lw = 3)
    
plt.show()
    
    

    
    






这是全部的代码,用的就是一个简单的神经网络来对股票的收盘价格进行预测,是在ananconda下利用tensorflow框架来实现的。下面我们来分布看一下:


endPrice = np.array([2511.90, 2538.26, 2591.66, 2732.98, 2701.69, 2701.29, 2678.67, 2726.50, 2681.50, 2739.17, 2715.07, 2823.58, 2864.90, 2919.08, 2846.34])

beginPrice = np.array([2438.71, 2500.88, 2512.52, 2594.04, 2743.26, 2697.47, 2695.24, 2678.23, 2722.13, 2674.93, 2744.13, 2717.46, 2832.73, 2877.40, 2794.68])

date = np.linspace(1,15,15)
print(date)

endPrice用来表示股票收盘时候的价格。beginPrice则是股票开盘时候的价格。

我记得这里的date应该是表示15天;

下面我们来根据这15天的数据绘制一个柱状图

# 绘图
plt.figure( )
for i in range(0,15) :
    
    #  把每一个柱状图当做一个单独的模块来处理
    dateOne = np.zeros([2]) #有两个数据,但是描绘的是同一天
    dateOne[0] = i
    dateOne[1] = i
    
    priceOne = np.zeros([2]) # [ 0., 0.]
    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.show()

首先利用plt.figure先打开一个画板(大概应该就是这个意思)

之后再利用for循环来对每一组数据进行单独的处理,

dateOne 的作用其实我也是一知半解,我认为应该是一个开盘时间,一个收盘时间,但是肯定都是同一天

priceOne【0】表示的是开盘价格,priceOne【1】表示的是收盘价格;

我们可以利用二者的差来得到今天股票的增跌情况,并利用plt.plot来绘图。

tensorflow入门小案例- - 股票

结果就是图中的柱形图(不包括折线图)。

下面我们就开始引入一些简单的神经网络的概念

tensorflow入门小案例- - 股票tensorflow入门小案例- - 股票tensorflow入门小案例- - 股票

根据这三张图我们回顾一下简单的一层神经网络的基本概念,并且有了对隐层和输出层的计算公式,一次计算后得到的f(x)与h进行对比,再利用梯度下降法和最小二乘求解。

# A(15X1)*W1(1X10)+b1(1x10) = B(15x10)
# B(15x10)*w2(10x1)+b2(15x1) = C(15X1)              这是矩阵运算时候的矩阵阶数。

dateNormal = np.zeros([15,1])
priceNormal = np.zeros([15,1])       这里定义了两个[ 15x1 ]的输入矩阵

# 归一化处理
for i in range(0, 15):
    dateNormal[i,0] = i/14.0
    priceNormal [i,0]= endPrice[i]/3000.0

归一化处理不再赘述

# 输入
x = tf.placeholder(tf.float32,[None,1])
y = tf.placeholder(tf.float32,[None,1])

 

 

 

 

 

相关文章:

  • 2021-06-10
  • 2022-12-23
  • 2021-11-04
  • 2021-04-27
  • 2021-10-15
  • 2021-09-09
  • 2022-12-23
猜你喜欢
  • 2021-10-04
  • 2022-02-18
  • 2021-12-25
  • 2021-12-27
  • 2021-04-13
  • 2021-11-12
  • 2021-12-24
相关资源
相似解决方案