我正在阅读Abdi&Williams(2010)的"主成分分析",我正在尝试重做SVD以获得进一步PCA的值.
文章指出在SVD之后:
X = PDQ ^ t
我在np.array X中加载我的数据.
X = np.array(data)
P, D, Q = np.linalg.svd(X, full_matrices=False)
D = np.diag(D)
Run Code Online (Sandbox Code Playgroud)
但是在检查时我没有得到上述相同
X_a = np.dot(np.dot(P, D), Q.T)
Run Code Online (Sandbox Code Playgroud)
X_a和X是相同的尺寸,但值不相同.我是否遗漏了某些内容,或者np.linalg.svd函数的功能是否与文中的等式不兼容?
我正在寻找一个类型的问题: Aw = xBw其中x是标量(特征值),w是一个特征向量,A并且B是对称的,相等维度的方形numpy矩阵.我应该能够找到dX/W对,如果A和B是d x d.我怎么能在numpy中解决这个问题?我正在查看Scipy文档而没有找到任何我想要的东西.
在矩阵乘法中,假设它A是一个3 x 2矩阵(3行,2列)并且B是2 x 4矩阵(2行,4列),那么如果是矩阵C = A * B,那么C应该有3行4列.numpy为什么不做这个乘法?当我尝试以下代码时,我收到一个错误:ValueError: operands could not be broadcast together with shapes (3,2) (2,4)
a = np.ones((3,2))
b = np.ones((2,4))
print a*b
Run Code Online (Sandbox Code Playgroud)
我尝试转置A和B,alwasy得到相同的答案.为什么?在这种情况下如何进行矩阵乘法?