主成分分析(principal components analysis,PCA)是一个简单的机器学习算法,主要思想是对高维数据进行降维处理,去除数据中的冗余信息和噪声。
算法:
输入样本:$D=\left \{ x_{1},x_{2},\cdots ,x_{m}\right \}$
过程:·
1:对所有样本进行中心化:$x_i\leftarrow x_i-\frac{1}{m}\sum_{i=1}^{m}x_i$;
2:计算所有样本的协方差矩阵:$XX^T$;
3:对协方差矩阵$XX^T$做特征值分解;
4:取最大的${d}'$个特征值做所对应的特征向量$w_1,w_2,\cdots ,w_{d'}$.
输出:投影矩阵$W=(w_1,w_2,\cdots ,w_{d'})$
PCA算法主要用在图像的压缩,图像的融合,人脸识别上:
在python的sklearn包中给出了PCA的接口:
以自己造的数据集进行测试并测试
程序提取了一个特征值
用PCA算法对testSet.txt数据集进行降维处理
结果:
蓝色三角形为原始数据,红色圆为数据的主方向,可以看到PCA算法很好地找到了数据的主方向

att_faces中含有40张脸,每张脸10张92*112像素灰度照片的数据集
这里以att_faces数据集为例:
由于每次选择训练的图片是随机的,随后的准确率也是会变化的,当提高低维空间的维度时能提高准确率