• 大小: 2KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-08-03
  • 语言: Matlab
  • 标签: pca  matlab  

资源简介

用MATLAB实现的主成分分析法,有数据,可直接运行

资源截图

代码片段和文件信息


clc
clear all
fid=fopen(‘data.txt‘‘r‘)
X=fscanf(fid‘%g‘[10 35]);
X=X‘;
ans=fclose(fid)
%fprintf(‘标准化结果如下:\n‘)
%vl=cwstd(vector)
%result=cwfac(vl);
%[resultstd]=cwfac(X);
%cwscore(stdresult);
fprintf(‘标准样本变换法标准化的(std):\n‘)
std=zscore(X)
fprintf(‘计算相关系数矩阵(st):\n‘)
st=corrcoef(std)
fprintf(‘特征向量(vec)及特征值(val):\n‘)
[vecval]=eig(st)
newval=diag(val);
[yi]=sort(newval);      %对特征根进行排序,y为排序结果,i为索引
fprintf(‘特征根排序:\n\n‘)
for z=1:length(y)
    newy(z)=y(length(y)+1-z);
end
fprintf(‘%g\n‘newy)
rate=y/sum(y);%【计算贡献率】
fprintf(‘\n贡献率:\n‘)
newrate=(newy/sum(newy))%
sumrate=0;
newi=[];
for k=length(y):-1:1
    sumrate=sumrate+rate(k);
    newi(length(y)+1-k)=i(k);
    if sumrate>0.85 break; %【70%在这里改动】
    end  
end        
fprintf(‘主成分数:%g\n\n‘length(newi));%【newi里放的是主成分】
fprintf(‘主成分荷载:\n‘)
for p=1:length(newi)
    for q=1:length(y)
        result(qp)=sqrt(newval(newi(p)))*vec(qnewi(p));
    end
end%计算荷载
disp(result)
sco=std*result;
csum=sum(sco2);
[newcsumi]=sort(-1*csum);
[newij]=sort(i);
fprintf(‘计算得分:\n‘)
score=[scocsumj]%得分矩阵:sco为各主成分得分;csum为综合得分;j为排序结果

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2955  2012-10-27 14:42  PCA\data.txt

     文件       1257  2012-10-31 13:23  PCA\pca.m

     目录          0  2013-01-15 14:33  PCA

----------- ---------  ---------- -----  ----

                 4212                    3


评论

共有 条评论