MATLAB怎么做主成分分析

王太太 3个月前 已收到2个回答 举报

刺眼的痛 1星

共回答了158个问题采纳率:94.3% 评论

1.在对数据进行主成分分析时,需要对数据标准化处理,以消除量纲的影响,如图所示,使用代码x=zscore(A);对数据进行标准化。原则是原数据减去均值后,除以标准差。

2.标准化后,使用matlab自带主成分分析函数[coeff,score,latent,tsquare]=princomp(x);如图所示。

3.其中,coeff是各个主成分的系数也就是转换矩阵,score是各个主成分的得分,latent是X的特征值,tsquare是每个数据的统计值。这里主要看的coeff、latent。如图所示。

4.接下来计算每个特征的贡献率,输入代码latent’;、y=(100*latent/sum(latent))'; 如图所示。

5.提取主成分的方法是依据前N个特征值的累计贡献率为准则,若累计贡献率为85%以上,则说明这前N个特征可以代表去不数据的绝大部分信息。如图所示(将每个特征的贡献率复制到Excel相加,累计达到85%)前99个特征。

6.由于前99个特征的累计贡献率达到85%。故可以使用此前99个特征的信息表示大部分的原始信息。取前99个特征的特征向量作为转换矩阵,即coeff(:,1:99)。降维后的数据B=x*coeff(:,1:99);如图所示,新数据只能99个特征(原数据有841个特征)达到降维的结果。

22小时前

35

姐有受虐症 2星

共回答了65个问题 评论

1、在对数据进行主成分分析时,需要对数据标准化处理,以消除量纲的影响,如图所示,使用代码x=zscore(A);对数据进行标准化。原则是原数据减去均值后,除以标准差。

2、标准化后,使用matlab自带主成分分析函数[coeff,score,latent,tsquare]=princomp(x);如图所示

3、其中,coeff是各个主成分的系数也就是转换矩阵,score是各个主成分的得分,latent是X的特征值,tsquare是每个数据的统计值。这里主要看的coeff、latent。如图所示

4、接下来计算每个特征的贡献率,输入代码latent’;、y=(100*latent/sum(latent))'; 如图所示

5、提取主成分的方法是依据前N个特征值的累计贡献率为准则,若累计贡献率为85%以上,则说明这前N个特征可以代表去不数据的绝大部分信息。如图所示(将每个特征的贡献率复制到Excel相加,累计达到85%)前99个特征。

6、由于前99个特征的累计贡献率达到85%。故可以使用此前99个特征的信息表示大部分的原始信息。取前99个特征的特征向量作为转换矩阵,即coeff(:,1:99);

降维后的数据B=x*coeff(:,1:99);如图所示,新数据只能99个特征(原数据有841个特征)达到降维的结果。

21小时前

23
可能相似的问题

猜你喜欢的问题

热门问题推荐

Copyright © 2024 微短问答 All rights reserved. 粤ICP备2021119249号 站务邮箱 service@wdace.com