【问题标题】:Getting the features names form selectKbest从 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... 

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

【问题讨论】:

    标签: python numpy scikit-learn nlp feature-selection


    【解决方案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')

    【讨论】:

    • 谢谢。我已经完成了这个项目,我使用了不同的路线。但是,这对未来也很有帮助。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2017-12-13
    • 2017-06-03
    • 2016-08-18
    • 2017-11-21
    • 2020-04-08
    相关资源
    最近更新 更多