Python Scikit学习基于树的功能选择是否保留列名称?

Python Scikit学习基于树的功能选择是否保留列名称?,python,machine-learning,scikit-learn,feature-selection,Python,Machine Learning,Scikit Learn,Feature Selection,我想选择基于树的功能。 我的数据集大约有30列,完成后大约有5列。 这对我来说很好,我的问题是,我得到的5列数据集没有保留列的名称,我无法识别它们 import pandas as pd from sklearn.ensemble import ExtraTreesClassifier from sklearn.feature_selection import SelectFromModel data = pd.read_csv(file) X = data.drop('target', 1)

我想选择基于树的功能。 我的数据集大约有30列,完成后大约有5列。 这对我来说很好,我的问题是,我得到的5列数据集没有保留列的名称,我无法识别它们

import pandas as pd
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.feature_selection import SelectFromModel

data = pd.read_csv(file)
X = data.drop('target', 1)
y = data['target']
X.shape                        #(100000, 30)
clf = ExtraTreesClassifier()
clf = clf.fit(X, y)
clf.feature_importances_  

model = SelectFromModel(clf, prefit=True)
X_new = model.transform(X)
X_new.shape                    #(100000, 5)

有人能帮我吗?

现在,当我更确定答案时,请尝试以下方法:

mask=model.get_support(index=False)#这将返回列的布尔掩码
X_new=X.loc[:,mask]#切片数据帧,保留选定列
特色列名称=X_new.columns#列名称索引

如果您只需要列名:

X.columns[model.get_support()]

尝试该功能。正如在
model.get_support(index=True)
Hello ehudk中一样,按照您的指示,我会选择原始数据集的列号。的确,它没有指明列的名称,但它是一个解决方案。我会留下一个悬而未决的问题,以防其他人想做出贡献。非常感谢你的帮助谢谢ehudk我会试试的!