首页 > 解决方案 > 在 PCA 中构成 PC1 的原始特征百分比

问题描述

我使用 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 轴将具有特征的标签。

像这样的东西: https ://i.stack.imgur.com/Hz24K.png

我正在尝试在 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 个元素)。如何检索名称并将标签放在绘图栏上?

https://i.stack.imgur.com/iFdDt.png

非常感谢!

标签: pythonplotbar-chartpcafeature-extraction

解决方案


推荐阅读