主成分分析PCA——附MATLAB代码

主成分分析PCA——附MATLAB代码


PCA

主成分分析概述:


主成分分析法(PCA)通过线性变换将原始的数据转化为一组各维度上线性不相关的表示,这些线性不相关的表示就称为"主成分"。

它的目标是降低数据的维度,捕获尽可能多的数据变动。
PCA的基本原理是将原始数据投影到一个新的坐标系统上,这个新坐标系统的基向量是由数据的协方差矩阵的特征向量组成的。在这个新的坐标系统中,原始数据的大部分变异性将沿着第一个坐标(称为第一主成分)展现出来,少量的变异性将沿着第二个坐标展现(第二主成分),以此类推。

PCA步骤

  1. 数据标准化
  2. 计算协方差矩阵
  3. 求解特征值和特征向量
  4. 选择主成分
  5. 得到新的数据表示
    在这里插入图片描述

主成分可以用于评价类问题:
根据主成分、贡献率计算综合得分并排名

  1. 计算综合得分并排名
    在这里插入图片描述

代码

function [f,Vs,S]=PCA(X)
%1.标准化——消除量纲影响
Z=zscore(X);
%2.计算协方差矩阵
C=cov(Z);
%1,2可以合成一步
%C=corrcoef(Z);
%3.计算协方差矩阵的特征值和特征向量
[V,D]=eig(C);%[V,D] = eig(A) 返回特征值的对角矩阵 D 和矩阵 V,其列是对应的右特征向量,使得 A*V = V*D。
%4.将特征值降序排列,同时按照索引排列特征向量,便于后续筛选
[d,ind] = sort(diag(D),'descend');
%Ds=D(ind,ind);
Vs = V(:,ind);
%选出累计贡献率大于95%的主成分
S=0;
i=0;
while S/sum(d)<0.95
    i=i+1;
    S=S+d(i);
end
%输出累计贡献率
S=S/sum(d);
%输出新坐标下的值
f=Z*Vs(:,1:i);
W=100*d/sum(d);
%绘制方差贡献率的帕累托图
figure(1)
pareto(W,'threshold',1)%将 threshold 参数设置为 1,包括累积分布中的所有值。
title("方差贡献率的帕累托图")
figure(2)
%绘制排列后特征向量的方差贡献率变化图
plot(1:length(d),W,'*r:')
title('方差贡献率%')

PCA作用


PCA的作用有以下4点:
(1). 数据降维:在多维数据分析中,为了简化模型,我们经常需要降低数据的维度;
(2). 特征提取:PCA可以帮助我们发现隐藏在大量数据背后的主要特征;
(3). 去噪:PCA可以帮助我们删除数据中的噪声,因为主成分中捕获的变化通常是信号而不是噪声;
(4). 优化算法性能:某些算法在高维数据上的性能很差,但在经过PCA处理后的低维数据上性能会大大提高。


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值