python - 如何使用 pandas 找到每个主成分的前三个特征?
解决方案
您可以使用np.argsort
or获取排序索引np.argpartition
。按照指示的问题的程序
# With argsort
most_important = [np.argsort(np.abs(model.components_[i]))[::-1][:3] for i in range(n_pcs)]
# With argpartition
most_important = [np.argpartition(np.abs(model.components_[i]), -3)[-3:] for i in range(n_pcs)]
most_important
>>> [array([4, 1, 0]), array([2, 3, 4])]
然后将最重要的组件作为列
initial_feature_names = ['a','b','c','d','e']
# Notices the [::-1] is used to order the component names
most_important_names = [[initial_feature_names[i] for i in most_important[i][::-1]] for i in range(n_pcs)]
dic = {'PC{}'.format(i): most_important_names[i] for i in range(n_pcs)}
pd.DataFrame.from_dict(dic).T
>>>
0 1 2
PC0 e b a
PC1 c d e
推荐阅读
- json - 使用 jq 删除另一个项目后显示项目的原始列表
- vue.js - Vuetify 应用栏溢出隐藏不起作用
- python - Python关于在pandas中使用正则表达式进行整数搜索
- c++ - DT_TEXTREL 是什么意思,如何解决?
- ios - 在`../node_modules/react-native-view-pdf`中找不到`RNPDF`的podspec
- c# - C#用bat文件运行exe并通过bat文件设置变量值
- php - sqlsrv 中输出参数的长度 - 01004(数据被截断)
- javascript - “this.grades.push 不是函数”尝试将成绩添加到数组时
- python - Django中的分页问题
- bash - 从文本文件中选择值并将它们放在字符串之后