2016-08-05 53 views
1

我正在使用scikit学习库的Pipeline和GridSearchCV。Scikit学习管道中是否存在“Or”功能

我知道,例如功能选择方法可以合并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) 

如果是,是否可以使用相同的功能有多个估计器?

+1

我不知道答案一个解决办法是用管道,管道'的列表来解决,但= [['kbest',SelectKBest()),('variance',VarianceThreshold())]]中的清洁程序的[Pipeline([cleaner,('svm',SVC())]]''。 – Mephy

+0

@Mephy谢谢你的建议。在这种情况下的缺点是你必须在每次迭代中定义一组独立的参数。 –

+0

看看我对这个问题的回答:http://stackoverflow.com/questions/23045318/scikit-grid-search-over-multiple-classifiers-python/34003326#34003326 – Stergios

回答