从 selectKbest 获取特征名称
Getting the features names form selectKbest
我使用 Scikit 学习了 selectKbest
到 select 最好的特征,其中 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
它时,它只给我数字,但我需要 selected 功能的名称以便以后使用它们。
我尝试了 X_new.dtype.names
之类的东西,但我没有得到任何回报,我尝试将 X_new
转换为数据框,但我得到的唯一列名是
1, 2, 3, 4...
那么有没有办法知道 selected 特征的名称是什么?
这里是你如何做到的,使用 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()]
您可以使用 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(['feaure 5', 'feaure 6', 'feaure 13', 'feaure 19', 'feaure 20',
'feaure 21', 'feaure 26', 'feaure 28', 'feaure 30', 'feaure 33',
'feaure 34', 'feaure 41', 'feaure 42', 'feaure 43', 'feaure 44',
'feaure 46', 'feaure 54', 'feaure 58', 'feaure 61', 'feaure 62'],
dtype='object')
我使用 Scikit 学习了 selectKbest
到 select 最好的特征,其中 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
它时,它只给我数字,但我需要 selected 功能的名称以便以后使用它们。
我尝试了 X_new.dtype.names
之类的东西,但我没有得到任何回报,我尝试将 X_new
转换为数据框,但我得到的唯一列名是
1, 2, 3, 4...
那么有没有办法知道 selected 特征的名称是什么?
这里是你如何做到的,使用 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()]
您可以使用 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(['feaure 5', 'feaure 6', 'feaure 13', 'feaure 19', 'feaure 20', 'feaure 21', 'feaure 26', 'feaure 28', 'feaure 30', 'feaure 33', 'feaure 34', 'feaure 41', 'feaure 42', 'feaure 43', 'feaure 44', 'feaure 46', 'feaure 54', 'feaure 58', 'feaure 61', 'feaure 62'], dtype='object')