【发布时间】:2018-08-15 08:08:56
【问题描述】:
我在matlab和python中生成相同的矩阵:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
然后我分别应用pca得到主成分系数。
Matlab 代码:
X = reshape([1:25], 5, 5);
X = X'
[cofe, S, latent] = pca(X)
结果:
cofe =
0.4472 0.8944 0 0
0.4472 -0.2236 0.8660 -0.0000
0.4472 -0.2236 -0.2887 0.8165
0.4472 -0.2236 -0.2887 -0.4082
0.4472 -0.2236 -0.2887 -0.4082
Python 代码:
from sklearn.decomposition import PCA
import numpy as np
pca = PCA()
A = np.array(range(1, 26), dtype=float).reshape([5, 5])
print(A)
pca.fit(A)
print(np.transpose(pca.components_))
结果:
[[-0.4472136 0. 0. 0. 0.89442719]
[-0.4472136 -0.5 -0.5 -0.5 -0.2236068 ]
[-0.4472136 0.83333333 -0.16666667 -0.16666667 -0.2236068 ]
[-0.4472136 -0.16666667 0.83333333 -0.16666667 -0.2236068 ]
[-0.4472136 -0.16666667 -0.16666667 0.83333333 -0.2236068 ]]
两列的结果是一样的,但其他的却大不相同。然后我尝试对python代码的结果进行归一化,因为我看到matlab的结果被归一化了,但是结果仍然存在。
谁能告诉我他们为什么不一样?
【问题讨论】: