❤️🔥❤️🔥线性回归是解决回归预测问题常用的算法,本期我们主要学习线性回归的原理和损失函数的作用
✒️线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。
特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归。
上面两个例子, 我们看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型
✏️这里我们又提到了模型,那么我们来简述一下:线性回归当中主要有两种模型, 一种是线性关系,另一种是非线性关系。在这里我们只能画一个平面更好去理解,所以都用单个特征或两个特征举例子。
线性关系:
sklearn中, 线性回归的API在linear_model模块中
sklearn.linear_model.LinearRegression()
代码实现:
from sklearn.linear_model import LinearRegression
# 加载数据
x = [[80, 86],
[82, 80],
[85, 78],
[90, 90],
[86, 82],
[82, 90],
[78, 80],
[92, 94]]
y = [84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]
# 实例化API
estimator = LinearRegression()
# 使用fit方法进行训练
estimator.fit(x,y)
print(estimator.coef_)
# 对未知样本预测
estimator.predict([[100, 80]])
损失函数的概念:
损失函数的作用:
📌在衡量回归损失的时候,不能简单地将每个预测误差相加 ,接下来我们介绍回归函数的损失函数--平方损失
回归问题的损失函数通常用下面的函数表示:
我们的目标是: 找到该损失函数最小时对应的 w、b(这里的w,b指y = wx+b中的系数).
正规方程公式:
公式就是上面的损失函数推导得到,具体推到公式不再赘述,我们来看示例代码:
import numpy as np
from sklearn.linear_model import LinearRegression
if __name__ == '__main__':
# 特征值
x = np.mat([[80, 86],
[82, 80],
[85, 78],
[90, 90],
[86, 82],
[82, 90],
[78, 80],
[92, 94]])
# 目标值
y = np.mat([84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]).transpose()
# 给特征值增加一列1
ones_array = np.ones([len(x), 1])
x = np.hstack([ones_array, x])
# 使用正规方程公式计算 w、b
w = (x.transpose() * x) ** -1 * x.transpose() * y
print('[%.1f %.1f %.1f]' % (w[0][0], w[1][0], w[2][0]))
# 使用 LinearRegression 求解
estimator = LinearRegression(fit_intercept=True)
estimator.fit(x, y)
print(estimator.coef_[0])
# 输出结果
# [0.0 0.3 0.7]
# [0. 0.3 0.7]
❤️🔥❤️🔥下期我们介绍损失函数的优化方法及回归问题的评估,也会通过案例带大家更好的理解线性回归❤️🔥❤️🔥