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

从数学原理到实战应用:最小二乘法在Jupyter与Excel中的线性回归实现

1. 最小二乘法的数学原理

线性回归是统计学中最基础也最常用的预测方法之一,而最小二乘法则是实现线性回归的核心算法。我第一次接触这个概念是在大学的经济学课上,当时教授用"找最佳拟合线"的比喻让我瞬间理解了它的作用——就像在一堆散点图中画一条最合适的直线,使得所有点到这条直线的垂直距离之和最小。

最小二乘法的数学本质其实很简单:通过最小化误差的平方和来寻找数据的最佳函数匹配。具体到一元线性回归,我们需要找到一条直线 y = ax + b,使得所有样本点的预测值 ŷ 与实际值 y 之间的差距(即残差)的平方和最小。这个差距的平方和用公式表示就是:

Σ(y_i - ŷ_i)² = Σ(y_i - (ax_i + b))²

为什么要用平方而不是绝对值?这是我在初学时最大的疑问。后来通过实践发现,平方运算不仅便于求导计算,还能放大较大误差的影响,避免正负误差相互抵消。计算斜率a和截距b的公式推导过程其实很美妙:

  1. 对总误差函数分别关于a和b求偏导
  2. 令偏导数等于零得到正规方程
  3. 解这个方程组就得到了著名的参数估计公式:
    a = (nΣxy - ΣxΣy) / (nΣx² - (Σx)²) b = (Σy - aΣx) / n

相关系数R²是评估模型好坏的重要指标,它表示因变量的变异能被自变量解释的比例。R²越接近1说明模型解释力越强。记得我第一次用这个指标时,看到一个0.85的R²值就兴奋不已,后来才知道在某些领域(如社会科学)0.3的R²可能就已经很有价值了。

2. Jupyter中的手动实现

在Jupyter Notebook中手动实现最小二乘法是我推荐给每个初学者的必修课。下面我用一个真实的身高-体重数据集,带你一步步完成这个过程。这个数据集包含20,000多人的身高体重记录,非常适合用来演示。

首先准备数据:

import pandas as pd import numpy as np # 读取数据 df = pd.read_excel('weights_heights.xlsx') heights = df['Height'].values[:200] # 先取200个样本 weights = df['Weight'].values[:200]

接下来是关键的计算步骤,我把它封装成一个函数:

def manual_linear_regression(x, y): n = len(x) sum_x = sum(x) sum_y = sum(y) sum_xy = sum(x * y) sum_x2 = sum(x ** 2) # 计算斜率和截距 slope = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - sum_x ** 2) intercept = (sum_y - slope * sum_x) / n # 计算R² y_pred = slope * x + intercept ss_res = sum((y - y_pred) ** 2) ss_tot = sum((y - np.mean(y)) ** 2) r_squared = 1 - (ss_res / ss_tot) return slope, intercept, r_squared

运行这个函数,我们就能得到回归参数:

slope, intercept, r2 = manual_linear_regression(heights, weights) print(f"回归方程: weight = {slope:.2f}*height + {intercept:.2f}") print(f"R²值: {r2:.4f}")

手动实现的最大好处是能真正理解算法原理。我记得第一次运行时,发现结果与Excel的不一致,排查后发现是因为没有对数据进行标准化处理。这种调试过程虽然痛苦,但收获巨大。

3. Jupyter中调用Scikit-learn实现

当你理解了原理后,在实际项目中更推荐使用成熟的库。Scikit-learn的LinearRegression类封装了最小二乘法,使用起来非常简单:

from sklearn.linear_model import LinearRegression from sklearn.metrics import r2_score # 重塑数据形状 X = heights.reshape(-1, 1) y = weights.reshape(-1, 1) # 创建并训练模型 model = LinearRegression() model.fit(X, y) # 获取参数 slope = model.coef_[0][0] intercept = model.intercept_[0] y_pred = model.predict(X) r2 = r2_score(y, y_pred)

Scikit-learn的实现不仅代码简洁,还包含了许多优化。比如它使用了奇异值分解(SVD)来求解,比直接计算逆矩阵更稳定。我在处理一个包含百万级数据点的项目时,手动实现跑了几分钟都没结果,而Scikit-learn几秒钟就完成了。

可视化是理解回归效果的好方法:

import matplotlib.pyplot as plt plt.scatter(heights, weights, color='blue', alpha=0.5) plt.plot(heights, y_pred, color='red') plt.title('Height vs Weight Linear Regression') plt.xlabel('Height (inches)') plt.ylabel('Weight (pounds)') plt.show()

4. Excel中的回归分析实现

