python pca函数_在Python中实现PCA(基于特征向量)

本文探讨了一位开发者在Python中实现PCA(主成分分析)时遇到的问题,发现结果与Matlab的PCA实现产生不同符号。通过对比测试值,分析了可能存在的算法错误。
摘要由CSDN通过智能技术生成

我尝试用Python实现PCA。我的目标是创建一个行为类似于Matlab的PCA实现的版本。然而,我认为我错过了一个关键点,因为我的测试部分产生了错误符号(+/-)的结果。在

你能找出算法的错误吗?为什么这些标志有时不同?在

基于特征向量的PCA实现:new_array_rank=4

A_mean = np.mean(A, axis=0)

A = A - A_mean

covariance_matrix = np.cov(A.T)

eigen_values, eigen_vectors = np.linalg.eig(covariance_matrix)

new_index = np.argsort(eigen_values)[::-1]

eigen_vectors = eigen_vectors[:,new_index]

eigen_values = eigen_values[new_index]

eigen_vectors = eigen_vectors[:,:new_array_rank]

return np.dot(eigen_vectors.T, A.T).T

我的测试值:

^{pr2}$

我的特征向量PCA结果:array([[ 5.09548931e-01, -3.97079651e-01, -1.47555867e-01,

-3.55343967e-02, -4.92125732e-01, -1.78191399e-01,

-3.29543974e-02, 3.71406504e-03, 1.06404170e-01,

-1.66533454e-16],

[ -5.15879041

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值