PCA基本步骤:
对数据进行归一化处理(直接减去均值)
计算归一化后的数据集的协方差矩阵
计算协方差矩阵的特征值和特征向量
保留最重要的k个特征(通常k要小于n),也可以自己制定,也可以选择一个阈值,然后通过前k个特征值之和减去后面n-k个特征值之和大于这个阈值,则选择这个k
找出k个特征值对应的特征向量
将m * n的数据集乘以k个n维的特征向量的特征向量(n * k),得到最后降维的数据。
1、进行归一化处理、计算协方差等
def normalize(X):
m, n = np.shape(X)
mu = meanX(X)
muAll = np.tile(mu, (m, 1))
X1 = X - muAll
X2 = np.tile(np.diag(X.T * X), (m, 1))
XNorm = X1 / X2
return XNorm
2、定义PCA函数,实现主成分分析
def pca(XMat, k):
average = meanX(XMat) #计算均值,为进行归一化做准备
m, n = np.shape(XMat) #行,列(7)
data_adjust = []
avgs = np