数学建模之主成分分析(matlab算法)

本文介绍了一种有效的数据降维方法——主成分分析(PCA),详细解释了如何通过PCA将多变量数据转换为少量无关的综合变量,从而简化数据集。文章还提供了MATLAB实现PCA的具体步骤,包括数据标准化、计算相关系数矩阵、进行主成分分析等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息.

一般来说,当研究的问题涉及到多变量变量之间存在很强的相关性,我们可以考虑使用主成分分析的方法来对数据进行简化.

变量维数降低以便于描述、理解和分析的方法:主成分分析(principal component analysis

主成分分析所要做的就是设法将原来众多具有一定相关性的变量,

  1. 重新组合为一组新的相互无关的综合变量来代替原来变量。
  2. 从新的变量中筛选少数重要变量,这些重要变量能代表原变量的大多数信息。

 基本原理

x1x2xP为原变量指标,F1F2Fmmp)为新变量指标

 简写:

 主成分分析模型

 

 约束条件

1、主成分之间不相关。

2、主成分系数应该限制。

3、主成分方差从大到小排列。

 matlab指令部分

1.获取矩阵行列大小

a=size(X,1);%获得矩阵X的行大小
b=size(X,2);%获得矩阵X的列大小

2.matlab自动将数据标准化并存储到变量x中。

x=zscore(X);%数据标准化

 3.得到的相关系数矩阵 ,并存储到变量R中。

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

4.用pcacov函数根据协方差矩阵或相关系数矩阵进行主成分分析。

[COEFF,latent,explained]=pcacov(CM)

 5.为了更加直观(x

result1(1,:)={'序号','特征值','贡献率','累计贡献率'}
c=1:b;
result1(2:b+1,1)=num2cell(c);
result1(2:b+1,2)=num2cell(latent);
result1(2:b+1,3)=num2cell(explained);
result1(2:b+1,4)=num2cell(cumsum(explained))

6.看贡献率,取相应数量的主成分进行分析。

% 以元胞数组形式显示主成分表达式  
s = {'标准化变量';'x1:';'x2: ';'x3: ';'x4: ';'x5: ';'x6: ';'x7: ';'x8: '}; 
result2(:,1) = s;   
result2(1, 2:4) = {'主成分1', '主成分2', '主成分3'}; 
result2(2:b+1, 2:4) = num2cell(COEFF(:,1:3))

数据是否一致化不影响主成分分析

7.由特征向量计算主成分得分

y=x*COEFF(:,1:3)  %计算引例中前三个主成分得分

8.分主成分的贡献率作为该主成分的权重

b=explained(1:3)./100 %计算各成分权重

 9.计算综合得分

z=y*b %计算综合得分

10.得分进行排序

[s,ind]=sort(z,'descend') %将得分按从高到低排序,从高到低是descend,去掉就是默认从低到高

matlab程序纯享版

a=size(X,1);%获得矩阵X的行大小
b=size(X,2);%获得矩阵X的列大小
x=zscore(X);%数据标准化
CM=corrcoef(x);%计算相关系数矩阵
[COEFF,latent,explained]=pcacov(CM)%总体主成分分析 COEFF是主成分系数矩阵 latent是特征值 explained是主成分贡献率(贡献率选超过累计85%的)
%为了更加直观
result1(1,:)={'序号','特征值','贡献率','累计贡献率'}
c=1:b;
result1(2:b+1,1)=num2cell(c);
result1(2:b+1,2)=num2cell(latent);
result1(2:b+1,3)=num2cell(explained);
result1(2:b+1,4)=num2cell(cumsum(explained))
% 以元胞数组形式显示主成分表达式  
s = {'标准化变量';'x1:';'x2: ';'x3: ';'x4: ';'x5: ';'x6: ';'x7: ';'x8: '}; 
result2(:,1) = s;   
result2(1, 2:4) = {'主成分1', '主成分2', '主成分3'}; 
result2(2:b+1, 2:4) = num2cell(COEFF(:,1:3))
%数据是否一致化不影响主成分分析
y=x*COEFF(:,1:3)  %计算引例中前三个主成分得分
b=explained(1:3)./100 %计算各成分权重
z=y*b %计算综合得分
[s,ind]=sort(z,'descend') %将得分按从高到低排序,从高到低是descend,去掉就是默认从低到高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值