梯度下降算法引发ValueError

我有一个用于多元回归的梯度下降算法,但在运行时引发了以下错误:

ValueError: operands could not be broadcast together with shapes (3,) (3,140).

我查看了StackOverflow上关于广播错误的其他回答以及相关文档,文档中提到矩阵的维度必须相同,或者其中一个矩阵必须是1维的。但是,我该如何使我的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   

回答:

您正在将形状为(140, 3)xtheta相乘,期望得到形状为(140, 1)的输出。要实现这一点,您的theta应该具有(3, 1)的形状。您需要按照以下方式初始化theta

theta = np.zeros((x.shape[1], y.shape[1]))

Related Posts

为什么我们在K-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注