我正在训练SVM,并希望使用Gridsearch多项式内核,PUK内核(这是我的自定义内核),rbf和线性回归对其进行优化,所有这些都希望在此之后调整参数:
所以我使用流水线实现了gridsearchCV Tune parameters of custom kernel function with pipeline in scikit-learn 所以我的代码是这样的:
# Define Hyperparameters
tuned_parameters_svr_puk = [
{'svr__kernel': ['rbf'], 'svr__gamma': [1e-3, 1e-4], 'svr__C': [1, 10, 100]},
{'svr__kernel': ['poly'], 'svr__degree' : [2, 3, 4]},
{'svr__kernel': ['linear'], 'svr__C': [1, 10, 100]}, 'svr__C': [1, 10, 100]},
{'svr__kernel': ['precomputed'], 'puk__sigma' : [1, 2, 3], 'puk__omega' : [1, 2, 3],
'svr__C': [1, 10, 100]}]
# Define a pipeline including PUK for tuning sigma and omega
pipeline_svr_puk = Pipeline([('standardscaler', StandardScaler()), ('puk', PUKKernel()), ('svr', SVC())])
# Perform Gridsearch
clf_puk = GridSearchCV(estimator = pipeline_svr_puk, param_grid=tuned_parameters_svr_puk, refit=True, verbose=True, cv=2)
但是问题是即使我将svr__kernel定义为'linear'或'rbf',数据也将通过PUKKernel函数传递(测试并观察到使用线性内核传递而不是通过PUKKernel传递,train_score是差异< / p>
因为我认为调整自定义内核的唯一方法是使用管道。因此,我的问题是是否可以同时调整我的自定义内核和其他内核。谢谢