气有浩然 学无止境

线性回归

什么是线性回归

在统计学中,线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。(这反过来又应当由多个相关的因变量预测的多元线性回归区别[来源请求],而不是一个单一的标量变量。)

算法实现一元线性回归

如图所示是根据损失函数推导出的一元线性回归计算公式

代码实现

import numpy as np
import matplotlib.pyplot as plt

# 拟合一个二元线性模型y=ax+b
def linear_classify(x, y):
    # 普通运算方法
    # a = np.sum((x - np.mean(x)) * (y - np.mean(y))) / np.sum((x-np.mean(x))**2)
    # b = np.mean(y) - a * np.mean(x)

    # 向量化运算方法
    a = np.dot(x - np.mean(x), y - np.mean(y)) / np.dot(x-np.mean(x), x-np.mean(x))
    b = np.mean(y) - a * np.mean(x)

    return a, b

if __name__ == '__main__':

    # 生成训练数据
    x = np.arange(1,100, dtype=np.float32)
    y = x + np.random.uniform(-25, 25, 99)

    # 求得a,b
    a, b = linear_classify(x, y)
    # 画出直线
    line_x = np.array([1,100])
    line_y = a * line_x + b
    plt.plot(line_x, line_y, color='red')
    # 画出原始点
    plt.scatter(x, y)
    plt.show()

效果展示

⬆️