【发布时间】:2019-07-26 03:16:00
【问题描述】:
当我试图将矩阵计算从八度音程移植到 numpy 时,我绝对是在扯我的头发。这特别适用于多元回归。
我的任意数据如下,其中数组'x'是我的输入值:
x = [
[1, 1 ,2],
[1, 3 ,4],
[1, 5 ,6],
[1, 7, 8],
[1, 9 ,10],
[1, 11 ,12]]
而“y”是我的输出值(只是总和):
y = [[3],[7],[11],[15],[19],[23]]
在 Octave 中,以下代码将计算正确的系数(其中 pinv(A) 计算矩阵 A 的 Moore-Penrose 伪逆):
pinv (x' * x) * x' * y'
在 numpy 中,我执行以下操作:
x = np.array(x)
y = np.array(y)
x_T = (x.transpose())
x_theta = (inv(np.dot(x_T,x)))
x_theta = np.dot(x_theta,x_T)
x_theta = np.dot(x_theta,y)
但是这个输出:
[[-330.5],[36.875],[-3.875]]
这显然是不正确的。假设我只是简单,但任何帮助将不胜感激。
非常感谢!
【问题讨论】:
-
这里的
inv是什么?我会使用np.linalg.pinv。当我这样做时,您的代码似乎对我有用 -
我使用的是 np.linalg.inv 但当然使用 pinv 是有意义的。非常感谢您的帮助,内森!