matlab自帶princomp(PCA降維方式)


matlab 中自帶的函數就不必懷疑。

princomp:principal componet analysis (PCA).

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

參數:

%%%%%%%%%%%%%%%%%%

INPUT: X是數據:n*p,其中n代表樣本個數,p代表特征維數

%%%%%%%%%%%%%%%%%%

OUTPUT:

COEFF: 協方差 p*p,投影矩陣

SCORE:投影之后的數據。如果樣本個數<=特征維數,有一個有意思的

             現象:SCORE(:,n:p), latent(n:p)都為零。為何呢?請以兩個

             數據點為例。即n=2,p=3;當選擇了一個投影軸之后,再選一個

             正交的抽,發現無論怎么選,它們投影之后都會重疊,即0。

latent:計算完之后並不是主成分歸一化的權重。如果需要,用下面代碼:

cumsum(latent)./sum(latent);

 

 

很注意的是:

訓練樣本計算出來了協方差矩陣。如果來了一個測試集,我們不能再去重新

計算一個協方差矩陣。因為那樣會使訓練集和測試集投影到不同的空間上,

最終導致特征空間不一致,訓練出來的參數毫無意義。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM