简单线性回归(sklearn + tensorflow)

概述

最近学习机器学习(和深度学习),入门第一个接触的便是简单线性回归。
所谓线性回归,是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。其形式可表示为:y = w1x1 + w2x2 + w3x3 + ... + w_nx_n + b
而简单线性回归,是其最简单的形式:y = wx + b,即我们所熟知的一次函数,理解为给定权重w和偏置(或称为截距)b,结果y随变量x的变化而变化。

简单线性回归

机器学习中的简单线性回归,个人理解为给定一系列的x值和对应的y值,来确定权重w和偏置b的合理值(即根据某种方法,从数据中找规律)。
具体步骤可大致分为:

  1. 给定一个w和b的初始值
  2. 定义线性回归函数(即一次函数):y = wx + b
  3. 定义损失函数:n条数据,对每一次得到的y值和实际已知的y_true值相减后求平方,然后求和,再求平均值(所谓最小二乘法),用式子可表示为:loss = ( ∑( y - y_true )2 ) / n
  4. 训练求损失最小值(即:loss最小时,预测的结果与真实值最接近):入门先不考虑太多,直接使用梯度下降法(一种可以自动更改w和b,使loss函数结果最小的方法)

示例一

以给定的每天来咖啡店人数(个)和咖啡店销售额(元)数据,来实现机器学习中的简单线性回归。

准备数据,并使用散点图显示

使用sklearn训练简单线性回归模型并进行预测

示例二

使用tensorflow训练简单线性回归模型

import tensorflow as tf
LEARNING_RATE = 0.1

#创建100条身高与体重数据,假设身高与体重真实关系为:y_real=0.7x + 0.8
with tf.variable_scope( ‘Input_Data‘ ):
    x_data = tf.random_normal( [100, 1], mean=1.75, stddev=0.5, name=‘x_data‘ )
    y_real = tf.matmul( x_data, [[0.7]] ) + 0.8

#创建模型:定义权重、偏置和预测结果表达式
with tf.variable_scope( ‘Model‘ ):
    weight = tf.Variable( tf.random_normal( [1, 1], mean=0.0, stddev=0.1 ), name=‘weight‘ )
    bias = tf.Variable( 0.0, name=‘bias‘ )
    y_predict = tf.matmul( x_data, weight ) + bias

#定义损失函数和优化器(使用梯度下降法)
with tf.variable_scope( ‘Optimizer‘ ):
    loss = tf.reduce_mean( tf.square( y_predict - y_real ) )
    train_op = tf.train.GradientDescentOptimizer( LEARNING_RATE ).minimize( loss )

#创建tensorflow会话,训练模型
with tf.Session() as sess:
    #初始化变量
    init_op = tf.global_variables_initializer()
    sess.run( init_op )

    #写events文件,可使用tensorboard查看
    tf.summary.FileWriter( ‘D:/Mine.py/‘, sess.graph ) 

    #进行训练
    for step in range( 1, 1001 ):
        sess.run( train_op )
        if step % 100 == 0:
            print( ‘after{}step, weight={}, bias={}, loss={}‘
                  .format( step, sess.run( weight ), sess.run( bias )
                  , sess.run( loss ) ) )

训练结果如下:

原文地址:https://blog.51cto.com/weiyuqingcheng/2475232

时间: 2024-10-09 17:31:20

简单线性回归(sklearn + tensorflow)的相关文章

sklearn学习笔记之简单线性回归

简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项.线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误差项之后,方程的解法就存在了改变,一般使用最小二乘法进行计算. 使用sklearn.linear_model.LinearRegression进行线性回归 sklearn对Data Mining的各类算法已经有了较好的封装,基本可以使用fit.predict.score来训练.评价模型,并使用模型进

机器学习与Tensorflow(1)——机器学习基本概念、tensorflow实现简单线性回归

