【发布时间】:2013-02-28 10:12:18
【问题描述】:
我需要使用 pca 来识别某组数据中方差最大的维度。我正在使用 scikit-learn 的 pca 来执行此操作,但我无法从 pca 方法的输出中确定我的数据中方差最大的组件是什么。请记住,我不想消除这些维度,只是识别它们。
我的数据被组织成一个包含 150 行数据的矩阵,每行有 4 个维度。我的做法如下:
pca = sklearn.decomposition.PCA()
pca.fit(data_matrix)
当我打印 pca.explained_variance_ratio_ 时,它会输出从最高到最低排序的方差比数组,但它没有告诉我它们对应的数据中的哪个维度(我试过改变矩阵上列的顺序,得到的方差比数组是相同的)。
打印 pca.components_ 给了我一个 4x4 矩阵(我将组件的原始数量作为参数留给 pca),其中一些值我无法理解...根据 scikit 的文档的含义,它们应该是具有最大方差的分量(也许是特征向量?),但没有迹象表明这些值指的是哪个维度。
转换数据也无济于事,因为维度发生了变化,我真的不知道它们最初是哪一个。
有什么方法可以通过 scikit 的 pca 获取这些信息?谢谢
【问题讨论】:
-
components_的第一行是最大方差的方向,如文档所述。我不完全确定有什么不清楚的地方。explained_variance_ratio_中的条目对应于components_的行。你的意思是“没有迹象表明这些值指的是哪个维度”? -
好吧,我的问题是,考虑到我的数据中有 4 个维度,我只想保留方差最大的 2 个维度的维度,我怎么知道我的数据有哪些维度?如果我使用 n_components=2 应用 PCA,则保留。例如,假设我的数据的第二维和第四维具有最高的方差,但我不知道这一点。我想申请 PCA 并有一些方法可以从结果中获取这些信息。同样,我不需要转换数据!
标签: python scikit-learn pca variance