梯度下降算法引发 valueError
Gradient Descent algorithm raises valueError
我有这些用于多元回归的梯度下降算法,但它引发了一个
ValueError: operands could not be broadcast together with shapes (3,) (3,140).
我在 Whosebug 上查看了关于广播错误的其他答案以及说明矩阵的维度必须相同或其中一个矩阵必须 1.But 我如何使我的 theta 具有相同维度的文档.
请不要将其标记为重复。
我的 x 有暗淡的 (140,3) ,y 有 (140,1),alpha=0.0001
def find_mse(x,y,theta):
return np.sum(np.square(np.matmul(x,theta)-y))*1/len(x)
def gradientDescent(x,y,theta,alpha,iteration):
theta=np.zeros(x.shape[1])
m=len(x)
gradient_df=pd.DataFrame(columns=['coeffs','mse'])
for i in range(iteration):
gradient = (1/m) * np.matmul(x.T, np.matmul(x, theta) - y)
theta = np.mat(theta) - alpha * gradient
cost = compute_cost(X, y, theta)
gradient_df.loc[i] = [theta,cost]
return gradient_df
您正在将 x
与形状 (140, 3)
与 theta
相乘以产生形状应为 (140, 1)
的输出。为此,您的 theta
应该具有 (3, 1)
的形状。您需要初始化 theta
如下
theta = np.zeros((x.shape[1], y.shape[1]))
我有这些用于多元回归的梯度下降算法,但它引发了一个
ValueError: operands could not be broadcast together with shapes (3,) (3,140).
我在 Whosebug 上查看了关于广播错误的其他答案以及说明矩阵的维度必须相同或其中一个矩阵必须 1.But 我如何使我的 theta 具有相同维度的文档.
请不要将其标记为重复。
我的 x 有暗淡的 (140,3) ,y 有 (140,1),alpha=0.0001
def find_mse(x,y,theta):
return np.sum(np.square(np.matmul(x,theta)-y))*1/len(x)
def gradientDescent(x,y,theta,alpha,iteration):
theta=np.zeros(x.shape[1])
m=len(x)
gradient_df=pd.DataFrame(columns=['coeffs','mse'])
for i in range(iteration):
gradient = (1/m) * np.matmul(x.T, np.matmul(x, theta) - y)
theta = np.mat(theta) - alpha * gradient
cost = compute_cost(X, y, theta)
gradient_df.loc[i] = [theta,cost]
return gradient_df
您正在将 x
与形状 (140, 3)
与 theta
相乘以产生形状应为 (140, 1)
的输出。为此,您的 theta
应该具有 (3, 1)
的形状。您需要初始化 theta
如下
theta = np.zeros((x.shape[1], y.shape[1]))