我在执行标准标量后运行了两个特征选择算法 一个是通过K Best获取信息,另一个是使用额外的树分类器来使用Select from Model获取要素重要性。
我做了一个管道。我使用Feature Union来组合kbest并从模型步骤中进行选择。当我看到最终结果时,实际上有最终模型中某些功能的副本。
回到文档,(http://scikit-learn.org/stable/modules/pipeline.html#feature-union)FeatureUnion,实际上是一个功能连接。
(FeatureUnion无法检查两个变换器是否可能产生相同的特征。当特征集不相交时,它只产生一个联合,并确保它们是调用者的责任。)
有没有办法创建一个管道结构,以便我可以获得我的信息增益选择的实际特征联合结果,然后是额外的树分类器?最简单的方法是什么,以确保我不会有重复的功能?
我正在尝试的一件事就是制作一个定制的Transfomer。
class RemoveDuplicateColumnsTransformer(TransformerMixin):
def transform(self, X, **transform_params):
X=X.loc[:,~X.columns.duplicated()]
def fit(self, X, y=None, **fit_params):
return self
但我最终得到了这个错误,因为我也使用标准标量,并且转换函数中的X被解释为ndarray而不是数据帧。所以它说没有loc属性。