如何找到对PCA最有贡献的特征



我正在对我的数据(约250个特征)运行PCA,并看到所有点都聚集在3个blob中。

是否有可能看到250个特征中哪一个对结果贡献最大?如果有,那是怎么回事?

(使用Scikit-learn实现)

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

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

为了得到"流入"是如何从原始空间到较小空间的向量,你也必须将它们投影出来。这是通过:

res = pca.transform(np.eye(D))
  • np.eye(n)创建n x n对角线矩阵(对角线上1,其他为0)。
  • 因此,np.eye(D)是你在原始特征空间
  • 中的特征
  • res是你的特征在低空间的投影。
有趣的是res是一个D x d矩阵,其中res[i][j]表示"有多少特性i对组件j有贡献"

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

排序,你会发现最有贡献的特性:)

不确定是否清楚,可以添加任何额外的信息。

希望这有帮助,pltrdy

相关内容

  • 没有找到相关文章

最新更新