我正在使用PCA,我发现Python中sklearn中的PCA和Matlab中的PCA()会产生不同的结果。这是我使用的测试矩阵。在a = np.array([[-1,-1], [-2,-1], [-3, -2], [1,1], [2,1], [3,2]])
我要学Python
^{pr2}$
对于Matlab,我得到pca(a', 'Centered', false)
[0.2196 0.5340
0.3526 -0.4571
0.5722 0.0768
-0.2196 -0.5340
-0.3526 0.4571
-0.5722 -0.0768]
为什么会观察到这种差异?在
谢谢丹的回答。现在看来结果很合理。然而,如果我用随机矩阵进行测试,似乎Matlab和Python生成的结果不是彼此的标量倍数。为什么会这样?在test matrix a:
[[ 0.36671885 0.77268624 0.94687497]
[ 0.75741855 0.63457672 0.88671836]
[ 0.20818031 0.709373 0.45114135]
[ 0.24488718 0.87400025 0.89382836]
[ 0.16554686 0.74684393 0.08551401]
[ 0.07371664 0.1632872 0.84217978]]
Python结果:p = PCA()
p.fit_transform(a))
[[ 0.25305509 -0.10189215 -0.11661895]
[ 0.36137036 -0.20480169 0.27455458