机器学习——线性回归

一、回归算法

  • 回归算法是一种有监督学习算法,用来建立自变量X和观测变量Y之间的映射关系,如果观测变量是离散的,则称其为分类Classification;如果观测变量是连续的,则称其为回归Regression
  • 回归算法的目的是寻找假设函数hypothesis来最好的拟合给定的数据集。常用的回归算法有:线性回归(Linear Regression)、逻辑回归(Logistic Regression)、多项式回归(Polynomial Regression)、岭回归(Ridge Regression)、LASSO回归(Least Absolute Shrinkage and Selection Operator)、弹性网络(Elastic Net estimators)、逐步回归(Stepwise Regression)等。

二、线性回归

  • 线性回归模型试图学得一个线性模型以尽可能准确地预测实值X的输出标记Y。在这个模型中,因变量Y是连续的,自变量X可以是连续或离散的
  • 在回归分析中,如果只包括一个自变量和一个因变量,且二者关系可用一条直线近似表示,称为一元线性回归分析;如果回归分析中包括两个或两个以上的自变量,且因变量和自变量是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线,对于三维空间线性是一个平面,对于多维空间线性是一个超平面。

1、一维线性回归分析

机器学习——线性回归_第1张图片

  • 如上图所示在有一条直线y=kx+b,当满足周围所有的点到该条直线的距离和最短时,则所有的点x,y关系就可以用这条直线表示。
  • 代码案例:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 案例介绍
# 某披萨店,当披萨的尺寸为6,8,10,14,18寸时,价格为7,9,13,17.5,18元
# 要求利用线性回归算法计算出当披萨为12寸的时候,价格应该为多少?
if __name__ == '__main__':
	#建立两个数组,依次存放披萨的尺寸和价格
	#尺寸为自变量,价格为因变量,建立模型
    y=np.array([7,9,13,17.5,18])
    x=np.array([6,8,10,14,18])
	#散点图展示模型
    plt.scatter(x,y,marker='*',c='r')
    #设置散点图带有网格,方便查看函数值
    plt.grid(True)

    #线性会对算法要求数据为二维数组,所以先将x,y数组转化为两个二维数组
    x_ = x.reshape(-1,1)
    y_ = y.reshape(-1,1)
    #设置模型函数的截距为0
    lr = LinearRegression(fit_intercept=False)
    #训练模型
    lr.fit(x_,y_)
    x2 = np.array([6,8,10,12,14,16,18])
    #将x2数组带入到训练好的模型中进行估测,
    res = lr.predict(x2.reshape(-1,1))
    y2 = res.reshape(-1)
    #折线图展示一维线性模型,评估12寸的披萨应该卖多少前
    plt.plot(x2,y2,'g')
    plt.show()
  • 结果展示:
    机器学习——线性回归_第2张图片
  • 结论:如上图所示,绿色的直线即为评估的一维线性模型,即周围的点到这条线上的距离最短。由此可以推断出12寸的披萨卖13.5元。

你可能感兴趣的:(机器学习——线性回归)