【发布时间】:2017-02-10 07:02:01
【问题描述】:
在对一组数据运行 Scikit-Learn 的方差阈值后,它会删除几个特征。我觉得我在做一些简单而愚蠢的事情,但我想保留其余功能的名称。以下代码:
def VarianceThreshold_selector(data):
selector = VarianceThreshold(.5)
selector.fit(data)
selector = (pd.DataFrame(selector.transform(data)))
return selector
x = VarianceThreshold_selector(data)
print(x)
更改以下数据(这只是行的一小部分):
Survived Pclass Sex Age SibSp Parch Nonsense
0 3 1 22 1 0 0
1 1 2 38 1 0 0
1 3 2 26 0 0 0
进入这个(同样只是行的一小部分)
0 1 2 3
0 3 22.0 1 0
1 1 38.0 1 0
2 3 26.0 0 0
使用 get_support 方法,我知道它们是 Pclass、Age、Sibsp 和 Parch,所以我宁愿返回类似的东西:
Pclass Age Sibsp Parch
0 3 22.0 1 0
1 1 38.0 1 0
2 3 26.0 0 0
有没有简单的方法来做到这一点?我对 Scikit Learn 很陌生,所以我可能只是在做一些愚蠢的事情。
【问题讨论】:
-
Scikit 本身不支持带有命名列等的
pandas数据类型,所以任何时候你使用类似scikit 对象的.transform方法,你将失去所有该信息。如果您可以单独跟踪它(即,按照您的描述检索列名),您可以在重新创建新的 DataFrame 后将其传回以指定新的列名。
标签: python pandas scikit-learn output feature-selection