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

基于Numpy的多变量梯度下降——系数数量错误问题

梯度下降中Theta维度不匹配的问题解决

嘿,我看你在机械工程毕设的梯度下降代码里遇到了theta维度不对的问题——x有3个自变量,但theta只输出了3个值,本该是4个对吧?这问题其实挺常见的,大概率是你没给特征矩阵x添加偏置项(也就是常数列θ₀对应的全1列)。

咱们先理清楚:线性回归的完整模型是 y = θ₀ + θ₁x₁ + θ₂x₂ + θ₃x₃,这里θ₀是截距项,不需要对应任何自变量,所以当你有3个自变量x₁、x₂、x₃时,theta数组应该包含4个值:[θ₀, θ₁, θ₂, θ₃]。

问题根源

你的代码里应该是直接用了原始的3列特征矩阵x去训练,没有添加全1的偏置列,所以模型默认只学习了对应3个自变量的θ₁、θ₂、θ₃,漏掉了θ₀。

解决方案

给特征矩阵x添加一列全1的偏置项,具体代码可以这么写(假设你用的是numpy):

import numpy as np

# 假设你的原始x是形状为(n_samples, 3)的数组
# 添加全1的偏置列,放在第一列
x_with_bias = np.hstack((np.ones((x.shape[0], 1)), x))

之后用x_with_bias去做梯度下降的训练,同时初始化theta的时候要改成4个值,比如:

# 初始化theta为4个随机值或者全0
theta = np.zeros(4)  # 或者 np.random.randn(4)

这样训练出来的theta就会是4个值,对应包含截距项的完整模型了。另外还要检查你的梯度下降迭代逻辑,确保计算损失和梯度的时候,是基于添加了偏置项的特征矩阵来计算的,这样维度才会匹配,不会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:06:03