当前位置: 首页 > news >正文

【机器学习】线性回归

线性回归模型的三大组件

1. 模型表达式

线性回归假设输入和输出之间的关系是 线性的
公式写作:

                                                                          Y = XW

  • Y:预测值(或真实观测值向量)

  • X:特征矩阵,每一行对应一个样本,每一列对应一个特征(通常会在最后一列加上一列常数 1,用来吸收截距 b)

  • W:参数向量,包含了各个特征的权重以及截距项

👉 意思就是:输出等于“特征 × 权重”的线性组合。


2. 损失函数

我们需要找到一组参数 W,让预测值 XW 尽量贴近真实值 Y。
误差定义为:

                                                       L(W) = \frac{1}{m}\|Y - XW\|^2

  • 这里的 \| \cdot \|^2表示平方和(误差平方再相加)

  • 除以 m 是取平均,得到“均方误差”(MSE)

👉 直观理解:让所有点到直线/平面的垂直距离尽可能小


3. 模型求解(最小二乘法)

要最小化损失函数,直接套用最小二乘法公式:

                                                      W = (X^T X)^{-1} X^T Y

  • 这个解就是让误差平方和最小的参数

  • 其中 (X^T X)^{-1} X^T也叫 伪逆矩阵,它可以把 Y 投影到 X的列空间上

👉 简单理解:线性回归的解,就是**“让直线(或超平面)离所有点最近”**。


 备注(截距处理)

在真实数据里,我们通常有模型:

                                        Y = W_1 x_1 + W_2 x_2 + \cdots + W_k x_k + b

为了把 b一起写进矩阵里,我们在 X 的最后一列加一列全是 1 的常数项,这样 b也能写进 W 里。

                                                          X = [x_1, x_2, \dots, x_k, 1]


✅ 总结一下:

  • 模型表达式:假设输入和输出是线性关系

  • 损失函数:用“误差平方和”来衡量拟合好坏

  • 模型求解:用最小二乘法一次性算出最佳参数


 Python代码

(1)自写代码

import numpy as np
x = np.array([[0, 2], [1, 1], [2,3],[3,2],[4,5],[5,2]])     # 输入数据x
y = np.array([8,7,15,14,25,18])                             # 输出数据y
xt = np.insert(x, x.shape[1], 1, axis=1)                    # 给x添加一列1
w = np.linalg.inv(xt.T@xt)@xt.T@y                           # 按公式求解w,其中inv的功能是求矩阵的逆,@是矩阵的乘法
print("模型参数W:",w)                                       # 打印W

代码运行结果如下:

将W代入线性回归模型,就得到我们最终的模型:
y = 2 x _ { 1 } + 3 x _ { 2 } + 2
有新的样本过来时,我们就可以用上式进行预测了

(2)调用sklearn

from sklearn import linear_model
import numpy as np
x = np.array([[0, 2], [1, 1], [2,3],[3,2],[4,5],[5,2]])   # 输入数据x
y = np.array([8,7,15,14,25,18])                           # 输出数据y
reg = linear_model.LinearRegression()                     # 初始化sklearn的线性模型
reg.fit(x,y)                                              # 用数据训练模型
print("模型参数:",reg.coef_)                              # 打印系数
print("模型阈值:",reg.intercept_)                         # 打印阈值

运行结果如下:

将模型参数代回模型,即有:
y = 2 x _ { 1 } + 3 x _ { 2 } + 1 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 2

http://www.dtcms.com/a/343483.html

相关文章:

  • 深入解析C++非类型模板参数
  • Linux入门DAY29
  • AI 产业落地:从 “实验室神话” 到 “车间烟火气” 的跨越
  • 【TrOCR】模型预训练权重各个文件解读
  • SpringAI1.0.1实战教程:避坑指南25年8月最新版
  • 近端策略优化算法PPO的核心概念和PyTorch实现详解
  • Typescript入门-函数讲解
  • 创建一个springboot starter页面
  • LG P2617 Dynamic Rankings Solution
  • 1688 商品详情接口数据全解析(1688.item_get)
  • 关于从零开始写一个TEE OS
  • 如何安装 VMware Workstation 17.5.1?超简单步骤(附安装包下载)
  • Building Systems with the ChatGPT API 使用 ChatGPT API 搭建系统(第四章学习笔记及总结)
  • 一文讲清楚:场景、痛点、需求
  • mainMem.useNamedFile = “FALSE“ 的效果
  • UE5多人MOBA+GAS 52、下载源码构建引擎
  • 如何处理项目中棘手的依赖版本冲突问题
  • 软考中级【网络工程师】第6版教材 第3章 局域网 (下)
  • 构造参数注入解决循环依赖问题
  • 射频电路的完整性简略
  • rt-thread使用sfud挂载qspi flash的trace分析
  • Linux ELF二进制文件数字签名工具:原理与设计思路(C/C++代码实现)
  • SQL聚合情景解读
  • 【笔记】Facefusion3.3.2 之 NSFW 检测屏蔽测试
  • 代码随想录算法训练营27天 | ​​56. 合并区间、738.单调递增的数字、968.监控二叉树(提高)
  • 机器学习6
  • 机器学习-聚类算法
  • 告别研发乱局,决胜项目先机——全星APQP系统,为汽车部件制造商量身打造的数字化研发管理引擎
  • GPT5 / 深度研究功能 无法触发
  • 4.Shell脚本修炼手册---变量进阶知识