首先我们要试验的是 人体脂肪fat和年龄age以及体重weight之间的关系,我们的目标就是得到一个最优化的平面来表示三者之间的关系:

TensorFlow的程序如下:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
W = tf.Variable(tf.zeros([2, 1], name="weight_age"))
b = tf.Variable(0.0, name="bias") def inference(X):
return tf.matmul(X, W) + b def loss(X, Y):
Y_predicted = inference(X)
return tf.reduce_sum(tf.square(Y-Y_predicted)) def inputs():
weight_age = [[84,46],[93,20],[65,52],[70,30],[76,57],[69,25],[63,28],[72,36],[79,57],[75,44]
,[27,24],[89,31],[65,52],[57,23],[59,60],[69,48],[60,34],[79,51],[75,50],[82,34]
,[59,46],[67,23],[85,37],[55,40],[63,30]]
blood_fat_content = [354,190,405,263,451,302,288,385,402,365,209,290,346
,254,395,434,220,374,308,220,311,181,274,303,244]
return tf.to_float(weight_age), tf.to_float(blood_fat_content) def train(total_loss):
learning_rate = 0.00000001
return tf.train.GradientDescentOptimizer(learning_rate).minimize(total_loss) def evaluate(sess, X, Y):
print sess.run(inference([[80., 25.]]))
print sess.run(inference([[65., 25.]])) init = tf.global_variables_initializer() with tf.Session() as sess:
sess.run(init)
X, Y = inputs()
total_loss = loss(X, Y)
print "The total_loss:",total_loss
train_op = train(total_loss)
training_steps = 10000
for step in range(training_steps):
sess.run([train_op])
if step % 1000 == 0:
print "loss:", sess.run([total_loss])
evaluate(sess, X, Y)
   print 'W is:',W.eval()
   print 'b is:',b.eval()
sess.close()

程序中的数据散点图如下:

通过TensorFlow得到的最终的W的取值和b的取值如下所示:

现在我们将得到的W的数据和b的数据绘制平面(MATLAB程序如下):

% TensorFlow Data Plot Script For Matlab%
weight_age = [[84,46];[93,20];[65,52];[70,30];[76,57];[69,25];[63,28];[72,36];
[79,57];[75,44];[27,24];[89,31];[65,52];[57,23];[59,60];[69,48];[60,34];
[79,51];[75,50];[82,34];[59,46];[67,23];[85,37];[55,40];[63,30]]; % 25*2
weight = weight_age(:,1); %25*1
age = weight_age(:,2); %25*1
blood_fat_content = [354,190,405,263,451,302,288,385,402,365,209,290,346,254,395,434,220,374,308,220,311,181,274,303,244]; % 1*25
Fat = zeros(max(weight),max(age));
for i=1:25
Fat(weight(i),age(i)) = blood_fat_content(i);
end
figure,plot3(weight,age,blood_fat_content','.')
hold on % 平面拟合
A = 3.23492765;
B = 1.94148386;
C = 1.15458;
[x,y] = meshgrid(0:1:90);
z = A*x+B*y+C; mesh(z)

结果图如下所示:

注:这里在实验的过程中,碰到一些问题,当我把learning_rate设置为0.000001时,未能得到相应的结果,total_loss=nan,也就是说梯度下降法的过程没有收敛,导致无法得到相应的数据结果!(还需要注意你的是python3还是Python2,这里的print 需要修改一下哦!)关于参数设定的学习还是慢慢来吧~

简单的线性回归问题-TensorFlow+MATLAB·的更多相关文章

  1. 【学习笔记】tensorflow实现一个简单的线性回归

    目录 准备知识 Tensorflow运算API 梯度下降API 简单的线性回归的实现 建立事件文件 变量作用域 增加变量显示 模型的保存与加载 自定义命令行参数 准备知识 Tensorflow运算AP ...

  2. 用Tensorflow完成简单的线性回归模型

    思路:在数据上选择一条直线y=Wx+b,在这条直线上附件随机生成一些数据点如下图,让TensorFlow建立回归模型,去学习什么样的W和b能更好去拟合这些数据点. 1)随机生成1000个数据点,围绕在 ...

  3. TensorFlow——热身运动:简单的线性回归

    过程: 先用numpy建立100个数据点,再用梯度下滑工具来拟合,得到完美的回归线. # _*_coding:utf-8_*_ import tensorflow as tf import numpy ...

  4. 机器学习笔记(一)—— 线性回归问题与Matlab求解

    给你多组数据集,例如给你很多房子的面积.房子距离市中心的距离.房子的价格,然后再给你一组面积. 距离,让你预测房价.这类问题称为回归问题. 回归问题(Regression) 是给定多个自变量.一个因变 ...

  5. pytorch(04)简单的线性回归

    线性回归 线性回归是分析一个变量与另外一个变量之间关系的方法 因变量:y 自变量:x 关系:线性 y = wx+b 分析:求解w,b 求解步骤: 确定模型,Model:y = wx+b 选择损失函数, ...

  6. 深度学习_1_Tensorflow_1

    # 深度学习 # 图像识别,自然语言处理 # 机器学习 深度学习 # 分类:神经网络(简单) 神经网络(深度) # 回归 图像:卷积神经网络 # 自然语言处理:循环神经网络 # cpu:运行操作系统, ...

  7. TensorFlow从0到1之TensorFlow实现简单线性回归(15)

    本节将针对波士顿房价数据集的房间数量(RM)采用简单线性回归,目标是预测在最后一列(MEDV)给出的房价. 波士顿房价数据集可从http://lib.stat.cmu.edu/datasets/bos ...

  8. TensorFlow简单线性回归

    TensorFlow简单线性回归 将针对波士顿房价数据集的房间数量(RM)采用简单线性回归,目标是预测在最后一列(MEDV)给出的房价. 波士顿房价数据集可从http://lib.stat.cmu.e ...

  9. [tensorflow] 线性回归模型实现

    在这一篇博客中大概讲一下用tensorflow如何实现一个简单的线性回归模型,其中就可能涉及到一些tensorflow的基本概念和操作,然后因为我只是入门了点tensorflow,所以我只能对部分代码 ...

随机推荐

  1. 【Python之基本数据类型 基本运算】

    一.基本数据类型 1.字符串 类:str 方法:选中str,按住command(ctrl)+左键跳转至对应的方法 字符串常用方法归纳如下: 1)capitalize 功能:实现字符串首字母大写,自身不 ...

  2. Python爬知乎妹子都爱取啥名

    闲来无事上知乎,看到好多妹子,于是抓取一波. 有没有兴趣?? 目标网址https://www.zhihu.com/collection/78172986 抓取分析 爬取分析 使用pandas操作文件 ...

  3. ionic2 跳转子页面隐藏底部导航栏

    第一种方法: 在tab里面添加一个属性[tabsHideOnSubPages]='true' <ion-tab [root]="tab1Root" [tabsHideOnSu ...

  4. react-router 参数获取

    No BB!!! show me the code. Main.js import { BrowserRouter, Route, Link ,Switch} from 'react-router-d ...

  5. php中常用的处理字符串的函数

    1.将字符串转换为数组的函数:str_split() array str_split ( string $string [, int $split_length = 1 ] ) string:输入字符 ...

  6. node.js如何制作命令行工具(一)

    之前使用过一些全局安装的NPM包,安装完之后,可以通过其提供的命令,完成一些任务.比如Fis3,可以通过fis3 server start 开启fis的静态文件服务,通过fis3 release开启文 ...

  7. 一个编程菜鸟的进阶之路(C/C++)

    学编程是一条不归路,但我义无反顾.只能往前冲,知道这个过程是痛苦的,所以我开通这个博客,记录自己在编程中遇到的问题和心得,一是希望可以帮助跟我一样遇到同样问题的人,二是把这作为对自己的勉励及回忆:

  8. VMware安装CentOS 提示:已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。解决方案

    安装虚拟机遇到错误: 在网上查了查资料,发现CPU支持VT技术的就能支持vmware中安装64位虚拟机. 以下是操作步骤: 1)到网上下载一个securable.exe,测试以下机器是否支持VT. l ...

  9. vmware克隆虚拟机后网卡名称及网络地址xiuf

    使用vmware克隆虚拟机后,若原主机网卡名称为eth0,那么克隆后的主机使用ifconfig查看仅能看到一个名称为eth1的网卡 并且在/etc/sysconfig/network-scripts/ ...

  10. google和oracle闹掰,Java 会不会被抛弃?

    眼花缭乱的编程语言 程序界的语言实在太多,但有一种语言不得不说,那就是java语言,Java语言是Android系统的主要开发语言,现在和Google的关系不是很好,但是他会被淘汰吗?下面简单地分析一 ...