pipeline = Pipeline([ ('scale', RobustScaler(quantile_range=())) ('classify', OneVsRestClassifier(SVC())) ], memory=self.memory)
对于给定的pipeline,如何使用GridSearchCV
来调整RobustScaler
中的quantile_range?默认的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': ??}]
但我不知道该在问号处填写什么。
回答:
要尝试的超参数应该是一个可迭代对象。试试这样:
from sklearn.preprocessing import RobustScalerfrom sklearn.pipeline import Pipelinefrom sklearn.multiclass import OneVsRestClassifierfrom sklearn.svm import SVCfrom sklearn.model_selection import GridSearchCVfrom sklearn.datasets import make_classificationpipeline = 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)}