python - 在 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
非常感谢!
解决方案
推荐阅读
- c# - Entity Framework Core - 尝试从迁移中创建数据库,但遇到“Microsoft.Extensions.Hosting services”问题
- javascript - AngularJs 无法在 localhost 的 url 中获取带点的路由
- javascript - OMDb API 需要帮助在使用 AXIOS 进行电影搜索后获取 /results 页面
- java - ToolProvider.getSystemJavaCompiler 返回 null 但我确实安装了 JDK
- postgresql - 从文件执行 psql 查询与通过 bash 传递它
- oauth-2.0 - Microsoft Graph 的 OAuth2 客户端凭据流
- azure-data-explorer - 在 azure kusto 中将带有分隔符的列字符串拆分为单独的列
- java - Spring Boot 使用基本身份验证保护执行器端点,同时使用 Oath 保护其他端点
- javascript - 请求标头值在 Chrome 中转换为大写
- javascript - 退出全屏后地址栏不出现 - Chrome 85 Mobile