TensorFlow实现多元线性回归(超详细)

TensorFlow 实现简单线性回归的基础上,可通过在权重和占位符的声明中稍作修改来对相同的数据进行多元线性回归。

在多元线性回归的情况下,由于每个特征具有不同的值范围,归一化变得至关重要。这里是波士顿房价数据集的多重线性回归的代码,使用 13 个输入特征。

波士顿房价数据集可从http://lib.stat.cmu.edu/datasets/boston处获取。

多元线性回归的具体实现

  1. 导入需要的所有软件包:


     
  2. 因为各特征的数据范围不同,需要归一化特征数据。为此定义一个归一化函数。另外,这里添加一个额外的固定输入值将权重和偏置结合起来。为此定义函数 append_bias_reshape()。该技巧有时可有效简化编程:


     
  3. 现在使用 TensorFlow contrib 数据集加载波士顿房价数据集,并将其划分为 X_train 和 Y_train。注意到 X_train 包含所需要的特征。可以选择在这里对数据进行归一化处理,也可以添加偏置并对网络数据重构:


     
  4. 为训练数据声明 TensorFlow 占位符。观测占位符 X 的形状变化:


     
  5. 为权重和偏置创建 TensorFlow 变量。通过随机数初始化权重:


     
  6. 定义要用于预测的线性回归模型。现在需要矩阵乘法来完成这个任务:


     
  7. 为了更好地求微分,定义损失函数:


     
  8. 选择正确的优化器:


     
  9. 定义初始化操作符:


     
  10. 开始计算图:


     
  11. 绘制损失函数:


     
在这里,我们发现损失随着训练过程的进行而减少:


 
本节使用了 13 个特征来训练模型。简单线性回归和多元线性回归的主要不同在于权重,且系数的数量始终等于输入特征的数量。下图为所构建的多元线性回归模型的 TensorBoard 图:
现在可以使用从模型中学到的系数来预测房价:


推荐文章
JS innerText和outerText属性:读写文本

JavaScript的innerText和outerText是IE的私有属性,但是没有被HTML5纳入规范。 innerText属性 innerText在指定元素中插入文本内容,如果文本中包含HTM

JSP常见错误以及解决方案

本节我们分析一下常见的JSP错误信息,并给出解决方案。这些错误大家在实际开发中会经常遇到,所以有必要在此提及一下。 (1)页面显示500错误,错误信息如下: Anerroroccurredatl

Spring MVC视图解析器

Spring视图解析器是SpringMVC中的重要组成部分,用户可以在配置文件中定义SpringMVC的一个视图解析器(ViewResolver),示例代码如下: 上述视图解

Spring中Bean的作用域

本节先简单介绍了Spring中bean的5种作用域,然后详细介绍singleton和prototype这两种最常用的作用域。 作用域的种类 Spring容器在初始化一个Bean的实例时,同时会指定该

JSP开发环境搭建(Tomcat的安装和配置)

使用JSP开发程序,需要具备对应的运行环境:Web浏览器、Web服务器、JDK开发工具包、数据库(MySQL、SQLServer等)。下面以Windows操作系统为平台介绍JSP的安装与配置。 JD

Spring声明式事务管理(基于XML方式实现)

Spring的事务管理有两种方式:一种是传统的编程式事务管理,即通过编写代码实现的事务管理;另一种是基于AOP技术实现的声明式事务管理。由于在实际开发中,编程式事务管理很少使用,所以我们只对Sprin

非关系型数据库有哪些

非关系型数据库有哪些?MongoDB:是一个面向文档的开源NoSQL数据库。MongoDB使用JSON之类的文档来存储任何数据。它是用c++写的。Cassandra:是Facebook为收件箱搜索开发

Apollo(分布式配置中心)核心概念及核心功能介绍

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

OSI网络七层模型简明教程

如果你读过计算机专业,或者学习过网络通信,那你一定听说过OSI模型,它曾无数次让你头大。OSI是OpenSystemInterconnection的缩写,译为“开放式系统互联”。 OSI模型把网络通

Java Swing文本编辑器的实现

最简单的文本编辑器要数Windows的记事本了。在学习了本章知识之后,本次案例将完成一个简单的文本编辑器程序。它可以打开文本文件,并输出文本文件的位置和内容。其中用到了菜单、工具栏以及选项卡等组件,是

C++类对象的创建和使用(详解版)

一个类的声明类似于一幢房屋的图纸。图纸本身不是房屋,而是对于房屋的详细描述。当人们使用图纸建造一幢实际的房屋时,可以说他们正在按照图纸的描述建造房屋的一个实例。 如果愿意,人们可以使用同一张图纸建造

Linux文件系统详解

硬盘是用来存储数据的,可以将其想象成柜子,只不过柜子是用来存储衣物的。新买来的硬盘,通常要对其进行分区并格式化,分区就如同把一个大柜按照要求分割成几个小柜子(组合衣柜);格式化就好比在每个小柜子中打入

GPG(GnuPG)的安装和使用

基于网络的开源项目,能给用户带来在公共标准基础上的自由发挥,并且能很好地给每个自愿人士提供了共享贡献的机会。但是,同时也因为大众化给使用共享的程序员或团队带来了安全性问题。 当程序员从中央仓库下载第

SELinux的主要作用

我们知道,传统的Linux系统安全,采用的是DAC(自主访问控制方式),而SELinux是部署在Linux系统中的安全增强功能模块,它通过对进程和文件资源采用MAC(强制访问控制方式)为Linux系统

Spring MVC的转发与重定向

重定向是将用户从当前处理请求定向到另一个视图(例如JSP)或处理请求,以前的请求(request)中存放的信息全部失效,并进入一个新的request作用域;转发是将用户对当前处理的请求转发给另一个视图

c语言的输入函数有哪些?

c语言的输入函数1、scanf函数scanf函数遵守格式化(format)原则,所谓格式化,是该函数预先给程序员定义了一批输入格式,程序员可以选择其中的某些格式,遵守这些格式,scanf函数就可以按照

word中什么是一级标题?

word中的标题,是标明文章、作品等内容的简短语句,一般分为总标题、副标题、分标题。而一级标题和二级标题和以此下去的标题代表的是一个序号,而且字体大小不一样;设置分标题的主要目的是为了清晰地显示文章的

PHP global与$GLOBALS:在函数内访问全局变量

通过《变量作用域》一节的学习我们知道,在函数内部是不允许使用在函数外部定义的全局变量的,但是有些时候却需要在函数内使用这些全局变量,那么我们该怎么办呢? 使用PHP中的global关键字就可以让我们

MySQL HAVING:过滤分组

在MySQL中,可以使用HAVING 关键字对分组后的数据进行过滤。 使用HAVING关键字的语法格式如下: HAVING HAVING关键字和WHERE关键字都可以用来过滤数据,且HAVING

MyBatis TypeHandler类型转换器

在JDBC中,需要在PreparedStatement对象中设置那些已经预编译过的SQL语句的参数。执行SQL后,会通过ResultSet对象获取得到数据库的数据,而这些MyBatis是根据数据的类型