TensorFlow训练单特征和多特征的线性回归

线性回归

线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题。相关知识可看“相关阅读”。

主要思想

在TensorFlow中进行线性回归处理重点是将样本和样本特征矩阵化。

单特征线性回归

单特征回归模型为:y=wx+b

构建模型

X = tf.placeholder(tf.float32, [None, 1])
w = tf.Variable(tf.zeros([1, 1]))
b = tf.Variable(tf.zeros([1]))
y = tf.matmul(X, w) + b
Y = tf.placeholder(tf.float32, [None, 1])

构建成本函数

cost = tf.reduce_mean(tf.square(Y-y))

梯度下降最小化成本函数,梯度下降步长为0.01

train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

完整代码,迭代次数为10000

import tensorflow as tfX = tf.placeholder(tf.float32, [None, 1])
w = tf.Variable(tf.zeros([1, 1]))
b = tf.Variable(tf.zeros([1]))
y = tf.matmul(X, w) + b
Y = tf.placeholder(tf.float32, [None, 1])# 成本函数 sum(sqr(y_-y))/n
cost = tf.reduce_mean(tf.square(Y-y))# 用梯度下降训练
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cost)init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)x_train = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]]
y_train = [[10],[11.5],[12],[13],[14.5],[15.5],[16.8],[17.3],[18],[18.7]]for i in range(10000):sess.run(train_step, feed_dict={X: x_train, Y: y_train})
print("w:%f" % sess.run(w))
print("b:%f" % sess.run(b))

多特征线性回归

多特征回归模型为:y=(w1x1+w2x2+...+wnxn)+b,写为y=wx+b

y为m行1列矩阵,x为m行n列矩阵,w为n行1列矩阵。TensorFlow中用如下来表示模型。

构建模型

X = tf.placeholder(tf.float32, [None, n])
w = tf.Variable(tf.zeros([n, 1]))
b = tf.Variable(tf.zeros([1]))
y = tf.matmul(X, w) + b
Y = tf.placeholder(tf.float32, [None, 1])

构建成本函数

cost = tf.reduce_mean(tf.square(Y-y))

梯度下降最小化成本函数,梯度下降步长为0.01

train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

完整代码,迭代次数为10000

import tensorflow as tfX = tf.placeholder(tf.float32, [None, 2])
w = tf.Variable(tf.zeros([2, 1]))
b = tf.Variable(tf.zeros([1]))
y = tf.matmul(X, w) + b
Y = tf.placeholder(tf.float32, [None, 1])# 成本函数 sum(sqr(y_-y))/n
cost = tf.reduce_mean(tf.square(Y-y))# 用梯度下降训练
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cost)init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)x_train = [[1, 2], [2, 1], [2, 3], [3, 5], [1, 3], [4, 2], [7, 3], [4, 5], [11, 3], [8, 7]]
y_train = [[7], [8], [10], [14], [8], [13], [20], [16], [28], [26]]for i in range(10000):sess.run(train_step, feed_dict={X: x_train, Y: y_train})
print("w0:%f" % sess.run(w[0]))
print("w1:%f" % sess.run(w[1]))
print("b:%f" % sess.run(b))

总结

在线性回归中,TensorFlow可以很方便地利用矩阵进行多特征的样本训练。

相关阅读

  • 线性回归之最小二乘法
  • 机器学习之梯度下降法
  • 机器学习的监督学习在研究什么

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================
欢迎关注:

这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据之HDFS应用开发(java API)

目录1、搭建开发环境2、获取api中的客户端对象3、DistributedFileSystem实例对象所具备的方法4、HDFS客户端操作数据代码示例 目录 1、搭建开发环境 window下开发的说明: A、在windows的某个目录下解压一个hadoop的安装包 B、将安装包下的lib和bin目录用对应windows版本平…

shell脚本执行方式,更方便更快捷。

在进行linux测试时编写脚本是必不可少的。最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本。可以把太多的命令写成一个脚本,这样每次执行一遍 shell文件,就可以省去了敲击键盘的时间。于是在网上搜了一些有…

行为科学统计第1章

行为科学统计 Statistics for the Behavioral Sciences 一周只学习一次不如每周学习比较多的几次高效噢~[一开始,你并不知道这是一个会写着画风突变的读书笔记?…] 第I部分 简述与描述性统计 第1章 统计学入门 这本书我就是觉得这…

闭包---在函数内部再定义一个函数

