【发布时间】:2026-01-21 17:50:01
【问题描述】:
对于超参数调整,我使用 Python 包 sklearn 中的函数 GridSearchCV。我测试的一些模型需要特征缩放(例如支持向量回归 - SVR)。最近,在 Udemy 的课程Machine Learning A-Z™: Hands-On Python & R In Data Science中,讲师提到对于 SVR,目标也应该进行缩放(如果它不是二进制的)。考虑到这一点,我想知道目标是否在GridSearchCV 执行的交叉验证过程的每次迭代中也被缩放,或者是否只有特征被缩放。请参阅下面的代码,它说明了我用于对需要缩放训练集的估计器进行超参数调整的正常过程:
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVR
def SVRegressor(**kwargs):
'''contruct a pipeline to perform SVR regression'''
return make_pipeline(StandardScaler(), SVR(**kwargs))
params = {'svr__kernel': ["poly", "rbf"]}
grid_search = GridSearchCV(SVRegressor(), params)
grid_search.fit(X, y)
我知道我可以简单地扩展 X 和 y 先验,然后从管道中删除 StandardScaler。但是,我想在测试多个模型的代码管道中实现这种方法,其中一些需要缩放,而另一些不需要。这就是为什么我想知道GridSearchCV 如何在后台处理缩放。
【问题讨论】:
标签: python python-3.x scikit-learn svm gridsearchcv