主成分分析(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資料集為例:
由于每次選擇訓練的圖檔是随機的,随後的準确率也是會變化的,當提高低維空間的次元時能提高準确率