使用python进行PCA分解:具有相关性

时间:2014-03-12 10:32:10

标签: python scikit-learn pca

我现在关注下一个主题:How can I use PCA/SVD in Python for feature selection AND identification? 现在,我们使用PCA方法在Python中分解我们的数据集并使用sklearn.decomposition.PCA使用属性components_,我们得到所有组件。现在我们有非常相似的目标:只需要前几个组件(这部分不是问题),看看每个PCA组件的输入功能比例(知道哪些功能对我们来说非常重要)。怎么可能这样做? 另一个问题是,python lybrary有另一个主成分分析的实现吗?

1 个答案:

答案 0 :(得分:6)

  

每个PCA组件的输入功能比例(知道哪些功能对我们来说非常重要)。怎么可能这样做?

components_数组的形状为(n_components, n_features),因此components_[i, j]已经为您提供了功能j对组件i的贡献的(已签名)权重。

如果您希望获得对组件i有贡献的前3个功能的索引而不考虑该符号,您可以这样做:

numpy.abs(pca.component_[i]).argsort()[::-1][:3]

注意:[::-1]表示法可以颠倒数组的顺序:

>>> import numpy as np
>>> np.array([1, 2, 3])[::-1]
array([3, 2, 1])
  

另一个问题是,python库是否有另一个实现   主成分分析?

PCA只是中心数据集的截断奇异值分解。如果您愿意,可以直接使用numpy.linalg.svd。有关详细信息,请查看soure code of the scikit-learn implementation of PCA