PCA相關

參考博客

matlab自帶的實現方式

[COEFF,SCORE,latent,tsquare] = princomp(X)

在n行p列的數據集X上做主成分分析。X的每行表示一個樣本的觀測值,每一列表示特徵變量。COEFF是一個p行p列的矩陣,每一列包含一個主成分的係數,列是按主成分變量遞減順序排列。(COEFF是X矩陣所對應的協方差陣V的所有特徵向量組成的矩陣,即變換矩陣或稱投影矩陣,COEFF每列對應一個特徵值的特徵向量,列的排列順序是按特徵值的大小遞減排序)

返回的SCORE是對主分的打分,也就是說原X矩陣在主成分空間的表示。SCORE每行對應樣本觀測值,每列對應一個主成份(變量),它的行和列的數目和X的行列數目相同。

我們要的是由函數[pc,score,latent,tsquare] = princomp(ingredients)它所產生的pc和latent。由latent可以算出降維後的空間所能表示原空間的程度,只要這個累積的值大於95%就行了。

cumsum(latent)./sum(latent)  

ans = 0.86597

        0.97886  

              0.9996  

              1              

%由以上ans值可以看出前兩個主成分就能表示原空間的97.886%,所以取pc中的前兩列可

%做主成分變換矩陣tranMatrix = pc(:,1:2)。則從原來的4維空間降到2維空間。
%對任意一個原空間樣本,例如a=(7 ,26 ,6 ,60)變到低維空間的表達式爲a1 = a*tranMatrix。
%(當然你也可以取pc中的前三列,由原來的4維空間變到3維空間)
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章