使用 GridSearchCV 在 CV 期间内部缩放训练数据以进行超参数优化
Internally scaling training data during CV using GridSearchCV for hyperparameter optimisation
我正在尝试使用 GridSearchCV 进行 SVM 超参数优化。假设我正在为这个函数提供训练集数据和标签(测试拆分在函数调用之前已经隔离)。
def param_search(X, y):
Cs = 10. ** np.arange(-3, 4)
gammas = 10. ** np.arange(-3, 3)
rbf_grid = {'clf__C':Cs, 'clf__gamma':gammas, 'clf__kernel':['rbf'],
'clf__class_weight':['balanced']}
lin_grid = {'clf__C':Cs, 'clf__kernel':['linear'],
'clf__class_weight':['balanced']}
pipe = Pipeline([('scaler', StandardScaler()), ('clf', svm.SVC())])
grid_search = GridSearchCV(pipe, param_grid=[rbf_grid, lin_grid],
cv=StratifiedKFold(n_splits=5, shuffle=True), verbose=2, n_jobs=-1)
grid_search.fit(X,y)
return grid_search.best_params_
我希望 GridSearchCV 评估每个 CV 拆分,其中数据由为该特定拆分计算的训练缩放。当前是否为每组参数调用 StandardScaler() 函数 5 次(这是我想要的)?或者仅在第一次调用 GridSearchCV 时调用一次。
简短回答:是的,它确实适合每组参数的 Standard Scaler
5 次。基本上,整个流水线每次分割和每次参数选择都安装一次,然后进行评估。
我正在尝试使用 GridSearchCV 进行 SVM 超参数优化。假设我正在为这个函数提供训练集数据和标签(测试拆分在函数调用之前已经隔离)。
def param_search(X, y):
Cs = 10. ** np.arange(-3, 4)
gammas = 10. ** np.arange(-3, 3)
rbf_grid = {'clf__C':Cs, 'clf__gamma':gammas, 'clf__kernel':['rbf'],
'clf__class_weight':['balanced']}
lin_grid = {'clf__C':Cs, 'clf__kernel':['linear'],
'clf__class_weight':['balanced']}
pipe = Pipeline([('scaler', StandardScaler()), ('clf', svm.SVC())])
grid_search = GridSearchCV(pipe, param_grid=[rbf_grid, lin_grid],
cv=StratifiedKFold(n_splits=5, shuffle=True), verbose=2, n_jobs=-1)
grid_search.fit(X,y)
return grid_search.best_params_
我希望 GridSearchCV 评估每个 CV 拆分,其中数据由为该特定拆分计算的训练缩放。当前是否为每组参数调用 StandardScaler() 函数 5 次(这是我想要的)?或者仅在第一次调用 GridSearchCV 时调用一次。
简短回答:是的,它确实适合每组参数的 Standard Scaler
5 次。基本上,整个流水线每次分割和每次参数选择都安装一次,然后进行评估。