利用tensorflow实现数据的线性回归

**导入相关库**

import tensorflow as tf
import numpy
import matplotlib.pyplot as plt
rng = numpy.random

参数设置

learning_rate = 0.01
training_epochs = 1000
display_step = 50

训练数据

train_X = numpy.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
7.042,10.791,5.313,7.997,5.654,9.27,3.1])
train_Y = numpy.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,
2.827,3.465,1.65,2.904,2.42,2.94,1.3])
n_samples = train_X.shape[0]

tf图输入

X = tf.placeholder("float")
Y = tf.placeholder("float")

设置权重和偏置

W = tf.Variable(rng.randn(), name="weight")
b = tf.Variable(rng.randn(), name="bias")

构建线性模型

pred = tf.add(tf.multiply(X, W), b)

均方误差

cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)

梯度下降

optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

初始化变量

init = tf.global_variables_initializer()

开始训练

with tf.Session() as sess:
sess.run(init)
# 适合所有训练数据
for epoch in range(training_epochs):
for (x, y) in zip(train_X, train_Y):
sess.run(optimizer, feed_dict={X: x, Y: y})
# 显示每个纪元步骤的日志
if (epoch+1) % display_step == 0:
c = sess.run(cost, feed_dict={X: train_X, Y:train_Y})
print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \
"W=", sess.run(W), "b=", sess.run(b))
print("Optimization Finished!")
training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y})
print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n')
# 画图显示
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
plt.legend()
plt.show()

结果展示

Epoch: 0050 cost= 0.183995649 W= 0.43250677 b= -0.5143978

Epoch: 0100 cost= 0.171630666 W= 0.42162812 b= -0.43613702

Epoch: 0150 cost= 0.160693780 W= 0.41139638 b= -0.36253116

Epoch: 0200 cost= 0.151019916 W= 0.40177315 b= -0.2933027

Epoch: 0250 cost= 0.142463341 W= 0.39272234 b= -0.22819161

Epoch: 0300 cost= 0.134895071 W= 0.3842099 b= -0.16695316

Epoch: 0350 cost= 0.128200993 W= 0.37620357 b= -0.10935676

Epoch: 0400 cost= 0.122280121 W= 0.36867347 b= -0.055185713

Epoch: 0450 cost= 0.117043234 W= 0.36159125 b= -0.004236537

Epoch: 0500 cost= 0.112411365 W= 0.3549302 b= 0.04368245

Epoch: 0550 cost= 0.108314596 W= 0.34866524 b= 0.08875148

Epoch: 0600 cost= 0.104691163 W= 0.34277305 b= 0.13114017

Epoch: 0650 cost= 0.101486407 W= 0.33723122 b= 0.17100765

Epoch: 0700 cost= 0.098651998 W= 0.33201888 b= 0.20850417

Epoch: 0750 cost= 0.096145160 W= 0.32711673 b= 0.24377018

Epoch: 0800 cost= 0.093927994 W= 0.32250607 b= 0.27693948

Epoch: 0850 cost= 0.091967128 W= 0.31816947 b= 0.308136

Epoch: 0900 cost= 0.090232961 W= 0.31409115 b= 0.33747625

Epoch: 0950 cost= 0.088699281 W= 0.31025505 b= 0.36507198

Epoch: 1000 cost= 0.087342896 W= 0.30664718 b= 0.39102668

Optimization Finished!

Training cost= 0.087342896 W= 0.30664718 b= 0.39102668


参考:

Author: Aymeric Damien

Project: https://github.com/aymericdamien/TensorFlow-Examples/

