You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Normal Equation的线性回归实现疑问:数值结果为何存在差异?

正规方程线性回归出现极小非零值的原因分析

这是浮点数运算的精度误差导致的,属于数值计算中的正常现象,不是你的代码逻辑问题。

具体原因:

  • 你的测试案例中,理论上正规方程的解是截距0、斜率1,但正规方程的计算过程(矩阵转置、乘法、求逆)依赖IEEE 754双精度浮点数运算,这类运算本身会存在极小的舍入误差。
  • 你得到的-1.77635684e-15是典型的"机器零"——它的绝对值远小于常规的精度判定阈值(比如1e-10),本质就是0的近似值,只是浮点数运算的残留误差。
  • Python的@矩阵乘法运算符底层也是基于浮点数实现的,这类误差无法完全避免。

解决办法:

如果需要输出符合预期的0.0,可以设置一个精度阈值,把绝对值小于阈值的数值替换为0:

import numpy as np

# 假设theta是你的计算结果
theta = np.array([-1.77635684e-15, 1.00000000e+00])
# 替换极小值为0
theta[np.abs(theta) < 1e-10] = 0.0

处理后就能得到[0.0, 1.0]的结果。

内容的提问来源于stack exchange,提问作者otto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:12:06