线性回归 | 更文挑战

913 阅读3分钟

“这是我参与更文挑战的第11天,活动详情查看: 更文挑战

一元线性回归

线性回归模型是利用线性拟合的方式探寻数据背后的规律。如下图所示,先通过搭建线性回归模型寻找这些散点(也称样本点)背后的趋势线(也称回归曲线),再利用回归曲线进行一些简单的预测分析或因果关系分析。

image.png

在线性回归中,我们根据特征变量(也称自变量)来预测反应变量(也称因变量)。根据特征变量的个数可将线性回归模型分为一元线性回归和多元线性回归。例如,通过“工龄”这一个特征变量来预测“薪水”,就属于一元线性回归;而通过“工龄”“行业”“所在城市”等多个特征变量来预测“薪水”,就属于多元线性回归。本节先来讲解一元线性回归模型。

一元线性回归模型又称为简单线性回归模型,其形式可以表示为如下所示的公式。

y=ax+b

其中,y为因变量,x为自变量,a为回归系数,b为截距。

最小二乘法演示

x=[1,2,3]

y=[3,4,5]

假设线性回归模型的拟合方程为y=ax+b,那么残差平方和(损失函数)可以定义成如下所示的公式。

image.png

拟合的目的是使残差平方和尽可能地小,即实际值和预测值尽可能地接近。根据高等数学中求极值的相关知识,通过对残差平方和进行求导(对a和b进行求导),导数为0时,该残差平方和将取极值,此时便能获得拟合需要的系数a和截距b了。

一元线性回归的代码实现

通过Python的Scikit-Learn库可以轻松搭建一元线性回归模型。

首先利用之前学过的Matplotlib库绘制几个散点,代码如下。

import matplotlib.pyplot as plt
x = [[1],[2],[4],[5]]
y=[2,4,6,8]
plt.scatter(X,Y)
plt.show()

因变量集合Y则写成一维结构形式,此时绘制的散点效果如下图所示。

image.png

引入Scikit-Learn库搭建模型

有了原始数据后,引入Scikit-Learn库便可快速搭建线性回归模型,代码如下

from sklear.linear_model import LinearRegression
regr = LinearRegression()
regr.fit(X,Y)

第1行代码从Scikit-Learn库引入线性回归的相关模块LinearRegression;第2行代码构造一个初始的线性回归模型并命名为regr;第3行代码用fit()函数完成模型搭建,此时的regr就是一个搭建好的线性回归模型。

模型预测

接着就可以利用搭建好的模型regr来预测数据。假设自变量是1.5,那么使用predict()函数就能预测对应的因变量y,代码如下。

y = regr.predict([[1.5]])

注意这里的自变量还是要写成二维结构形式。获得的预测结果y为一个一维数组,其内容如下。

[2.9]

模型可视化

还可以将搭建好的模型以可视化的形式展示出来,代码如下

plt.scatter(X,Y)
plt.plot(X,regr.predict(X))
plt.show()

绘制效果如下图所示,此时的一元线性回归模型就是中间形成的一条直线.

image.png