一.机器学习基本概念 1.训练集和测试集 训练集(training set/data)/训练样例(training examples): 用来进行训练,也就是产生模型或者算法的数据集 测试集(testing set/data)/测试样例 (testing examples):用来专门进行测试已经学习好的模型或者算法的数据集 2.特征向量 特征向量(features/feature vector):属性的集合,通常用一个向量来表示,附属于一个实例 3.分类问题和回归问题 分类 (classific

03_有监督学习--简单线性回归模型(调用 sklearn 库代码实现)

有监督学习--简单线性回归模型(调用 sklearn 库代码实现)0.引入依赖1.导入数据(data.csv)2.定义损失函数3.导入机器学习库 sklearn4.测试:运行算法,从训练好的模型中提取出系数和截距5.画出拟合曲线6.附录-测试数据 有监督学习--简单线性回归模型(调用 sklearn 库代码实现) 0.引入依赖 import numpy as npimport matplotlib.pyplot as plt 1.导入数据(data.csv) points = np.genfro

简单线性回归

协方差:两个变量总体误差的期望. 简单的说就是度量Y和X之间关系的方向和强度. X :预测变量Y :响应变量 Y和X的协方差:[来度量各个维度偏离其均值的程度] 备注:[之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的协方差,即统计上所谓的"无偏估计".而方差则仅仅是标准差的平方] 如果结果为正值,则说明两者是正相关的(从协方差可以引出"相关系数"的定义), 如果结果为负值就说明负相关的 如果为0,也是就是统计上说的"相互独立

机器学习——简单线性回归(原理推导+算法描述+代码实现)

实验环境:Python 3.6 编辑器:Jupyter Notebook 6.0.1 实验要求:可以调用numpy.pandas基础拓展程序包,不可以调用sklearn机器学 ——————————————————我是分割线喵———————————————————— ————————————(如果想要代码可以直接下拉到最后)———————————— 线性模型的一般形式:   向量形式: 线性模型的优点: 1.形式简单.易于建模 2.可解释性 3.是非线性模型的基础,可以在线性模型的基础上引入层级结

简单线性回归算法

/**  * 简单线性回归算法  * @param array y轴数据  * @param array x轴数据  * @returns array(slope,intercept,r2)  */ function linearRegression(y, x) {     var lr = {};     var n = y.length;     var sum_x = 0;     var sum_y = 0;     var sum_xy = 0;     var sum_xx = 0;

SPSS数据分析—简单线性回归

和相关分析一样,回归分析也可以描述两个变量间的关系,但二者也有所区别,相关分析可以通过相关系数大小描述变量间的紧密程度,而回归分析更进一步,不仅可以描述变量间的紧密程度,还可以定量的描述当一个变量变化时,对另一个变量的影响程度,这是相关分析无法做到的,正因为如此,回归分析更多用来预测和控制变量值,但是回归分析并不等同于因果关系. 根据模型的不同可以分为线性回归和非线性回归 线性回归分析一般用线性模型来描述,和方差分析模型一样,只是各部分的叫法有所不同,回归模型分为常量.回归部分.残差常量就是所谓

线性回归——简单线性回归

给定数据集,其中.线性回归试图学得一个线性模型以尽可能准确线性回归试图学得一个线性模型以尽可能准确地预测实值输出标记.(注:上面的以及均表示向量:的取值表示在向量上的第d个属性) 先考虑最简单的情形(简单线性回归):输入属性的数目只有一个.简单线性回归线性回归试图学得 ,使得 我们可以通过使均方误差最小化来求w和b,即 均方误差对应了常用的欧氏距离.基于均方误差最小化来进行模型求解的方法成为"最小二乘法".在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最

机器学习六--回归--简单线性回归Simple Linear Regression

一.回归和分类 回归(regression)y变量为连续数值型(continuous numerical variable),如房价,降雨量. 分类(classification)y变量为类别型categorical variable.如颜色类别,电脑品牌等. 二.统计量:描述数据特征 2.1集中趋势衡量:均值(mean),中位数,众数. 2.2离散程度衡量:方差       标准差S 三.简单线性回归介绍 1.简单线性回归包含一个自变量(x)和一个因变量(y) 2.以上两个变量的关系用一条直线