【发布时间】:2016-12-11 21:01:58
【问题描述】:
我正在使用 scikit learn 库的 Pipeline 和 GridSearchCV。
我知道例如特征选择方法可以通过FeatureUnion组合。在这种情况下,结果是串联的。我正在寻找的是一个或功能,这样网格搜索会并行执行一些事情,并且最终不会合并。
在下面的(无效)示例中,应执行 SelectKBest() + SVC() 和 VarianceThreshold() + SVC()。
pipeline = Pipeline([
[('kbest', SelectKBest()),
('variance', VarianceThreshold())],
('svm', SVC())
])
parameters = {
'kbest__k': [3, 5],
'variance__threshold': [0.1, 0.2],
'svm__C': [1],
'svm__gamma': [0.1, 0.01]
}
grid_search = GridSearchCV(pipeline, parameters)
grid_search.fit(X, y)
如果是,是否可以使用相同的功能来拥有多个估算器?
【问题讨论】:
-
我不知道答案,但解决方法是使用管道列表
pipelines = [Pipeline([cleaner, ('svm', SVC())]) for cleaner in [('kbest', SelectKBest()), ('variance', VarianceThreshold())]]。 -
@Mephy 感谢您的建议。这种情况下的缺点是您必须在每次迭代中定义一组单独的参数。
-
看看我对这个问题的回答:stackoverflow.com/questions/23045318/…
标签: python scikit-learn