【发布时间】:2019-04-09 03:50:54
【问题描述】:
我使用 PCA 找到了 60 台 PC:
N_comp=60
from sklearn.decomposition import PCA
pca = PCA(n_components = N_comp)
X_pca=pca.fit_transform(X_scale) #lower dimension data
eigenvalues=pca.components_
现在,我正在尝试找出我的特征(X 数据的列)对 PC1 和 PC2 的贡献。例如,对于 PC1,我想显示前 10 个特征中每个特征的百分比的条形图,其中 x 轴将具有特征的标签。
我正在尝试在 python 中执行此操作,但不知道如何找到功能名称。例如,我所做的是排序以查找构成 PC1 的前 10 个特征变量:
N_elements=10
PC1=abs(eigenvalues[1,:])
PC1.sort(axis=0)
PC1=PC1[::-1]
PC1=PC1[0:N_elements]
PC1
结果
array([0.17040832, 0.16937861, 0.1683676 , 0.16544657, 0.16491703,
0.16491679, 0.16168056, 0.16108829, 0.16034576, 0.16029183])
并绘制它:
plt.bar(range(N_elements), PC1, alpha=0.3, align='center')
plt.title('Contributions of variables to PC1')
但这会导致 X 轴只有数字 0 到 9(对应于 10 个元素)。如何检索名称并在绘图栏上放置标签?
非常感谢!
【问题讨论】:
-
您提供的链接提供了一个明确的公式,如何计算变量对主成分的百分比贡献。你为什么不实现这个?
-
您似乎特别想要
fviz_contrib函数。您链接到的页面似乎为如何应用它提供了一个很好的指南,如果您遇到特定问题,您应该详细说明您实际尝试过的内容以及遇到的问题。 -
这是一个与您最初提出的问题完全不同的问题(它有一个
r编码标签,因此下面给出了答案)。在 3 小时不活动后并在收到 SO 用户对您原始问题的回答后完全更改问题是非常糟糕的形式。它显示了对一般 SO 发布指南的无视和对 SO 社区的不尊重。我投票反对重新开放这个问题。相反,应该删除该问题,并且 OP 应该考虑提出一个新问题。
标签: python plot bar-chart pca feature-extraction