基于Tensorflow的线性回归

线性回归算法是统计分析、机器学习和科学计算中最重要的算法之一,也是最常用的算法之一。简单介绍一个利用线性回归解决二维矩阵的求逆问题。
一般分为以下几个步骤:
step 1:导入必要的编程库
代码如下:

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

并且初始化计算图

    sess=tf.Session()

step 2:生成相关数据
代码如下:

   x_vals=np.linspace(0,10,1000)
   y_vals=x_vals+np.random.normal(0,1,1000) 

step 3:创建相关矩阵
代码如下:

  x_vals_column=np.matrix(x_vals)  #将一维数据生成矩阵的形式
  x_vals_column=np.transpose(x_vals_column)  #矩阵转置
  ones_column=np.transpose(np.matrix(np.repeat(1,1000)))
  A=np.column_stack((x_vals_column,ones_column))
  b=np.transpose(np.matrix(y_vals))  

step 4:将A和矩阵转换成张量
代码如下:

  A_tensor=tf.constant(A)
  b_tensor=tf.constant(b)  

step 5:可以使用tf.matrix_inverse()方法求矩阵逆
代码如下:

  tA_A=tf.matmul(tf.transpose(A_tensor),A_tensor)
  tA_A_inver=tf.matrix_inverse(tA_A)  #求矩阵的逆
  product=tf.matmul(tA_A_inver,tf.transpose(A_tensor))
  solution=tf.matmul(product,b_tensor)
  solution_result=sess.run(solution)  

step 6:为了更好的展示效果,用plt将其显示出来
代码如下:

#获取系数,斜率
slope=solution_result[0][0]
y_intercept=solution_result[1][0]

#构造一条直线
best_fit=[]
for i in x_vals:
    best_fit.append(slope*i+y_intercept)
plt.plot(x_vals,y_vals,'o',label="Data")
plt.plot(x_vals,best_fit,'r-',label="Best fit in line",linewidth=3)
plt.legend(loc="upper left")
plt.show()

效果图如下:
这里写图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值