机器学习系列-tensorflow-03-线性回归Linear Regression的更多相关文章

  1. Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

    原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  2. 机器学习 (一) 单变量线性回归 Linear Regression with One Variable

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...

  3. ISLR系列:(1)线性回归 Linear Regression

       Linear Regression 此博文是 An Introduction to Statistical Learning with Applications in R 的系列读书笔记,作为本 ...

  4. [笔记]机器学习(Machine Learning) - 01.线性回归(Linear Regression)

    线性回归属于回归问题.对于回归问题,解决流程为: 给定数据集中每个样本及其正确答案,选择一个模型函数h(hypothesis,假设),并为h找到适应数据的(未必是全局)最优解,即找出最优解下的h的参数 ...

  5. 吴恩达机器学习(二) 单变量线性回归(Linear Regression with one variable)

    一.模型表示 1.一些术语 如下图,房价预测.训练集给出了房屋面积和价格,下面介绍一些术语: x:输入变量或输入特征(input variable/features). y:输出变量或目标变量(out ...

  6. 吴恩达机器学习笔记8-多变量线性回归(Linear Regression with Multiple Variables)--多维特征

    我们探讨了单变量/特征的回归模型,现在我们对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为(

  7. 吴恩达机器学习笔记1-单变量线性回归(Linear Regression with One Variable)

    在监督学习中我们有一个数据集,这个数据集被称训练集.

  8. TensorFlow 学习笔记(1)----线性回归(linear regression)的TensorFlow实现

    此系列将会每日持续更新,欢迎关注 线性回归(linear regression)的TensorFlow实现 #这里是基于python 3.7版本的TensorFlow TensorFlow是一个机器学 ...

  9. 机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables)

    机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables) 同样是预测房价问题  如果有多个特征值 那么这种情况下  假设h表示 ...

随机推荐

  1. uva11916 bsgs算法逆元模板,求逆元,组合计数

    其实思维难度不是很大,但是各种处理很麻烦,公式推导到最后就是一个bsgs算法解方程 /* 要给M行N列的网格染色,其中有B个不用染色,其他每个格子涂一种颜色,同一列上下两个格子不能染相同的颜色 涂色方 ...

  2. 从认识面向对象到构造函数的标准写法(构造函数的继承、多态、ECMA6中新代替语法class) - 下

    笔记一个包含:认识面向对象.构造函数的封装.继承.多态.ECMA6中新代替语法class 下:包括构造函数的继承.多态.ECMA6中新代替语法class 构造函数的继承 从父一级延续下来的属性和功能( ...

  3. CentOS6.8安装MySQL5.7.20时报Curses library not found解决

    报错如下: CMakeErroratcmake/readline.cmake:83(MESSAGE): Curseslibrarynotfound.Pleaseinstallappropriatepa ...

  4. 论文阅读笔记三:R2CNN:Rotational Region CNN for Orientation Robust Scene Text Detection(CVPR2017)

    进行文本的检测的学习,开始使用的是ctpn网络,由于ctpn只能检测水平的文字,而对场景图片中倾斜的文本无法进行很好的检测,故将网络换为RRCNN(全称如题).小白一枚,这里就将RRCNN的论文拿来拜 ...

  5. centos7.4/rehat7.0系统安装

    以下是安装过程:(图解),以下是rehat为例 这里可以改为centos的镜像 之后就可以用了,记得做快照!!! 拓展:分离使用 效果:

  6. 三.hadoop mapreduce之WordCount例子

    目录: 目录见文章1 这个案列完成对单词的计数,重写map,与reduce方法,完成对mapreduce的理解. Mapreduce初析 Mapreduce是一个计算框架,既然是做计算的框架,那么表现 ...

  7. salt 执行shell 脚本 修改名字

    #!/bin/bash #命令 匹配主机 执行模块 脚本路径,必须放在salt目录下 源主机名 修改的主机名 #salt tt_LD_LM_LC_1 cmd.script salt://init/re ...

  8. windows10的文件浏览器中无法搜索文件内容

    系统:更新到最新的win10(2018年8月23日 23:54:31) 重现步骤:git clone一个项目,然后切换到它的另一个分支:打开文件夹浏览器(explorer),在右上角里输入想要查找的字 ...

  9. Flink在流处理上常见的Source和sink操作

    flink在流处理上的source和在批处理上的source基本一致.大致有4大类 1.基于本地集合的source(Collection-based-source) 2.基于文件的source(Fil ...

  10. net core体系-web应用程序-4net core2.0大白话带你入门-5asp.net core环境变量详解

    asp.net core环境变量详解   环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的 ...