pca主成分分析Matlab源码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

function[pc,score,latent,tsquare]=princomp(x);%PRINCOMPPrincipalComponentAnalysis(centeredandscaleddata).%[PC,SCORE,LATENT,TSQUARE]=PRINCOMP(X)takesadatamatrixXand%returnstheprincipalcomponentsinPC,theso-calledZ-scoresinSCORES,%theeigenvaluesofthecovariancematrixofXinLATENT,andHotelling's%T-squaredstatisticforeachdatapointinTSQUARE.%Reference:J.EdwardJackson,AUser'sGuidetoPrincipalComponents%JohnWiley&Sons,Inc.1991pp.1-25.%B.Jones3-17-94%Copyright1993-2002TheMathWorks,Inc.%$Revision:2.9$$Date:2002/01/1721:31:45$[m,n]=size(x);%得到矩阵的规模,m行,n列r=min(m-1,n);%maxpossiblerankofx%该矩阵最大的秩不能超过列数,%也不能超过行数减1avg=mean(x);%求每一列的均值,付给一个n维行向量centerx=(x-avg(ones(m,1),:));%x的每个元素减去该列的均值,%使样本点集合重心与坐标原点重合[U,latent,pc]=svd(centerx./sqrt(m-1),0);%“经济型”的奇异值分解score=centerx*pc;%得分矩阵即为原始矩阵乘主成分矩阵ifnargout3,return;endlatent=diag(latent).^2;%将奇异值矩阵转化为一个向量if(rN)latent=[latent(1:r);zeros(n-r,1)];score(:,r+1:end)=0;endifnargout4,return;endtmp=sqrt(diag(1./latent(1:r)))*score(:,1:r)';tsquare=sum(tmp.*tmp)';主成分分析[Matlab版]functionmain()%*************主成份分析************%读入文件数据X=load('data.txt');%==========方法1:求标准化后的协差矩阵,再求特征根和特征向量=================%标准化处理[p,n]=size(X);forj=1:nmju(j)=mean(X(:,j));sigma(j)=sqrt(cov(X(:,j)));endfori=1:pforj=1:nY(i,j)=(X(i,j)-mju(j))/sigma(j);endendsigmaY=cov(Y);%求X标准化的协差矩阵的特征根和特征向量[T,lambda]=eig(sigmaY);disp('特征根(由小到大):');disp(lambda);disp('特征向量:');disp(T);%方差贡献率;累计方差贡献率Xsum=sum(sum(lambda,2),1);fori=1:nfai(i)=lambda(i,i)/Xsum;endfori=1:npsai(i)=sum(sum(lambda(1:i,1:i),2),1)/Xsum;enddisp('方差贡献率:');disp(fai);disp('累计方差贡献率:');disp(psai);%综合评价....略%+============方法2:求X的相关系数矩阵,再求特征根和特征向量================%X的标准化的协方差矩阵就是X的相关系数矩阵R=corrcoef(X);%求X相关系数矩阵的特征根和特征向量[TR,lambdaR]=eig(R);disp('特征根(由小到大):');disp(lambdaR);disp('特征向量:');disp(TR);%%%可以直接调用

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功