从 selectKbest 中获取特征名称
Posted
技术标签:
【中文标题】从 selectKbest 中获取特征名称【英文标题】:Getting the features names form selectKbest 【发布时间】:2019-06-30 19:38:44 【问题描述】:我使用 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...
那么有没有办法知道所选功能的名称是什么?
【问题讨论】:
【参考方案1】:你可以这样做,使用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()]
【讨论】:
谢谢。我已经完成了这个项目,我使用了不同的路线。但是,这对未来也很有帮助。谢谢。【参考方案2】:您可以使用 feature_selection 的 .get_support()
参数从初始数据框中获取功能名称。
feature_selector = SelectKBest(chi2, k=491)
d.columns[feature_selector.get_support()]
工作示例:
from sklearn.datasets import load_digits
import pandas as pd
from sklearn.feature_selection import SelectKBest, chi2
X, y = load_digits(return_X_y=True)
df = pd.DataFrame(X, columns= ['feaure %s'%i for i in range(X.shape[1])])
feature_selector = SelectKBest(chi2, k=20)
X_new = feature_selector.fit_transform(df, y)
X_new.shape
df.columns[feature_selector.get_support()]
输出:
Index(['功能 5', '功能 6', '功能 13', '功能 19', '功能 20', “第 21 条”、“第 26 条”、“第 28 条”、“第 30 条”、“第 33 条”、 '特征 34', '特征 41', '特征 42', '特征 43', '特征 44', '功能 46', '功能 54', '功能 58', '功能 61', '功能 62'], dtype='object')
【讨论】:
谢谢。我已经完成了这个项目,我使用了不同的路线。但是,这对未来也很有帮助。谢谢。以上是关于从 selectKbest 中获取特征名称的主要内容,如果未能解决你的问题,请参考以下文章