matlab 主成分 分类,matlab主成分分析
%求出累積貢獻率大于85%的主成分
NEW=z*v(:,1:i)%輸出產生的新坐標下的數(shù)據(jù)
W=100*eig1/sum(eig1)
figure(1)
pareto(W);%畫出貢獻率的直方圖
%主成分分析 PAC 的Matlab實現(xiàn)
clc
clear all
A=xlsread("D:\evaluation.xlsx",1,"B2:I16");% 數(shù)據(jù)的輸入及處理
%數(shù)據(jù)的標準化處理
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函數(shù)是用來求向量的標準差
end
% %計算相關系數(shù)矩陣的特征值和特征向量
CM=corrcoef(SA);%計算相關系數(shù)矩陣
[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對應的主成分數(shù)與特征向量:")
Com_num
PV
disp("主成分得分及排序(按第四列的總分進行排序,前三列為個主成分得分,第五列為企業(yè)編號)")
result_report
總結
以上是生活随笔為你收集整理的matlab 主成分 分类,matlab主成分分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jmeter执行python脚本,Jme
- 下一篇: jq点击按钮获取php的值删除,通过jq