matlab pca 结果,Matlab和Python为PCA生成不同的结果

我正在使用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]

[-0.25638649 -0.02923213 -0.01619661]

[ 0.14741593 -0.12777308 -0.2434731 ]

[-0.6122582 -0.08568121 0.06790961]

[ 0.10680331 0.54938026 0.03382447]]

Matlab结果:pca(a’, ‘Centered’, false)

0.504156973865138 -0.0808159771243340 -0.107296852182663

0.502756555190181 -0.174432053627297 0.818826939851221

0.329948209311847 0.315668718703861 -0.138813345638127

0.499181592718705 0.0755364557146097 -0.383301081533716

0.232039797509016 0.694464307249012 -0.0436361728092353

0.284905319274925 -0.612706345940607 -0.387190971583757

感谢丹在这一切中的帮助。事实上,我发现这是对Matlab函数的误用。Matlab默认返回主成分系数。使用[~,score]=pca(a,’Centered’,true)将获得与Python相同的结果。在

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览210031 人正在系统学习中 相关资源:Ztrans丹诚软件Z39.50客户端-其它工具类资源-CSDN文库

来源:weixin_39778003

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月16日
下一篇 2021年2月16日

相关推荐