我正在对我的数据(约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