在sklearn中,可以定义一个串行管道来获取管道中所有连续部分的最佳超参数组合。可以按照以下方式实现串行管道:
from sklearn.svm import SVC
from sklearn import decomposition, datasets
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
digits = datasets.load_digits()
X_train = digits.data
y_train = digits.target
#Use Principal Component Analysis to reduce dimensionality
# and improve generalization
pca = decomposition.PCA()
# Use a linear SVC
svm = SVC()
# Combine PCA and SVC to a pipeline
pipe = Pipeline(steps=[('pca', pca), ('svm', svm)])
# Check the training time for the SVC
n_components = [20, 40, 64]
params_grid = {
'svm__C': [1, 10, 100, 1000],
'svm__kernel': ['linear', 'rbf'],
'svm__gamma': [0.001, 0.0001],
'pca__n_components': n_components,
}
但是如果我想为流水线的每个步骤尝试不同的算法怎么办呢?例如,如何在以下算法中进行网格搜索:
主成分分析或奇异值分解和支持向量机或随机森林
这将需要某种第二级或“元网格搜索”,因为模型类型将是超参数之一。在sklearn中是否可能实现?
None
。 - Vivek Kumar