我需要使用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获取这些信息吗?感谢
答案 0 :(得分:17)
返回的pca.explained_variance_ratio_是主成分的差异。您可以使用它们来查找pca可以更好地转换数据的维度(组件)数量。您可以使用阈值(例如,您可以计算有多少差异大于0.5,等等)。之后,您可以使用等于高于所用阈值的主成分的维数(组件)数量通过PCA转换数据。减少到这些维度的数据与原始数据中的维度数据不同。
您可以查看此链接中的代码: