博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TensorFlow训练单特征和多特征的线性回归
阅读量:6717 次
发布时间:2019-06-25

本文共 2410 字,大约阅读时间需要 8 分钟。

线性回归

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

主要思想

在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) + bY = 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) + bY = tf.placeholder(tf.float32, [None, 1])# 成本函数 sum(sqr(y_-y))/ncost = 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) + bY = 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) + bY = tf.placeholder(tf.float32, [None, 1])# 成本函数 sum(sqr(y_-y))/ncost = 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内核设计剖析》已经在京东销售了,有需要的朋友可以到 进行预定。感谢各位朋友。

=========================

欢迎关注:

这里写图片描述

你可能感兴趣的文章
湖南卫视邮件服务器架设方案
查看>>
LoadRunner11破解详解
查看>>
排序算法 时间、空间复杂度
查看>>
集合框架(集合的继承体系图解)
查看>>
Win32应用程序(SDK)设计原理详解
查看>>
windows serve 2012部署操作系统之部署前期准备(九)
查看>>
JFinal整合HTTL模板引擎
查看>>
“Object "netns" is unknown, try "ip help".\n'”报错
查看>>
SQL语句中----删除表数据drop、truncate和delete的用法
查看>>
零零散散学算法之详解几种数据存储结构
查看>>
我的友情链接
查看>>
关于vmware station 12pro 简易安装
查看>>
有用的正则表达式
查看>>
mysql show status解释
查看>>
Spark 下操作 HBase(1.0.0 新 API)
查看>>
PostgreSQL数据库切割和组合字段函数
查看>>
Jboss & Wildfly
查看>>
.NET简谈组件程序设计之(渗入序列化过程)
查看>>
DataGuard参数配置详解
查看>>
2010(Flex 初次使用 小节:No.2)
查看>>