美文网首页
线性回归

线性回归

作者: 记事本的记事本 | 来源:发表于2018-07-23 17:42 被阅读0次
    #用梯度下降算法 快速解决线性回归
    import numpy as np
    import matplotlib.pyplot as plt
    import tensorflow as tf
    
    
    #构建数据
    
    points_num =100
    vectors =[]
    #用numpy正态随机分布函数生成100点
    ##用这些点的(x,y)坐标值生成线性方程 y = 0.1*x +0.2
    #权重(weight) 0.1  偏差 (Bias)0.2
    
    for i in range(points_num):
        x1 = np.random.normal(0.0,0.66)#随机正态分布
        y1 = 0.1*x1 +0.2 +np.random.normal(0.0,0.02)  #加上干扰项
        vectors.append([x1,y1])
    
    x_data = [v[0] for v in vectors]  #真实的点的x坐标
    y_data =[v[1] for v in vectors] #真实的y坐标
    #图像 1 展示100个随机点
    plt.plot(x_data,y_data,'r*', label = "Original data")# 红色星形的点
    plt.title("线性 减轻")
    plt.legend()
    plt.show()
    
    #构建线性回归模型
    W = tf.Variable(tf.random_uniform([1],-1.0,1.0)) #初始化权重
    b = tf.Variable(tf.zeros([1])) #初始化 Bias
    y = W*x_data +b               #模型计算出来的y
    
    
    
    #定义损失函数 ;loss function 或者 cost function
    #对Tensor 的所有维度 计算出(y-y_data)^2 之和 / N
    loss = tf.reduce_mean(tf.square(y-y_data))
    
    
    
    #用梯度下降的优化器来优化我们的loss function
    optimizer = tf.train.GradientDescentOptimizer(0.5) #学习率为0.5
    train = optimizer.minimize(loss)
    
    #创建会话
    sess =tf.Session()
    #初始化数据流图中的所有变量
    init= tf.global_variables_initializer()
    sess.run(init)
    
    #训练20步
    for step in range(20):
        #优化每一步
        sess.run(train)
        #打印每一步的损失,权重和偏差
    
    
    
    #图像2 绘制所有的点
    plt.plot(x_data,y_data,'r*', label = "Original data")# 红色星形的点
    plt.title("线性 减轻")
    plt.plot(x_data, sess.run(W)*x_data +sess.run(b), label="拟合的一条线")
    plt.legend()
    plt.xlabel('x')
    plt.ylabel('y')
    plt.show()
    
    
    #关闭会话
    sess.close()
    

    相关文章

      网友评论

          本文标题:线性回归

          本文链接:https://www.haomeiwen.com/subject/mhwjmftx.html