PCA算法的主要步骤是:
(1) 对向量X进行去中心化
(2) 计算向量X的协方差矩阵,自由度可以选择0或1
(3)计算协方差矩阵的特征值和特征向量
(4)选取最大的k个特征值及其特征向量
(5)用X与特征向量相乘
python实现:
from sklearn.datasets import load_iris
import numpy as np
def pca(X, k):
X = X - X.mean(axis=0)
X_cov = np.cov(X.T, ddof = 0)
eigenvalues, eigenvectors = eig(X_cov)
klarge_index = eigenvalues.argsort()[-k:][::-1]
k_eigenvectors = eigenvectors[klarge_index]
return np.dor(X, k_eigenvectors.T)
iris = load_iris()
X = iris.data
k = 2
X_pca = pca(X, k)