使用tensorflow实现机器学习中的线性拟合
这个例子是模拟的单变量线性回归,通过提高单变量的阶数来增加特征数量,例如:4阶相当于分解为四个特征
这种思想同样适用于多变量线性回归

        import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['FangSong'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False# 用来正常显示负号plt.title('四阶多项式拟合')        #数据准备n_samples =100#数据集X = np.linspace(-3, 3, n_samples)#数据集标签,需要拟合的结果Y = np.sin(X) + np.random.uniform(0,1,n_samples)#静态图定义mg = tf.Graph()with mg.as_default():#占位xs = tf.placeholder(dtype=tf.float32,name='xs')ys = tf.placeholder(dtype=tf.float32,name='ys')#需要训练的权重变量w1 = tf.Variable(tf.random_normal([1]),name='w1')w2 = tf.Variable(tf.random_normal([1]),name='w2')w3 = tf.Variable(tf.random_normal([1]),name='w3')w4 = tf.Variable(tf.random_normal([1]),name='w4')b = tf.Variable(tf.zeros(1),name='b')#多项式公式my_pred = []my_pred.append(tf.multiply(w1,xs)) my_pred.append(tf.multiply(w2,tf.pow(xs,2)))my_pred.append(tf.multiply(w3,tf.pow(xs,3)))my_pred.append(tf.multiply(w4,tf.pow(xs,4)))y_pred = tf.add(tf.add_n(my_pred), b)#损失函数:使用样本方差loss = tf.reduce_sum(tf.pow(y_pred-ys, 2)) / (len(X)-1)#学习率,其实就是用多大的步进持续学习lr = 0.01#学习的轮数epochs = 1000#使用梯度下降法优化optimizer = tf.train.GradientDescentOptimizer(learning_rate=lr).minimize(loss)with tf.Session(graph=mg) as sess:sess.run(tf.global_variables_initializer())for epoch in range(epochs):total_loss = 0for x,y in zip(X,Y):_,tmp_loss = sess.run([optimizer,loss],feed_dict={xs:x,ys:y})total_loss += tmp_lossif epoch%10 == 0:print('epoch{:} the loss {:}'.format(epoch,total_loss))#获取系统优化结果mgw1,mgw2,mgw3,mgw4,mgb = sess.run([w1,w2,w3,w4,b])#session中的变量自动转换为全局变量print(mgw1,mgw2,mgw3,mgw4,mgb)#最终的拟合函数YY= X*mgw1 + X**2*mgw2 + X**3*mgw3 + X**4*mgw4 + mgbplt.plot(X, Y, 'bo', label='原始数据')plt.plot(X, YY, 'r', label='拟合数据')plt.legend()plt.show()

转载于:https://www.cnblogs.com/ace007/p/10720994.html

使用tensorflow实现机器学习中的线性拟合相关推荐

  1. 一文解决机器学习中的过拟合与欠拟合问题(正则化,数据增强,Dropout)

    一文解决机器学习中的过拟合与欠拟合问题(正则化,数据增强,Dropout,提前终止) 生活中的过拟合与欠拟合现象 过拟合与欠拟合的概念 解决过拟合与欠拟合问题的四大金刚 正则化 数据增强 Dropou ...

  2. linearregression_机器学习-TensorFlow建模过程 Linear Regression线性拟合应用

    TensorFlow是咱们机器学习领域非常常用的一个组件,它在数据处理,模型建立,模型验证等等关于机器学习方面的领域都有很好的表现,前面的一节我已经简单介绍了一下TensorFlow里面基础的数据结构 ...

  3. 深度学习模型在训练集上很好而在测试集表现得不好而拟合次数并不多_机器学习中的过拟合,欠拟合和偏倚方差折衷...

    过度拟合在机器学习中很重要. 很直观的解释过拟合:假设我们现在让机器学习考试做题,想象一种情况,机器逐字记住每个问题的答案(拟合非常好-完美).然后,我们可以在练习题上得分很高:我们这样做是基于希望实 ...

  4. 机器学习中的过拟合与解决办法

    什么是过拟合 对于机器学习项目而言,过拟合(overfitting)这个问题一般都会遇到.什么是过拟合呢? 维基百科: 在统计学中,过拟合现象是指在拟合一个统计模型时,使用过多参数.对比于可获取的数据 ...

  5. 浅谈机器学习中的过拟合

    本篇博客主要是基于花书(古德费洛的<Deep Learning>)和西瓜书(周志华的<机器学习>)撰写的,其中插入了博主的一些个人见解,如有不对之处希望大家指出来一起来讨论一下 ...

  6. 机器学习中防止过拟合的处理方法

    原文地址:一只鸟的天空,http://blog.csdn.net/heyongluoyao8/article/details/49429629 防止过拟合的处理方法 过拟合   我们都知道,在进行数据 ...

  7. 干货︱机器学习中防止过拟合的处理方法

    我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independently and identically distributed),即当前 ...

  8. 机器学习中防止过拟合方法

    过拟合   在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布,即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型,即使用已经产生的数据去训 ...

  9. 机器学习中防止过拟合的方法总结

    来自机器学习成长之路公众号 在对模型进行训练时,有可能遇到训练数据不够,即训练数据无法对整个数据的分布进行估计的时候,或者在对模型进行过度训练(overtraining)时,常常会导致模型的过拟合(o ...

最新文章

  1. 《网络维护》MAC地址
  2. nethogs 查看 Linux 进程的网络使用
  3. 没好域名?就得给自己换个名
  4. 多线程之 CreateThread与_beginthreadex本质区别
  5. 牛客19115 选择颜色
  6. windows共享文件服务器迁移(NTFS权限,共享权限,磁盘配额迁移)
  7. 理解用户态切换到内核态——内核态下有一个特殊的进程
  8. jsp中使用jsp:include /在切换tomcat版本时遇到的问题
  9. 也曾鲜衣怒马少年时 一日看尽长安花
  10. wamp3.1.0 X64下载链接(最新)
  11. 嵌入地图跳转高德地图_各种地图跳转导航
  12. 一篇解析论文MapReduce
  13. linux:framebuffer驱动之ssd1363驱动和fbtft驱动修改
  14. mysql怎么查询不是张姓的_mysql 中的常用查询
  15. 在html中让图片旋转180度,gif图片旋转教程:怎么把gif旋转90度/180度 附gif图片旋转软件...
  16. 自动文摘评测方法:Rouge-1、Rouge-2、Rouge-L、Rouge-S
  17. UE4让物体始终朝向摄像机(二)—RInterp To用法
  18. linux网络基础设置篇-----(查看网络连接情况,域名解析nslookup,本地映射,启用禁用网络接口,路由跟踪)
  19. 入侵与模拟攻击(BAS)——新兴的安全防护有效性验证评估技术
  20. 以太网交换机性能测试丢包的原因

热门文章

  1. MySQL 事物的4种隔离级别
  2. JavaScript(一)js简单介绍
  3. 磁盘IOPS计算与测量
  4. 【Java】@transient代表着什么
  5. mybatis plugins_[Mybatis]-[基础支持层]-插件-plugin标签解析
  6. 华为大佬:做一个快乐的程序员,而不是码农
  7. 非科班出身,如何成为程序员?
  8. 为什么前端工程师的工作很难找?
  9. 如何成为一名牛逼Web前端开发人员?入行学习完整指南
  10. C 语言传递数组给函数的三种形式