我有一个带有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的实际数据,但是我发现它令人困惑且无济于事...