我正在使用scikit学习库的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)
如果是,是否可以将相同的功能用于多个估算器?
这里是操作方法:
[None]
即可跳过。一个工作示例:
from sklearn.feature_selection import VarianceThreshold
from sklearn.svm import SVC
from sklearn.datasets import load_iris
pipeline = Pipeline([
('kbest', SelectKBest()),
('variance', VarianceThreshold()),
('svm', SVC())
])
iris = load_iris()
X = iris.data
y = iris.target
parameters = [
{
'variance': [None],
'kbest__k': [1, 2],
'svm__C': [1],
'svm__gamma': [0.1, 0.01]
},
{
'kbest': [None],
'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)