PCA 贡献率直接升序排序了 那怎么和之前矩阵不同的列对应呢?求解答
不知道你这个问题是否已经解决, 如果还没有解决的话:在MATLAB中需要载入其自带的数据集fisheriris,该数据集总共统计了三种鸢尾花的花萼长、花萼宽、花瓣长和花瓣宽,然后进行中心化处理,并计算协方差矩阵,如图2.1
所示。
图2.1导入数据集并中心化处理
利用特征值分解法:使用eig函数,如图2.2
所示,实现主成分分析,主要包括特征值矩阵的提取、按升序排列特征值等。
图2.2特征分解及协方差计算
通过计算方差的累积贡献率,如式2-4
所示,结合数据模型可以实现数据的降维,基于方差贡献率可以确定最终降维的维数
,一般来说是通过对数据的观察来确定主元个数,而利用此方法可以简单的确定PCA主成分分析中的主元个数。
其中, 是递增的,因此f (k)为单调递增的函数,且递增速度随着k增加逐渐降低。
一般来说,取f(r)≥ 某一阈值(如95%)的最小的r
,这样最多损失5%的方差,不同算法取的 不同或者替换为 即可,通过画作图实现,如图2.3所示。
图2.3方差贡献率确定维数
实现效果如2.4
所示,可以判断降维数,用以分析。
图2.4方差贡献率
结合MATLAB确定的降维维数,依据数据集完成降维,如图2.5
所示。
通过上述中心化、计算协方差和特征分解并进行作图实现降维处理,如图2.6
实现。
图2.6 PCA降维
给你看下这篇文章,看看能不能解决你的问题
https://blog.csdn.net/weixin_44248258/article/details/122111902?spm=1001.2014.3001.5506
这篇讲pca的步骤挺清楚的
你的问题描述我没太理解,我就默认你做pca的矩阵,你的列是变量行是样本了(假设是m行n列,即m个样本,n个变量)
pca是降维,我的理解是,你可能是想知道提取出来,靠前的主成分是哪几个变量组成的
pca函数的用法是
[coeff,score,latent,tsquared,explained,mu] = pca(train_data)
里面的这个coff算完之后是一个n行n列的矩阵,叫转换矩阵也有叫载荷矩阵的,就是每个变量(不同的列)在主成分上的占比
比如第一列第一行,就是变量1在主成分1上面的组成占比
第二列第一行,是变量1在主成分2上面的组成占比
第一列第二行,是变量2在主成分1上面的组成占比
可能不太准确,但是大概就是这种意思