GridsearchCV настраивает параметры svm как для собственного ядра, так и для простого ядра? - PullRequest
0 голосов
/ 04 июня 2019

Я обучаю SVM и хочу оптимизировать его, используя полиномиальное ядро ​​Gridsearch, ядро ​​PUK (это мое собственное ядро), rbf и линейную регрессию, и все они хотят настроить параметры, следующие за этим:

  1. Полиномиальное ядро: степень настройки
  2. PUK-ядро: настройка сигмы и омеги
  3. RBF: настройка C и гаммы
  4. Линейная: настройка C

Итак, я реализую gridsearchCV с помощью конвейера. Настройте параметры пользовательской функции ядра с конвейером в 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)

Но проблема в том, чтоданные будут проходить через функцию PUKKernel, даже если я определю svr__kernel как 'linear' или 'rbf' (Протестируйте и убедитесь, что при использовании линейного прохода ядра, а не через PUKKernel, train_score - это разница

, потому что я думаю,есть только один способ настроить собственное ядро ​​- использовать конвейер, поэтому мой вопрос - можно ли настроить собственное ядро ​​вместе с настройкой?ядро.Спасибо

...