如何在 sklearn Pipeline 的 RobustScaler 中调整 quantile_range?
How to tune quantile_range in RobustScaler in sklearn Pipeline?
pipeline = Pipeline([
('scale', RobustScaler(quantile_range=()))
('classify', OneVsRestClassifier(SVC()))
],
memory=self.memory)
鉴于该管道,如何使用 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 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)}
pipeline = Pipeline([
('scale', RobustScaler(quantile_range=()))
('classify', OneVsRestClassifier(SVC()))
],
memory=self.memory)
鉴于该管道,如何使用 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 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)}