Python中的Gradient Descent实现

时间:2015-09-26 01:25:14

标签: python linear-regression gradient-descent

我陷入了在python中实现渐变下降的地步。

梯度下降的公式为:

for iter in range(1, num_iters):
    hypo_function = np.sum(np.dot(np.dot(theta.T, X)-y, X[:,iter]))

    theta_0 = theta[0] - alpha * (1.0 / m) * hypo_function
    theta_1 = theta[1] - alpha * (1.0 / m) * hypo_function

出现错误:

  

---> hypo_function = np.sum(np.dot(np.dot(theta.T,X)-y,X [:,iter]))   ValueError:形状(1,97)和(2,)未对齐:97(暗淡1)!= 2(暗淡0)

PS:这里我的X是(2L,97L),y是(97L,)theta是(2L,)。

1 个答案:

答案 0 :(得分:1)

np.dot(a,b)取a和b的内积,如果a和b是向量(1-D数组)如果a和b是2D数组, np .dot(a,b)进行矩阵乘法。

如果a的最后一个维度的大小与b的倒数第二个维度之间存在不匹配,则会抛出ValueError。他们必须匹配。

在你的情况下,你试图在你的一个点积中乘以一个2个数组的数组乘以97个数组,所以存在不匹配。所以你需要修改输入数据,这样点积/矩阵乘法是可计算的。