我尝试用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