23

我需要使用 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 获取这些信息?谢谢

4

1 回答 1

21

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

您可以从此链接检查代码:

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

于 2013-03-13T03:10:41.143 回答