我有一个由分类数据和数值数据组成的数据集,具有 124 个特征。为了降低其维度,我想删除不相关的特征。然而,为了针对特征选择算法运行数据集,我使用 get_dummies 对其进行了热编码,这将特征数量增加到 391 个。
In[16]:
X_train.columns
Out[16]:
Index([u'port_7', u'port_9', u'port_13', u'port_17', u'port_19', u'port_21',
...
u'os_cpes.1_2', u'os_cpes.1_1'], dtype='object', length=391)
Run Code Online (Sandbox Code Playgroud)
根据生成的数据,我可以通过交叉验证运行递归特征消除,如Scikit Learn 示例所示:
其产生:
鉴于识别的特征的最佳数量是 8,我如何识别特征名称?我假设我可以将它们提取到一个新的 DataFrame 中以用于分类算法?
[编辑]
在这篇文章的帮助下,我实现了以下目标:
def column_index(df, query_cols):
cols = df.columns.values
sidx = np.argsort(cols)
return sidx[np.searchsorted(cols, query_cols, sorter = sidx)]
feature_index = []
features = []
column_index(X_dev_train, X_dev_train.columns.values)
for num, i in enumerate(rfecv.get_support(), start=0):
if i == True:
feature_index.append(str(num))
for num, i in enumerate(X_dev_train.columns.values, start=0):
if str(num) in feature_index:
features.append(X_dev_train.columns.values[num]) …Run Code Online (Sandbox Code Playgroud) machine-learning feature-selection python-2.7 scikit-learn rfe