Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
梯度下降在Python中的实现_Python_Linear Regression_Gradient Descent - Fatal编程技术网

梯度下降在Python中的实现

梯度下降在Python中的实现,python,linear-regression,gradient-descent,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

我在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
出现错误:

--->次函数=np.sum(np.dot(θT,X)-y,X[:,iter])) ValueError:形状(1,97)和(2,)未对齐:97(尺寸1)!=2(尺寸0)

注:这里我的X是(2L,97L),y是(97L),θ是(2L,)。

np。点(a,b)取a和b的内积,如果a和b是向量(一维数组),如果a和b是二维数组,np。点(a,b)进行矩阵乘法

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


在您的例子中,您试图在一个点积中将一个某物乘以97的数组乘以一个2乘以某物的数组,因此存在不匹配。所以你需要修正你的输入数据,这样点积/矩阵乘法是可计算的。

嗨,Paisanco,你能帮我修正代码吗?例如,X的转置是97 X 2,可以成功地乘以θ(2x1)。你可以用numpy.transpose来做这个把戏。但是根据梯度下降公式,我不能做X的转置,但是可以做θ的转置,只要你做np.dot(θu转置,X),那就是1x2乘以2x97,得到1x97的结果。我必须实现的公式是:(θu转置*X)−y) 十,。我不知道我们是否可以用维度来做。现在我想这会让我更好地了解我在这方面应该做些什么