关于#matlab#的问题:PCA 贡献率直接升序排序了 那怎么和之前矩阵不同的列对应呢

PCA 贡献率直接升序排序了 那怎么和之前矩阵不同的列对应呢?求解答

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/654158
  • 你也可以参考下这篇文章:异常检测:从异常检测到PCA再到特征向量
  • 除此之外, 这篇博客: 主成分分析(PCA)算法模型实现及分析(MATLAB实现)PCA降维中的   (2)基于特征值分解协方差矩阵实现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上面的组成占比

可能不太准确,但是大概就是这种意思