Excel可能是最亲民的回归分析工具了。我经常用它快速验证想法,特别是在没有编程环境的情况下。以下是详细步骤:

  1. 准备数据:将身高放在A列,体重放在B列
  2. 绘制散点图:选中数据 → 插入 → 散点图
  3. 添加趋势线:右键点击任意数据点 → 添加趋势线
  4. 设置格式:在右侧面板勾选"显示公式"和"显示R平方值"

Excel的回归结果与Python完全一致,这验证了我们的计算。但Excel有个隐藏功能很多人不知道:使用数据分析工具包可以获得更详细的结果:

  1. 文件 → 选项 → 加载项 → 转到 → 勾选"分析工具库"
  2. 数据 → 数据分析 → 回归
  3. 指定Y范围(B列)和X范围(A列)

这样不仅能得到回归方程,还能看到标准误差、t统计量、p值等统计指标。我在给非技术同事讲解时,Excel的可视化效果往往比代码更直观。

5. 方法对比与实战建议

三种实现方式各有优劣,我整理了一个对比表格:

特性手动实现Scikit-learnExcel
代码复杂度无代码
理解深度最深中等最浅
大数据支持优秀有限
可视化需额外代码需额外代码内置优秀
扩展性灵活但费时非常灵活非常有限

根据我的经验,给初学者的建议是:

  1. 先用Excel感受基本概念
  2. 然后手动实现理解原理
  3. 最后用Scikit-learn进行实际项目

常见陷阱包括:

  • 未检查线性假设(先画散点图!)
  • 忽略异常值的影响
  • 误读R²值(高R²不一定代表好模型)
  • 忘记标准化数据(当变量单位差异大时)

记得有一次我用身高预测体重,R²很高但模型在实际应用中完全失效,后来发现是因为样本都来自青少年,没有覆盖成年人的数据范围。这个教训让我深刻理解了数据代表性的重要。

http://www.jsqmd.com/news/496037/

相关文章:

  • Pixel 8 Pro开发者必看:AICore与Gemini Nano的端侧AI实战指南(附内测申请)
  • 3分钟实现手机视频无缝投屏到电脑:Macast跨平台解决方案详解
  • 构建自动化汉服宣传内容流水线:霜儿-汉服-造相Z-Turbo与Python爬虫协同
  • AlphaFold 3预测功能与分子系统构建全解析
  • Android存储管理揭秘:Vold守护进程如何搞定SD卡热插拔?
  • 告别printf调试!用SEGGER RTT实现彩色日志+浮点打印的终极指南
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4多轮对话效果展示:复杂问题拆解与上下文记忆能力
  • Qwen3-14B-Int4-AWQ企业知识库问答系统搭建实战:基于本地文档的智能检索
  • vscode汉化
  • 5分钟搞定MGeo地址相似度匹配:中文地址对齐一键部署教程
  • Qwen-Image-Edit-F2P在Instagram风格滤镜开发中的应用
  • 如何用SculptGL实现轻量级3D雕刻:面向创作者的Web端建模指南
  • Qwen-Image-2512-Pixel-Art-LoRA 风格迁移实验:将经典名画转换为像素艺术风格
  • DeOldify图像上色服务MySQL数据库集成与配置教程
  • 买卖股票的最佳时机
  • CogVideoX-2b企业级部署:本地化+隐私安全+离线渲染完整方案
  • 数据管理新范式:本地化微信聊天记录备份与分析的开源工具实践
  • 聊聊好用的刺绣机品牌,创加绣花机价格多少钱? - 工业品网
  • MATLAB新手必看:5分钟搞定.mat文件数据可视化(附完整代码)
  • NEURAL MASK Java后端集成实战:SpringBoot微服务调用指南
  • 从30分钟到5分钟:i茅台智能预约系统如何重构抢购工作流
  • 盘点2026年专业法律咨询平台,律秒通AI服务收费多少钱 - 工业设备
  • SenseVoice-Small ONNX部署案例:嵌入式Linux设备(RK3588)语音控制模块
  • PC消息防撤回完全指南:保护微信QQ聊天记录的实用方案
  • FireRedASR-AED-L模型在远程办公场景的应用:跨地域会议录音智能整理
  • [具身智能-27]:具身智能中的长尾效应
  • Word文档中LaTeX公式与文本垂直对齐的实用技巧
  • 共话2026年亿诺谦保安岗亭与同行对比,哪个口碑好 - mypinpai
  • SIP 用户名密码注册通信流程详解与实战
  • 非线性系列(三)—— 共轭梯度法在机器学习优化中的实战应用