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

时间:2013-03-12 18:17:59

标签: python scikit-learn pca variance

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

1 个答案:

答案 0 :(得分:17)

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

您可以查看此链接中的代码:

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