TensorFlow 实战

多元线性回归问题

本文小编将以一个具体例子来说明如何用 TensorFlow 来实现多元线性回归问题。我们以波士顿房价预测为例进行讲解。

1、 情景引入

波士顿房价数据集包括506个样本,每个样本包括12个特征变量和该地区的平均房价。房价显然和多个特征变量是相关的,因此需要选择多个特征变量来建立线性方程,这就是典型的多变量线性回归问题,下面是多元线性回归模型公式:y=w0+w1x1+w2x2+...+wn*xn+b
下面是波士顿房价的数据集部分展示,后面我们将使用数据集进行模型实现。

2、读取数据并归一化

通过pandas读取数据文件,列出统计概述。

  1. %matplotlib inline

  2. import matplotlib.pyplot as plt

  3. import numpy as np

  4. import tensorflow as tf

  5. import pandas as pd


  6. #读取数据文件

  7. df = pd.read_csv("./boston.csv",header=0)

  8. #显示数据摘要描述信息

  9. print(df.describe())


  1. #对数据归一化到0-1之间

  2. for i in range(12):

  3.    df[:,i]=(df[:,i]-df[:,i].min())/(df[:,i].max()-df[:,i].min())


  4. #x_data为归一化后的前12列特征数据

  5. x_data = df[:,:12]

  6. #y_data为最后一列标签数据

  7. y_data = df[:12]

3、模型定义

首先定义特征数据和标签数据的占位符,shape中None表示行的数量未知,在实际训练时决定一次代入多少行样本,从一个样本的随机SDG到批量SDG都可以。

x = tf.placeholder(tf.float32,[None,12],name="x")y = tf.placeholder(tf.float32,[None,1],name="y")

定义模型函数

4、训练模型

设置训练超参数

#迭代次数train_epochs = 50#学习率learning_rate = 0.01

定义均方差损失函数

with tf.name_scope("LossFunction"):    loss_function = tf.reduce_mean(tf.pow(y-pred,2)) #均方误差

选择优化器,初始化一个GradientDescentOptimizer

#梯度下降优化器optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)

5、创建会话

声明会话

sess = tf.Session()

变量初始化

init = tf.global_variables_initializer()sess.run(init)

6、迭代训练

模型训练阶段,设置迭代次数,每次通过将样本逐个输入模型,进行梯度下降优化操作,每轮迭代后,绘制出模型曲线下图为最后的训练结果

7、训练结果的可视化

plt.plot(loss_list)

8、TensorBoard 可视化

声明会话

sess = tf.Session()#定义初始化变量的操作init = tf.global_variables_initializer()

为 TensorBoard 可视化准备数据

#设置日志存储目录logdir = 'd:/log'sum_Loss = tf.summary.scalar("loss",loss_function)merged = tf.summary.merge_all()

创建摘要的文件写入器

sess.run(init)writer = tf.summary.FileWwriter(logdir,sess.graph)

查看计算图TensorBoard查看loss好啦,最后赶快动手尝试一下属于你们的第一个多元回归模型的建立吧!

本文来自读者投稿,欢迎大家点击下面链接进行投稿:
欢迎投稿


---------End---------

©著作权归作者所有:来自51CTO博客作者mb5fe18e7c44408的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 数据结构之哈希表
  2. 1.5 万 Star!界面酷炫、简单易用的数据库开源客户端
  3. 数据结构与算法: 三十张图弄懂「图的两种遍历方式」
  4. 干货 | 滴滴 数据分析原来是这样做的!
  5. 几道和「黑洞照片」那种海量数据有关的算法问题
  6. 数据结构与算法——最小生成树
  7. 数据结构与算法——图论基础与图存储结构
  8. 一道简约而不简单的算法题--数据流的中位数
  9. 数据结构与算法——图最短路径

随机推荐

  1. [Android 博客]收集一些不错的,关于androi
  2. android应用自定义字体
  3. Android 控件使用参数集锦
  4. Android架构组件-Lifecycle
  5. Android API中文文档Button
  6. Android开发软件
  7. Android 资源聚集地
  8. android中TextView内容过长加省略号
  9. android 输入法出现挤压屏幕、android输
  10. Android 对象序列化之追求完美的 Serial