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

2024-10-04 03:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含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_回归函数外添加所需的行时,即当我预处理数据,然后在追加1行后将矩阵作为参数发送时,一切都很正常,但当我尝试从函数内追加行时,我似乎遇到了以下问题:

ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with >gufunc signature (n?,k),(k,m?)->(n?,m?) (size 18 is different from 17)

我似乎无法确定问题出在哪里。。。y是162行的响应向量,X.T是162x18(以前是17行)的转置,所以当我尝试将它们相乘时,应该可以正常工作

更新: 这些是进入函数后立即出现的X和y形状:

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

y.shape[1] = 162

添加intercept行应该将X.shape[0]更改为18,确实如此,但随后会发生此错误。 我可以加上X和y的实际数据,但我发现它令人困惑而且没有帮助


Tags: 数据函数模型defnpones条目矩阵