我有一个包含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的实际数据,但我发现它令人困惑而且没有帮助
目前没有回答
相关问题 更多 >
编程相关推荐