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

博主发现使用PCA时,Matlab的PCA()函数与Python的sklearn库得到的结果不同。经过分析,发现Matlab默认返回主成分系数,而Python的结果更接近期望。通过调整Matlab代码,使其与Python保持一致,问题得到解决。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值