matlab 主成分 分类,matlab主成分分析

%求出累积贡献率大于85%的主成分

NEW=z*v(:,1:i)%输出产生的新坐标下的数据

W=100*eig1/sum(eig1)

figure(1)

pareto(W);%画出贡献率的直方图

%主成分分析 PAC 的Matlab实现

clc

clear all

A=xlsread("D:\evaluation.xlsx",1,"B2:I16");% 数据的输入及处理

%数据的标准化处理

a=size(A,1);%获得矩阵A的行大小

b=size(A,2);%获得矩阵A的列大小

for i=1:b

SA(:,i)=(A(:,i)-mean(A(:,i)))/std(A(:,i));%std函数是用来求向量的标准差

end

% %计算相关系数矩阵的特征值和特征向量

CM=corrcoef(SA);%计算相关系数矩阵

[V,D]=eig(CM);%计算特征值和特征向量

for j=1:b

DS(j,1)=D(b+1-j,b+1-j);%对特征值按降序排列

end

for i=1:b

DS(i,2)=DS(i,1)/sum(DS(:,1));%贡献率

DS(i,3)=sum(DS(1:i,1))/sum(DS(:,1));%累计贡献率

end

% % 选择主成分及对应的特征向量

T=0.9;%主成分信息保留率

for k=1:b

if DS(k,3)>=T

Com_num=k;

break;

end

end

%提取主成分对应的特征向量

for j=1:Com_num

PV(:,j)=V(:,b+1-j);

end

% % 计算各评价对象的主成分得分

new_score=SA*PV;

for i=1:a

total_score(i,1)=sum(new_score(i,:));

total_score(i,2)=i;

end

result_report=[new_score,total_score];%将各主成分得分与总分放在同一个矩阵中

result_report=sortrows(result_report,-4);%按总分降序排序

% % 输出模型及结果报告

disp("特征值及其贡献率,累加贡献率:")

DS

disp("信息保留率T对应的主成分数与特征向量:")

Com_num

PV

disp("主成分得分及排序(按第四列的总分进行排序,前三列为个主成分得分,第五列为企业编号)")

result_report

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值