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*coef熠硒勘唏f(:,1:99);如图所示,新数据只能99个特征(原数据有841个特征)达到降维的结果。