1.去中心化
X_mean=np.mean(X,axis=0)
X_norm=X-X_mean
2.求协方差矩阵
X_cov=np.cov(X_norm,rowvar=False)
print(X_cov.shape)
3.求协方差矩阵的特征值与特征向量
eigvalues, eigvectors =np.linalg.eig(X_cov)
4.按特征排序取出索引
max_eigvalue_index = np.argsort(-eigvalues)[:K]
5.保留最大的K大特征值对应的特征分量
W = eigvectors[:,max_eigvalue_index]
6.降维后数据
X_new = np.dot(X_norm, W)
7.重建图像
X_rec = np.dot(X_new,W.T) + X_mean
return W, X_mean,X_new,X_rec
return X_rec
pca对一张图片降维,X_mean=np.mean(X,axis=0),这里为什么要对X每一列求均值,不应该是把每一个像素作为一个特征吗,但这句语句是把每一列当成一个特征了吗?