使用tensorflow实现机器学习中的线性拟合

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

        import tensorflow as tf
        import numpy as np
        import matplotlib.pyplot as plt
        plt.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 = 0
                for x,y in zip(X,Y):
                    _,tmp_loss = sess.run([optimizer,loss],feed_dict={xs:x,ys:y})
                    total_loss += tmp_loss
                if 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 + mgb
        plt.plot(X, Y, ‘bo‘, label=‘原始数据‘)
        plt.plot(X, YY, ‘r‘, label=‘拟合数据‘)
        plt.legend()
        plt.show()

原文地址:https://www.cnblogs.com/ace007/p/10720994.html

时间: 2024-10-28 21:32:19

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

机器学习中的过拟合问题

机器学习中的过拟合问题 相关内容: 1. R语言︱ROC曲线--分类器的性能表现评价 2.机器学习中的过拟合问题 3.R语言︱机器学习模型评估方案(以随机森林算法为例) -------------------------- 过拟合问题举例 右图在训练数据上拟合完美,但是预测第11个时候, 左图虽然拟合不完全,但是更合理:右图的-953,误差极大. 一.随机森林不会发生过拟合的原因 在建立每一棵决策树的过程中,有两点需要注意 -采样与完全分裂.首先是两个随机采样的过程,random forest对

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

TensorFlow是咱们机器学习领域非常常用的一个组件,它在数据处理,模型建立,模型验证等等关于机器学习方面的领域都有很好的表现,前面的一节我已经简单介绍了一下TensorFlow里面基础的数据结构即:Tensor和Dataset: 这里咱们开始介绍TensorFlow的建模过程以及验证模型的一些简单方法.其实无论是sklearn还是TensorFlow,他们的模型建立过程都是相似的,都是经历columns类型声明,模型定义,数据训练,validation等等几个步骤.前面的几节内容我已经简单

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

原文地址:一只鸟的天空,http://blog.csdn.net/heyongluoyao8/article/details/49429629 防止过拟合的处理方法 过拟合 ??我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independently and identically distributed),即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型,即使用已经产生的数据去训练,然后使用该模型去拟合

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

过拟合 ??在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布,即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型,即使用已经产生的数据去训练,然后使用该模型去拟合未来的数据.但是一般独立同分布的假设往往不成立,即数据的分布可能会发生变化(distribution drift),并且可能当前的数据量过少,不足以对整个数据集进行分布估计,因此往往需要防止模型过拟合,提高模型泛化能力.而为了达到该目的的最常见方法便是:正则化,即在对模型的目

机器学习算法中的过拟合与欠拟合

在机器学习表现不佳的原因要么是过度拟合或欠拟合数据. 机器学习中的逼近目标函数过程 监督式机器学习通常理解为逼近一个目标函数(f)(f),此函数映射输入变量(X)到输出变量(Y). Y=f(X)Y=f(X) 这种特性描述可以用于定义分类和预测问题和机器学习算法的领域. 从训练数据中学习目标函数的过程中,我们必须考虑的问题是模型在预测新数据时的泛化性能.泛化好坏是很重要的,因为我们收集到的数据只是样本,其带有噪音并且是不完全的. 机器学习中的泛化 在In机器学习中,我们描述从训练数据学习目标函数的

机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)

机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA) 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系[email protected] 前言: 第二篇的文章中谈到,和部门老大一宁出去outing的时候,他给了我相当多的机器学习的建议,里面涉及到很多的算法的意义.学习方法等等.一宁上次给我提到,如果学习分类算法,最好从线性的入手,线性分类器最简单的就是

机器学习中简易方法----线性建模:最小二乘法

在机器学习中,学习或者推断 属性 变量与相应 响应 变量或 目标 变量之间的 函数 关系,使得对于一个给定的属性(特征)集合,可以进行相应的预测. 例如,建立一个用户对物品的喜好预测模型.已知的数据中有用户信息(年龄,性别等),物品信息(种类,颜色等) ,以及用户对物品的喜好关系(例如 A用户喜好B物品).在给定的用户和物品间(喜好关系未知),希望预测出用户对这个物品的喜好. 在此种情况下,建立一个 关于某个顾客以前买过物品的描述(属性) 和 该顾客最终是否喜好该产品(响应) 的模型.这个模型可

机器学习中常见的过拟合解决方法

在机器学习中,我们将模型在训练集上的误差称之为训练误差,又称之为经验误差,在新的数据集(比如测试集)上的误差称之为泛化误差,泛化误差也可以说是在模型在总体样本上的误差.对于一个好的模型应该是经验误差约等于泛化误差,也就是经验误差要收敛于泛化误差,根据霍夫丁不等式可知经验误差在一定条件下是可以收敛于泛化误差的. 当机器学习模型对训练集学习的太好的时候(再学习数据集的通性的时候,也学习了数据集上的特性,这些特性是会影响模型在新的数据集上的表达能力的,也就是泛化能力),此时表现为经验误差很小,当往往此

机器学习中的范数规则化之(一)L0、L1与L2范数

机器学习中的范数规则化之(一)L0.L1与L2范数 [email protected] http://blog.csdn.net/zouxy09 转自:http://blog.csdn.net/zouxy09/article/details/24971995 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大,为了不吓到大家,我将这个五个部分分成两篇博文.知识有限,以下都是我一