Почему конвейеры используются как часть GridsearchCV, а не наоборот? - PullRequest
0 голосов
/ 06 февраля 2020

Хотя я понимаю потенциальные выгоды, особенно в сочетании с GridSearchCV, мне интересно, почему он всегда используется так (или, по крайней мере, насколько я понимаю):

Шаги конвейера устанавливается для каждого классификатора (с 'passthrough' для шага clf). Затем GridSearchCV снабжает конвейер несколькими параметрами и классификаторами.

Я не уверен, верно ли это, но с моей точки зрения кажется, что это вызывает шаги до классификатор должен запускаться несколько раз, даже если они всегда используются с одним и тем же параметром.

Это приводит меня к вопросу, почему он не используется наоборот ... или если это было бы вообще возможно?

Вот картинка ситуации в моей голове с примером конфигурации: pipe-grid vs. grid-pipe

1 Ответ

0 голосов
/ 06 февраля 2020

Сначала давайте создадим набор данных

from sklearn.datasets import make_classification
from sklearn import svm
from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV


# generate some data to play with
X, y = make_classification(n_informative=5, n_redundant=0, random_state=42)

Теперь обычным способом работы с grid_search является попытка различных параметров для всех шагов . В качестве примера давайте используем PCA и SVC.

pipe = Pipeline(steps=[('pca', PCA()), ('svm', svm.SVC())])

# Parameters of pipelines can be set using ‘__’ separated parameter names:
param_grid = {
    'pca__n_components': [5, 15, 30, 45, 64],
    'svm__C': [1, 5, 10],
}
gs = GridSearchCV(pipe, param_grid, n_jobs=-1)
gs.fit(X, y)

Однако, если вы хотите, вы можете применить предыдущие шаги к самому классификатору и выполнить только GridSearch для классификатора:

pca = PCA()
X_pca, y_pca = pca.fit_transform(X, y)

parameters = {'C':[1, 5, 10]}
svc = svm.SVC()
gs = GridSearchCV(svc, parameters)

gs.fit(X_pca, y_pca)

Проблема в том, что таким образом вы не можете проверить корреляции параметров между различными шагами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...