在matlab中实现PCA算法

本文详细解释了如何使用Matlab编程实现主成分分析(PCA),包括标准化矩阵、计算相关系数矩阵、特征值和特征向量、贡献率及累计贡献率的计算过程,以及princomp函数的运用。
摘要由CSDN通过智能技术生成
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:n
    r=E(k)/sum(E);   %第k主成份贡献率
    ratio=ratio+r;  %累计贡献率
    if(ratio>=0.9)  %取累计贡献率大于等于90%的主成分
        break;
    end
end

%-------------第五步:计算得分-----------------%
S=X*V;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值