线性回归最小二乘法 Python 3.12 实现:从公式推导到 15 行核心代码 线性回归最小二乘法 Python 3.12 实现从公式推导到 15 行核心代码线性回归是机器学习领域最基础且应用最广泛的算法之一。它通过建立自变量与因变量之间的线性关系模型帮助我们理解和预测数据的变化趋势。本文将深入探讨线性回归的核心数学原理——最小二乘法并展示如何从数学公式推导出Python实现代码。1. 最小二乘法的数学基础最小二乘法的核心思想是通过最小化预测值与真实值之间的平方误差和找到最优的模型参数。对于一元线性回归模型$$ y w x b $$其中$w$是斜率$b$是截距。我们的目标是找到$w$和$b$的值使得所有样本点的预测值与真实值的平方误差和最小。**误差函数损失函数**定义为$$ J(w,b) \frac{1}{2m}\sum_{i1}^{m}(f(x^{(i)}) - y^{(i)})^2 $$其中$m$是样本数量$f(x^{(i)})$是第$i$个样本的预测值$y^{(i)}$是第$i$个样本的真实值2. 正规方程的推导为了找到使误差函数最小的$w$和$b$我们需要对$J(w,b)$分别关于$w$和$b$求偏导并令导数为零。关于$b$的偏导数$$ \frac{\partial J}{\partial b} \frac{1}{m}\sum_{i1}^{m}(f(x^{(i)}) - y^{(i)}) $$关于$w$的偏导数$$ \frac{\partial J}{\partial w} \frac{1}{m}\sum_{i1}^{m}(f(x^{(i)}) - y^{(i)})x^{(i)} $$令偏导数等于零得到正规方程$$ \begin{cases} \sum_{i1}^{m}(wx^{(i)} b - y^{(i)}) 0 \ \sum_{i1}^{m}(wx^{(i)} b - y^{(i)})x^{(i)} 0 \end{cases} $$解这个方程组可以得到$w$和$b$的最优解$$ w \frac{m\sum xy - (\sum x)(\sum y)}{m\sum x^2 - (\sum x)^2} $$$$ b \frac{\sum y - w\sum x}{m} $$3. Python实现的核心代码基于上述推导我们可以用NumPy实现最小二乘法的线性回归。以下是仅需15行的核心代码import numpy as np def linear_regression(X, y): 最小二乘法实现线性回归 参数: X -- 自变量数组 (m,) y -- 因变量数组 (m,) 返回: w -- 斜率 b -- 截距 m len(X) X_mean, y_mean np.mean(X), np.mean(y) # 计算分子和分母 numerator np.sum((X - X_mean) * (y - y_mean)) denominator np.sum((X - X_mean) ** 2) # 计算斜率和截距 w numerator / denominator b y_mean - w * X_mean return w, b代码解析首先计算X和y的均值然后计算斜率的分子和分母最后根据公式计算斜率和截距4. 验证与可视化为了验证我们的实现是否正确我们可以生成一些测试数据并进行可视化# 生成测试数据 np.random.seed(42) X np.random.rand(100) * 10 y 2.5 * X 1.2 np.random.randn(100) * 2 # 添加噪声 # 计算回归系数 w, b linear_regression(X, y) print(f斜率w: {w:.4f}, 截距b: {b:.4f}) # 可视化 import matplotlib.pyplot as plt plt.scatter(X, y, label原始数据) plt.plot(X, w*X b, colorred, label回归线) plt.xlabel(X) plt.ylabel(y) plt.legend() plt.show()输出示例斜率w: 2.5123, 截距b: 1.08355. 多元线性回归的扩展对于多元线性回归多个自变量我们可以使用矩阵形式表示$$ \mathbf{y} \mathbf{X}\mathbf{w} \mathbf{b} $$其中$\mathbf{X}$是$m \times n$的设计矩阵m个样本n个特征$\mathbf{w}$是$n \times 1$的权重向量$\mathbf{b}$是标量偏置项正规方程的解为$$ \mathbf{w} (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y} $$对应的Python实现def multiple_linear_regression(X, y): 多元线性回归的最小二乘解 # 添加偏置项 X_b np.c_[np.ones((X.shape[0], 1)), X] # 计算正规方程的解 w np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y) return w6. 性能优化与注意事项数值稳定性当$\mathbf{X}^T\mathbf{X}$不可逆时可以使用伪逆np.linalg.pinv代替np.linalg.inv特征缩放对于多元回归建议对特征进行标准化处理计算复杂度当特征数量很大时n10000正规方程的计算会很慢此时应考虑梯度下降法提示在实际应用中当数据量不大时m10000最小二乘法是高效且精确的选择对于大数据集可以考虑随机梯度下降等优化算法。

相关新闻

最新新闻

文心一言与豆包能力边界:任务驱动的AI选型指南

文心一言与豆包能力边界:任务驱动的AI选型指南

1. 这不是“选哪个更便宜”的问题,而是你手头的活儿到底需要什么能力文心一言、豆包——这两个名字现在几乎天天出现在办公群、内容创作组和产品经理晨会里。我从去年开始系统性地把它们嵌进日常工作流:写周报用豆包搭框架,改客户方案用文心一…

2026/7/4 10:56:04
AI模型泛化与安全防御实战指南

AI模型泛化与安全防御实战指南

1. 项目概述:当AI安全遇上模型泛化 在AI安全攻防领域,蓝队(防御方)与红队(攻击方)的对抗从未停止。最近遇到一个典型案例:某金融风控模型在测试集上准确率高达98%,实际部署后却频繁误…

2026/7/4 10:56:04
GPT-4 Turbo与GPT-4.1工程选型指南:能力、成本与稳定性权衡

GPT-4 Turbo与GPT-4.1工程选型指南:能力、成本与稳定性权衡

1. 项目概述:GPT-4、GPT-4 Turbo 与 GPT-4.1 —— 不是版本号游戏,而是能力断层与工程现实的三重分水岭你刚在技术群看到一条消息:“GPT-4.1发布了,上下文100万Token!”——手一抖点开链接,发现下面还挂着一…

2026/7/4 10:56:04
多通道ADC与STM32L4R9AI的高精度信号采集方案

多通道ADC与STM32L4R9AI的高精度信号采集方案

1. 项目背景与核心需求 在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与实时监测系统一直是关键基础设施。传统方案面临三大痛点:通道数量受限(通常不超过32路)、同步精度不足(纳秒级误差)、以及…

2026/7/4 10:56:04
量子纠缠检测:原理、技术与工程实践

量子纠缠检测:原理、技术与工程实践

1. 量子纠缠检测的核心价值与工程意义 量子纠缠作为量子计算中最独特的物理资源,其检测与量化直接决定了量子算法的可行性和设备可靠性。在实际工程中,纠缠检测绝非单纯的学术概念验证,而是贯穿量子系统全生命周期的关键技术环节。 为什么工…

2026/7/4 10:56:04
告别百度网盘提取码烦恼:智能工具5秒极速破解的完整方案

告别百度网盘提取码烦恼:智能工具5秒极速破解的完整方案

告别百度网盘提取码烦恼:智能工具5秒极速破解的完整方案 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而烦恼吗&#…

2026/7/4 10:51:04

周新闻

月新闻