关于PCA方法的原理这里就不介绍了,网络上很多文章写得都很好,这里给出以三维点集的PCA为例,在python里实现PCA方法。
PCA方法的主要步骤是:
- 数据中心化
- 计算协方差矩阵
- 根据协方差矩阵计算出特征值和特征向量
python代码如下
def pca(pts):
covariance_mat = np.cov(pts, rowvar=False)
eigen_vals, eigen_vecs = np.linalg.eig(covariance_mat)
return eigen_vals, eigen_vecs
取一个点集验证效果,这里每行数据是一个点,所以cov时rowvar=False。
pts = np.array([
[0.62082666, 0.27253884, 0.2100647],
[0.6560723, 0.31075895, 0.21034315],
[0.6902167, 0.34876803, 0.21067616],
[0.58223283, 0.30775833, 0.20974341],
[0.6169813, 0.34581205, 0.20904496],
[0.65207976, 0.3847572, 0.21193053],
[0.5434401, 0.34255236, 0.21005037],
[0.57831097, 0.3804655, 0.21074015],
[0.6131545, 0.4197734, 0.21166]
])
val, vec = pca(pts)
print val, '\n', vec
************