You need to enable JavaScript to run this app. 多自变量回归直线求解方法及Python多元线性回归实现正确性咨询
优惠活动
大模型
产品
解决方案
定价
更多

多自变量回归直线求解方法及Python多元线性回归实现正确性咨询

代码问题逐点拆解

1. 回归系数计算环节判断

  • 求解的核心逻辑是正确的:通过构造带截距项的设计矩阵,用np.linalg.lstsq做最小二乘求解,完全符合多元线性回归的正规方程求解流程
  • 存在一个完全多余、且会导致结果错位的错误操作:
    你对lstsq返回的系数做逆序是毫无必要的。构造设计矩阵时列的顺序是[全1截距列、Weight特征列、Volume特征列],所以lstsq返回的系数顺序天然是[截距项b0、Weight的系数b1、Volume的系数b2]。逆序之后系数和对应特征完全错配,算出来的关系完全不符合真实模型。
    按你的数据集跑出来的真实原系数为b0≈79.69, b1≈0.00755, b2≈0.00781,逆序之后会变成[0.00781, 0.00755, 79.69],数值和特征的对应关系全乱。

2. 回归模型搭建环节判断

  • 搭建逻辑完全错误:双自变量的多元线性回归在3D空间中对应一个平面,而非一条直线。
    你当前的代码是把两个特征轴分别乘上系数,生成两条独立的一维序列再求和加常数,本质是画了一条脱离平面逻辑的斜线,完全不是正确的拟合面。就算去掉之前的系数逆序错误,这种一维逐点生成的方式也无法覆盖两个特征联动的平面关系。

3. 绘图环节判断

  • 原始样本的散点绘制逻辑是正确的:将原始数据的Weight、Volume、CO2三维值绘制成3D散点,颜色映射的实现没有问题
  • 拟合结果的绘制逻辑存在两处核心错误:
    • 取的特征范围完全脱离实际:代码里x1、y1的取值范围是0到120,但你的数据集中Weight实际范围是7901746,Volume实际范围是9002500,画出来的拟合线和真实样本区域完全分离
    • 形式错误:双特征回归的拟合结果是平面,不存在单一的"拟合直线",正确的绘制需要覆盖两个特征的全取值范围生成网格,映射到预测值上形成半透明的拟合平面。

修正后的核心实现片段:

# 直接取lstsq返回的系数,删掉多余的逆序操作
b0, b_weight, b_volume = np.linalg.lstsq(A, Y, rcond=None)[0]

# 基于真实数据的取值范围生成特征网格
w_mesh, v_mesh = np.meshgrid(
    np.linspace(x_cars_weight.min(), x_cars_weight.max(), 30),
    np.linspace(x_cars_volume.min(), x_cars_volume.max(), 30)
)
# 代入回归方程计算网格点上的CO2预测值
co2_grid = b0 + b_weight * w_mesh + b_volume * v_mesh

# 绘制半透明的回归平面
ax.plot_surface(w_mesh, v_mesh, co2_grid, color='gray', alpha=0.5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 04:15:03