我通常使用Pipeline 来执行此操作。您可以创建管道列表,包括 SVR 模型(以及其他如果您愿意)。然后,您可以应用GridSearchCV 将pipeline 作为您的论点。
在这里,您可以添加params_grid,其中搜索空间可以定义为pipelinename__paramname(中间有双下划线)。例如,我有管道名称svr,我想搜索参数C,我可以将我的参数字典中的键作为svr__C。
from sklearn.pipeline import Pipeline
from sklearn.model_selection import cross_val_score, GridSearchCV
from sklearn.svm import SVR
c_range = np.arange(1, 10, 1)
pipeline = Pipeline([('svr', SVR())])
params_grid = {'svr__C': c_range}
# grid search with 3-fold cross validation
gridsearch_model = GridSearchCV(pipeline, params_grid,
cv=3, scoring='neg_mean_squared_error')
然后,您可以通过拟合训练数据并找到最佳分数和参数来执行相同的过程
gridsearch_model.fit(X_train, y_train)
print(gridsearch_model.best_params_, gridsearch_model.best_score_)
您也可以使用cross_val_score来查找分数:
cross_val_score(gridsearch_model, X_train, y_train,
cv=3, scoring='neg_mean_squared_error')
希望这会有所帮助!