Python线性回归权重计算:reshape转置后点积维度不匹配报错求解
解决线性回归权重计算中的矩阵维度不匹配问题
首先明确:你要的是矩阵转置,不是拉平后重塑形状,这是核心错误。
报错原因
你的Xtrain形状是(100,3),用x.reshape(-1,1)会把整个矩阵拉平成300个元素的一维数组,再转成(300,1)的列向量。而矩阵乘法要求前一个矩阵的列数等于后一个矩阵的行数,(100,3)的列数是3,(300,1)的行数是300,3≠300,所以触发维度不匹配报错。
正确做法
- 直接用转置操作:要得到
Xtrain的转置(形状为(3,100)),不需要reshape,直接用Xtrain.T或者np.transpose(Xtrain)。比如你如果要计算线性回归里的X^T X,就用np.dot(Xtrain.T, Xtrain),得到的是(3,3)的矩阵,完全符合公式要求。 - 非要用reshape的话(不推荐,不如转置直观可靠),可以写
Xtrain.reshape(3, 100),但这仅在原矩阵内存连续时等价于转置,实际开发中优先用转置方法。
内容的提问来源于stack exchange,提问作者alim1990
相关产品推荐
相关产品推荐

