【问题标题】:Numpy equivalent code to Octave's pinv(A) (pseudo-inverse)与 Octave 的 pinv(A) 等效的 Numpy 代码(伪逆)
【发布时间】: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 是有意义的。非常感谢您的帮助,内森!

标签: python numpy


【解决方案1】:

将此作为答案发布,这样您的问题就不会仍然显示为未回答 - 在 Octave 中使用 pinv 的地方使用 np.linalg.pinv(伪逆)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2019-08-18
    • 2013-09-02
    • 2013-05-19
    相关资源
    最近更新 更多