主成分分析---PCA(基于MATLAB)

clc
clear all
%% 导入数据及处理
load('Data_shuxing')
%数据标准化处理
n = size(Data_shuxing,2);
for i = 1:n
    SA(:,i) = (Data_shuxing(:,i)-mean(Data_shuxing(:,i)))/std(Data_shuxing(:,i));
end

%% 计算相关系数矩阵的特征值和特征向量
CM = corrcoef(SA);  %计算相关系数矩阵
[V, D] = eig(CM);   %计算特征值和特征向量

for j = 1:n
    DS(j,1) = D(n+1-j,n+1-j);  %对特征值按降序进行排序
end
for i = 1:n
    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:n
    if DS(K,3) >= T
        Com_num = K;
        break
    end
end

% 提取主成分对应的特征向量
for j = 1:Com_num
    PV(:,j) = V(:,n+1-j);
end

%% 输出结果报告
disp('特征值及其贡献率、累积贡献率')
DS
disp('信息保留率T对应的主成分数')
Com_num

pareto(DS(:,2));%调用 matlab 画排列图
xlabel('Principal Component');
ylabel('Variance Explained(%)');
grid on
% % 输出新的数据
new_data = SA*PV;
save('Data_PCA','new_data')   %保存数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值