什么是闭包 # 定义一个函数 def test(number):# 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包def test_in(number_in):print("in test_in 函数, number_in is %d" % number_in)re…

慕课网_《Java实现对称加密》学习总结

时间:2017年4月11日星期二说明:本文部分内容均来自慕课网。慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://github.com/zccodere/s... 第一章:对称加密算…

大数据之MapReduce详解(MR的运行机制及配合WordCount实例来说明运行机制)

目录前言:1、MapReduce原理2、mapreduce实践(WordCount实例) 目录 今天先总体说下MapReduce的相关知识,后续将会详细说明对应的shuffle、mr与yarn的联系、以及mr的join操作的等知识。以下内容全是个人学习后的见解,如…

生动形象的理解什么是装饰器!

装饰器 装饰器是程序开发中经常会用到的一个功能,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多初次接触这个知识的人来讲,这个功能有点绕,自学时直接绕过去了,…

PLSQL 申明和游标

--从键盘输入一个数 accept b prompt 请输入一个大于零的数字; declareanum number : &b; beginwhile anum>0loopdbms_output.put_line(anum);anum:anum-1;end loop; end;declarev_num number; begin -- 从stsu表中选出id最大的值,并根据该值打印次数select …

20155222 2016-2017-2 《Java程序设计》第8周学习总结

20155222 2016-2017-2 《Java程序设计》第8周学习总结 教材学习内容总结 Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区&…

BAT经典面试题精简版(基础知识附答案)

文章目录目录J2SE基础JVM操作系统TCP/IP数据结构与算法目录 J2SE基础 九种基本数据类型的大小,以及他们的封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble Switch能否用string做参数&…

使用2to3.py 转换 python2.x 代码 到python3

1.使用Windows 命令提示符(cmd)cd到2to3.py 脚本所在位置,如下图: 找不到的2 to 3.py的去 pycharm中双击shift搜索一下 2.紧接着运行 2to3.py 脚本(可省略) 3.执行你想要转换的文件 python 2to3.py -w H:…

iis6.0与asp.net的运行原理

这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望…

元类--用不上的先了解

元类 1. 类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立: >>> class ObjectCreator(object): … pass … >>> my_object ObjectCreator() >>> print(my_ob…

Android学习笔记进阶十之Matrix错切变换

刚开始我也不懂啥叫错切变换,一看效果图你就恍然大悟。 对图像的错切变换做个总结: x x0 b*y0; y d*x0 y0; 与之对应的方法是: [java] view plaincopyMatrix matrix new Matrix(); matrix.setSkew(0.0f, 0.5f);

SQL数据库实战(含建表数据和查询案例)

Oracle数据库安装的时候会自带一个练习用数据库(其中包含employee表,后来版本中此表改名为emp); 首先在安装过程中应该有个选项“是否安装实例表”(完全安装模式下默认是选择的),需要选择才有此…

Django中的核心思想ORM---元类实现ORM

1. ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM。 一个句话理解就是:创建一个实例对象,用创建它的类名当做数据表名,用创建它…

移动互联网广告 - 第十更 - 广告投放运营 DashBoard - 2016/12/10

广告投放运营 DashBoard设计 移动互联网互联网广告投放,数据监控DashBoard,基础样例示意,下图仅供参考(来自于互联网)。 转载于:https://www.cnblogs.com/pythonMLer/p/6154700.html

微信小程序中使用emoji表情相关说明

2019独角兽企业重金招聘Python工程师标准>>> 本帖将聚合一些跟emoji表情有关的知识;相关文章:“i爱记账” 小程序后端开发小结 第7条经验前端传过来的昵称和备注信息一定要经过严格的正则表达式过滤,放置出现XSS等攻击&#xff0c…

java.lang.IllegalArgumentException: Does not contain a valid host:port authority: ignorethis

执行Hive语句运行MapReduce程序时突然出现这样的异常: Total MapReduce jobs 1 Launching Job 1 out of 1 Number of reduce tasks not specified. Estimated from input data size: 1 In order to change the average load for a reducer (in bytes):set hive.ex…

Oracle基础语句

1、创建表create table IT_EMPLOYEES(ENPLOYEES_ID NUMBER(6) NOT NULL UNIQUE,FIRST_NAME VARCHAR2(20),LAST_NAME VARCHAR2(25) NOT NULL,EMAIL VARCHAR2(25),PHONE_NUMBER VARCHAR2(20),JOB_ID VARCHAR2(10),SALARY NUMBER(8,2),MANAGER_ID NUMBER(6));2、--创建索引&#x…