ValueError:matmul:尝试将矩阵乘以矢量时,输入操作数1的核心维0不匹配

时间:2020-04-12 09:10:30

标签: python machine-learning linear-regression

我有一个带有r行和c列的设计矩阵X,我想为学习模型添加一个新行,其所有条目均为1(拦截行)。

def fit_linear_regression(X, y):
  ones = np.ones(X.shape[1])
  K = np.insert(X.T, 0, ones, axis=1)
  K = K.T
  singulars = np.linalg.svd(K, compute_uv=False)
  w = np.linalg.pinv(K.transpose()) @ y
  return singulars, w

问题是,当我在fit_linear_regression函数之外添加所需的行时,即当我预处理数据,然后在附加1s行之后将矩阵作为参数发送时,一切工作都很好,但是当我尝试执行从函数中追加行,我似乎遇到了以下问题:

ValueError:matmul:输入操作数1的核心维0不匹配,带有> gufunc签名(n?,k),(k,m?)->(n?,m?)(大小18不同)从17开始)

我似乎无法查明问题出在哪里... y是162行的响应向量,而XT是162x18(以前是17)的转置,所以当我尝试将它们相乘时,它应该起作用很好。

已更新: 输入函数后,这些形状即为X和y:

X.shape[0] = 17, X.shape[1] = 162

y.shape[1] = 162

添加拦截行应将X.shape [0]更改为18,并且确实如此,但是会发生此错误。 我可以添加X和y的实际数据,但是我发现它令人困惑且无济于事...

0 个答案:

没有答案