主成分分析(PCA)matlab代码实现
生活随笔
收集整理的這篇文章主要介紹了
主成分分析(PCA)matlab代码实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
function [V,S,E]=princa(X)
[m,n]=size(X); %計算矩陣的行m和列n%-------------第一步:標準化矩陣-----------------%
mv=mean(X); %計算各變量的均值
st=std(X); %計算各變量的標準差
X=(X-repmat(mv,m,1))./repmat(st,m,1); %標準化矩陣X%-------------第二步:計算相關系數矩陣-----------------%
% R1=X'*X/(m-1); %方法一:協方差矩陣計算公式
% R2=cov(X); %方法二:協方差矩陣計算函數
R=corrcoef(X); %方法三:相關系數矩陣函數%-------------第三步:計算特征向量和特征值-----------------%
[V,D]=eig(R); %計算矩陣R的特征向量矩陣V和特征值矩陣D,特征值由小到大
V=(rot90(V))'; %將特征向量矩陣V從大到小排序
D=rot90(rot90(D)); %將特征值矩陣由大到小排序
E=diag(D); %將特征值矩陣轉換為特征值向量%-------------第四步:計算貢獻率和累計貢獻率-----------------%
ratio=0; %累計貢獻率
for k=1:nr=E(k)/sum(E); %第k主成份貢獻率ratio=ratio+r; %累計貢獻率if(ratio>=0.9) %取累計貢獻率大于等于90%的主成分break;end
end%-------------第五步:計算得分-----------------%
S=X*V;
如果要求主成分分析,用matlab自帶一個的函數(princomp)就行。Princomp調用如下:
[COEFF,SCORE,latent,tsquare] = princomp(zscore(X))
zscore(X)是對矩陣X進行標準化操作。
COEFF是X矩陣所對應的協方差陣的所有特征向量組成的矩陣,即變換矩陣或稱投影矩陣,每列對應一個特征值的特征向量,列的排列順序是按特征值的大小遞減排序
相當于上面程序中的V,它表示的是主成分的系數。
SCORE是對主成分的打分,也就是說原X矩陣在主成分空間的表示。每行對應樣本觀測值,每列對應一個主成份(變量),它的行和列的數目和X的行列數目相同。(相當于上面程序中的S)
latent是一個向量,它是X所對應的協方差矩陣的特征值向量。 (相當于程序中的E)
特征值與分數之間的關系:latent=diag(cov(SCORE));
tsquare是表示對每個樣本點Hotelling的T方統計量
計算PCA的時候,如果直接有現成的協方差陣,用函數pcacov來計算。
總結
以上是生活随笔為你收集整理的主成分分析(PCA)matlab代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fedora 编译安装mysql_Fed
- 下一篇: java无ide编译_[转]无IDE时编