思路:用线性回归拟合鸢尾花花瓣长度和宽度之间的关系:y = Ax + b,其中 y 时花瓣长度,x是花瓣宽度。
建议有一点 tensorflow 基础再往下看。
下面是代码具体讲解。

先放结果吧

代码讲解

#导入库
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets# sess 我的理解就是一个发电机,让运算开始起来。要运行就用 sess.run(...)
sess = tf.Session()
iris = datasets.load_iris()# iris.data 是一个 150 行, 4 列的二维数组,如下面截图。4 列依次是萼片长度、萼片宽度、花瓣长度、花瓣宽度
y_vals  = np.array([x[2] for x in iris.data])  #花瓣长度,可以随便换
x_vals  = np.array([y[3] for y in iris.data])  #花瓣宽度# batch_size 设定一次取 10 个数据来处理
batch_size = 10# 这里写的虽然是 x_data, y_data,但它们其实只是一个容器一样的东西,
# x_data, y_data 可以装大小为 [batch_size, 1] ,类型为 tf.float64类型的数据
x_data = tf.placeholder(shape=[batch_size, 1], dtype=tf.float64)
y_data = tf.placeholder(shape=[batch_size, 1], dtype=tf.float64)# 声明变量,变量就是要计算或优化的对象,此处就是 A 和 b。
# 下面要计算,x_data, y_data 是二维数组,所以也把 A, b 声明成二维数组,只有一个元素的二维数组
A = tf.Variable(tf.random_normal(shape=[1,1], dtype=tf.float64))
b = tf.Variable(tf.random_normal(shape=[1,1], dtype=tf.float64))# 输入 y = A x + b
# 损失函数为误差平方的均值
# 用梯度下降优化,优化步长为 0.01,可以取其他
y_output = tf.add(tf.multiply(A, x_data), b)
loss = tf.reduce_mean(tf.square(y_output - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(loss)# 初始化变量
init = tf.global_variables_initializer()
sess.run(init)# loss_iter 是损失值变化,作图可以看损失值随迭代次数增加的变化情况
loss_iter = []
for i in range(201):# 产生batch_size 个范围在 0 ~ len(x_vals) 内的整数indexs = np.random.choice(len(x_vals), size=batch_size)# 我们每次随机选取 batch_size 个数据计算损失,进行优化x_rand = np.transpose([x_vals[indexs]])y_rand = np.transpose([y_vals[indexs]])loss_iter.append(sess.run(loss, feed_dict={x_data:x_rand, y_data:y_rand}))sess.run(optimizer, feed_dict={x_data:x_rand, y_data:y_rand})if  (i+1)%20 == 0:print('#\t'+str(i+1) + '\tA = ' + str(sess.run(A)) + '\tb = '+str(sess.run(b)))# 取出最终的 A 、b 值
[[AA]] = sess.run(A)
[[bb]] = sess.run(b)
y_fit = AA * x_vals + bb# 最好玩的画图
# 画回归图
plt.subplot(211)
plt.plot(x_vals, y_vals, 'go')
plt.plot(x_vals, y_fit, 'r-')
plt.xlabel('Petal length'); plt.ylabel('Petal width'); plt.title('Petal Length and Petal Width')# 画损失图
plt.subplot(212)
plt.plot(range(len(loss_iter)), loss_iter, 'b-')
plt.xlabel('Generation'); plt.ylabel('Loss'); plt.title('The Loss per Generation')
plt.show()

结果如上

tensorflow线性回归--拟合iris花瓣数据相关推荐

  1. tensorflow Elastic Net回归,拟合 iris 数据

    引言: 之前写过一篇 tensorflow线性回归–拟合iris花瓣数据.今天的Elastic Net Regression和它差不多,只不过是损失函数变了一下.我对Elastic Net 回归的理解 ...

  2. 线性回归csv数据集_数据科学的基石:统计学、机器学习、计算机科学(三)——线性回归...

    数据科学家们常说,所有的模型都是错的,但是,其中一些是有用的.如果一个"有用"的模型能够过滤掉数据中哪些不重要的细枝末节,抓住其主要的内在关系,从而帮助我们更好地理解数据.很多情况 ...

  3. tensorflow 线性回归

    https://blog.csdn.net/zhangpengzp/article/details/81384154 学习tensorflow,希望与大家共同进步,下面讲述的是如何利用tensorfl ...

  4. 基于梯度下降法的——线性回归拟合

    点击"小詹学Python",选择"置顶"公众号 重磅干货,第一时间送达 本文转载自数据分析挖掘与算法,禁二次转载 阅读本文需要的知识储备: 高等数学 运筹学 P ...

  5. loss下降auc下降_梯度下降算法 线性回归拟合(附Python/Matlab/Julia源代码)

    梯度下降 梯度下降法的原理 梯度下降法(gradient descent)是一种常用的一阶(first-order)优化方法,是求解无约束优化问题最简单.最经典的方法之一. 梯度下降最典型的例子就是从 ...

  6. TensorFlow和Keras解决大数据量内存溢出问题

    NVIDIA DLI 深度学习入门培训 | 特设三场! 4月28日/5月19日/5月26日一天密集式学习  快速带你入门阅读全文> 正文共5771个字,1张图,预计阅读时间10分钟. 内存溢出问 ...

  7. matlab最小二乘法_基于最小二乘法的线性回归拟合

    阅读本文需要的知识储备: 高等数学 概率论与数理统计 Python基础 线性回归,其实生活中有很多这样的例子,比如:票价与行车距离.服务质量之间的关系,买房时房价与面积.地域等的关系.给我们一组这样的 ...

  8. Python实现线性回归拟合并绘图

    线性回归拟合并绘图 介绍 目标 提示 实现思路 参考代码 本题出自蓝桥云题库:https://www.lanqiao.cn/problems/78/learning/ 介绍 线性回归是机器学习中最基础 ...

  9. 用计算机怎么算吸光度的回归方程,Pt含量与UV-Vis吸光度的线性回归拟合.doc

    Pt含量与UV-Vis吸光度的线性回归拟合 PAGE2 / NUMPAGES10 Pt含量与U V-Vis吸光度的线性回归拟合 学 生:张薇薇 学 号:20111802007 教 师:黄光辉 学 院: ...

最新文章

  1. Debian/Ubuntu--blade安装与使用
  2. [译]Web 性能优化: 图片优化让网站大小减少 62%
  3. 观察者模式VS发布-订阅模式
  4. WebSocket协议入门介绍
  5. fmea软件_新版FMEA易错点梳理(一):范围界定和过程流程图-SGS
  6. 图片上传下载连接云服务器tomcat
  7. HDU 2815 扩展baby step giant step 算法
  8. setValue:forKey of nsobject
  9. Isight 软件集成AVLCruise软件方法探讨
  10. xci转nsp工具_【ns新系统11.0.0发布】安装工具已经更新至4.2【后面附上批处理内容修改】...
  11. pyqt5优秀项目python_【项目】PYQT5--Python/C++实现网络聊天室
  12. 程序员与黑客的故事 程序员应有的工作素质
  13. android编程如何调整屏幕亮度,Android编程设置屏幕亮度的方法
  14. Openlayers 自定义气泡框以及定位到气泡框
  15. linux分区拓展容量,Linux系统分区容量扩充的方法
  16. Python 多线程 threading.Thread 同时最多有 n 个线程
  17. 英文学习20180410
  18. 傅里叶变换性质----Leson Chap3_8-9
  19. DC系列:1 (DC-1靶机,初级渗透详细教程)
  20. 数字城市发展,哪些技术可以深度应用

热门文章

  1. 29.字节码指令集与解析
  2. No migrations to apply
  3. live555修改IP地址
  4. The reference to entity ampcharacterEncoding must end with the ';
  5. 的Android组件、工具、框架大全(转) android 学习 android 例子 android 开源项目
  6. cisco路由器的重发布
  7. sleep期间读取所有_如何保障“双11”期间亿万买家和卖家愉快地聊天
  8. 【SpringCloud】
  9. 虚拟机的搭建-----适用于云计算
  10. 像Google一样开会