插补后知道特征名称

2024-04-27 03:23:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我在pandas数据帧(X)上运行sk-learn分类器。由于缺少一些数据,我使用sk learn的插补器如下:

imp=Imputer(strategy='mean',axis=0)
X=imp.fit_transform(X)

但是,这样做之后,我的特征数量减少了,大概是因为填充器只获得空列的rid。在

这很好,只是填充器将我的数据帧转换为numpy ndarray,因此我丢失了列/特性名。稍后我需要它们来识别重要特性(使用clf.feature_importances_)。在

如何知道中功能的名称clf.特性重要性_,如果输入程序删除了我的初始数据帧的某些列?在


Tags: 数据pandas分类器transform特征特性meanlearn
2条回答

您可以这样做:

invalid_mask = np.isnan(imp.statistics_)
valid_mask = np.logical_not(invalid_mask)
valid_idx, = np.where(valid_mask)

现在您有了有效列的旧索引(这些列在矩阵X中的索引)。您可以通过这些索引从旧X的特性名称列表中获取特性名称

这比它应该做的更困难。答案是SimpleImputer应该得到一个参数add_indicator=True。然后,试穿后,简单_输入指示器获取该类型的另一个转换器的值sklearn.impute.MissingIndicator公司. 这又将有一个变量features_u,其中包含这些特性。在

大致如下:

simple_imputer = SimpleImputer(add_indicator=True)
simple_imputer.fit(X)
print(simple_imputer.indicator_.features_)

我在SimpleImputer上实现了一个瘦包装器,名为SimpleImputerWithFeatureNames,它为您提供特性名称。它在github上提供。在

^{pr2}$

相关问题 更多 >