Как настроить quantile_range в RobustScaler в конвейере sklearn? - PullRequest
3 голосов
/ 05 марта 2020
pipeline = Pipeline([
                     ('scale', RobustScaler(quantile_range=()))
                     ('classify', OneVsRestClassifier(SVC()))
                      ],
                     memory=self.memory)

Учитывая этот конвейер, как настроить quantile_range в RobustScaler, используя GridSearchCV? Значение по умолчанию: quantile_range (25.0, 75.0). Альтернативы, которые я хочу попробовать, - это что-то вроде (5.0, 95.0), (10.0, 90.0), ..., (25.0, 75.0). Как этого добиться? Я думаю, params_grid должен выглядеть так:

params_grid = [{'scale__quantile_range': ??}]

Но я не знаю, что поместить в заполнитель вопросительного знака.

1 Ответ

3 голосов
/ 05 марта 2020

Гиперпараметры, из которых нужно пробовать, должны быть повторяемыми. Попробуйте:

from sklearn.preprocessing import RobustScaler
from sklearn.pipeline import Pipeline
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import make_classification

pipeline = Pipeline([
                     ('scale', RobustScaler(quantile_range=())),
                     ('classify', OneVsRestClassifier(SVC()))
                      ],
                     memory=None)

params = {"scale__quantile_range":[(25.0,75.0),(10.0,90.0),(1.0,99.0)]}

grid_cf = GridSearchCV(pipeline, param_grid=params)

X,y = make_classification(1000,10,n_classes=2,random_state=42)

grid_cf.fit(X,y)

grid_cf.best_params_

{'scale__quantile_range': (1.0, 99.0)}
...