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

osh*_*016 5 pca scikit-learn

我正在数据上运行PCA(约250个功能),看到所有点都聚集在3个斑点中。

是否有可能看到250个功能中哪个最有助于结果?如果是这样怎么办?

(使用Scikit-learn实现)

plt*_*rdy 5

让我们看看维基百科是怎么说的:

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

为了在较小的空间中获得来自原始空间的向量的“影响力”,您还必须对它们进行投影。这是通过以下方式完成的:

res = pca.transform(np.eye(D))
Run Code Online (Sandbox Code Playgroud)
  • np.eye(n)创建一个n x n对角矩阵(对角线上为 1,否则为 0)。
  • 因此,np.eye(D)您的特征是否在原始特征空间中
  • res 是你的特征在较低空间的投影。

有趣的是,这res是一个D x d矩阵,其中 res[i][j] 表示“对组件j贡献了多少特征”

然后,您可以对列求和以获得D x 1矩阵(称为contributiion,其中每个contribution[i]是特征i的总贡献。

对其进行排序,您会发现最有贡献的功能:)

不确定它是否清楚,可以添加任何类型的附加信息。

希望这有帮助,pltrdy