python - 从 selectKbest 获取特征名称

标签 python numpy scikit-learn nlp feature-selection

我使用 Scikit learn selectKbest 选择最佳特征,从 900 个特征中选择大约 500 个。如下,其中 d 是所有特征的数据框。

from sklearn.feature_selection import SelectKBest, chi2, f_classif
X_new = SelectKBest(chi2, k=491).fit_transform(d, label_vs)

当我现在打印X_new时,它只给我数字,但我需要所选功能的名称以便稍后使用它们。

我尝试了诸如X_new.dtype.names之类的东西,但我没有得到任何结果,我尝试将X_new转换为数据框,但我得到的唯一列名称是

1, 2, 3, 4... 

有没有办法知道所选功能的名称是什么?

最佳答案

以下是使用 get_support() 的方法:

chY = SelectKBest(chi2, k=491)
X_new = chY.fit_transform(d, label_vs)
column_names = [column[0]  for column in zip(d.columns,chY.get_support()) if column[1]]

从@AI_Learning的答案中,您可以通过以下方式获取列名称:

column_names = d.columns[chY.get_support()]

关于python - 从 selectKbest 获取特征名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54560611/

相关文章:

Python BS4 不支持的格式 : White space in attribute selector

python - 对具有滞后的列求和的最快方法

python - Gitlab CI/CD 在 "Cleaning up project directory and file based variables"和 "ERROR: Job failed: exit code 1"时失败

python - 如何使用Python在满足两个条件的数组中查找值

python - 创建张量的欧式距离矩阵

python - "feature_importances_"在 Scikit-learn 的 RandomForestRegressor 中是如何排序的

python - sklearn.svm.SVC 没有给出稀疏数据集的支持向量索引?

python - 在 Scikit 学习中处理被动攻击在线学习中的类(class)不平衡

python - 基于另一列在 pandas 数据框中创建一列

python - 将 float64 列转换为日期时间 pandas 时出错