使用scikit-learn PCA查找具有最高方差的维度

Alb*_*o A 22 python variance pca scikit-learn

我需要使用pca来识别具有特定数据集的最大方差的维度.我正在使用scikit-learn的pca来完成它,但是我无法从pca方法的输出中识别出具有最高方差的数据的组成部分.请记住,我不想消除这些维度,只能识别它们.

我的数据被组织为一个包含150行数据的矩阵,每行包含4个维度.我这样做:

pca = sklearn.decomposition.PCA()
pca.fit(data_matrix)
Run Code Online (Sandbox Code Playgroud)

当我打印pca.explained_variance_ratio_时,它会输出从最高到最低排序的方差比数组,但它不会告诉我它们对应的数据中的哪个维度(我已尝试更改矩阵中列的顺序,以及得到的方差比数组是相同的).

打印pca.components_给了我一个4x4矩阵(我把组件的原始数量留作 pca的参数)和一些我无法理解的含义的值...根据scikit的文档,它们应该是具有最大方差的组件(特征向量可能是?),但没有这些值所指的维度的标志.

转换数据也没有帮助,因为维度的改变方式我真的不知道它们最初是哪一个.

有什么方法可以用scikit的pca获取这些信息吗?谢谢

mad*_*mad 19

返回的pca.explained_variance_ratio_是主成分的差异.您可以使用它们来查找pca可以更好地转换数据的维度(组件)数量.您可以使用阈值(例如,您计算有多少方差大于0.5,等等).之后,您可以使用等于高于所用阈值的主成分的维数(组件)数量通过PCA转换数据.减少到这些维度的数据与原始数据中的维度数据不同.

你可以查看这个链接的代码:

http://scikit-learn.org/dev/tutorial/statistical_inference/unsupervised_learning.html#principal-component-analysis-pca

  • PCA不会消除尺寸并使其他人不受原始数据的影响.它以多个维度转换数据,这些维度的数据与原始数据完全不同. (14认同)
  • 是啊,你说得对.我一直在读PCA,因为你所说的,我想要的东西没有意义.好吧,我接受你的回答了!谢谢. (4认同)
  • 有帮助,但没有解决我的问题.当我用PCA转换数据并选择例如n_components = 2时,我需要知道我的原始数据的哪些维度将被消除.在这种情况下,将消除2个维度,但知道哪个维度是我的问题. (3认同)