如何找到PCA最有贡献的功能?

时间:2016-10-27 23:45:35

标签: scikit-learn pca

我在我的数据上运行PCA(~250个功能)并且看到所有点都聚集在3个blob中。

是否有可能看到250项功能中哪一项对结果的贡献最大?如果是这样的话?

(使用Scikit-learn实现)

1 个答案:

答案 0 :(得分:3)

让我们看看维基百科说的内容:

  

PCA在数学上被定义为正交线性变换,它将数据转换为新坐标系统,使得数据投影的最大方差位于第一个坐标上(称为第一个坐标)主成分),第二个坐标上的第二个最大方差,依此类推。

了解'如何影响'是原始空间中的矢量,在较小的一个中你也需要投影它们。这是通过以下方式完成的:

res = pca.transform(np.eye(D))
  • np.eye(n)创建一个n x n对角矩阵(一个在对角线上,否则为0)。
  • 因此,np.eye(D)是原始特征空间中的功能
  • res是您在下部空间的功能投影。

有趣的是,res是一个D x d矩阵,其中res [i] [j]表示" i 有多少功能>Ĵ"

然后,您可以只对列进行求和以得到D x 1矩阵(称之为 contributiion ,其中每个contribution[i]是要素的总贡献 i

对它进行排序,您会找到最有贡献的功能:)

不确定是否明确,可以添加任何其他信息。

希望这有帮助, pltrdy