gpt4 book ai didi

python - 通过 MultiOutputRegressor 进行网格搜索?

转载 作者:太空狗 更新时间:2023-10-29 20:12:04 24 4
gpt4 key购买 nike

让我们考虑一个多元回归问题(2 个响应变量:纬度和经度)。目前,支持向量回归 sklearn.svm.SVR 等一些机器学习模型实现目前不提供对多元回归的原始支持。为此,可以使用 sklearn.multioutput.MultiOutputRegressor

示例:

from sklearn.multioutput import MultiOutputRegressor
svr_multi = MultiOutputRegressor(SVR(),n_jobs=-1)

#Fit the algorithm on the data
svr_multi.fit(X_train, y_train)
y_pred= svr_multi.predict(X_test)

我的目标是通过 sklearn.model_selection.GridSearchCV 调整 SVR 的参数。理想情况下,如果响应是单个变量而不是多个变量,我将执行如下操作:

from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline

pipe_svr = (Pipeline([('scl', StandardScaler()),
('reg', SVR())]))

grid_param_svr = {
'reg__C': [0.01,0.1,1,10],
'reg__epsilon': [0.1,0.2,0.3],
'degree': [2,3,4]
}

gs_svr = (GridSearchCV(estimator=pipe_svr,
param_grid=grid_param_svr,
cv=10,
scoring = 'neg_mean_squared_error',
n_jobs = -1))

gs_svr = gs_svr.fit(X_train,y_train)

但是,由于我的响应 y_train 是二维的,因此我需要在 SVR 之上使用 MultiOutputRegressor。我如何修改以上代码以启用此GridSearchCV 操作?如果不可能,是否有更好的选择?

最佳答案

对于没有管道的使用,将 estimator__ 放在参数之前:

param_grid = {'estimator__min_samples_split':[10, 50],
'estimator__min_samples_leaf':[50, 150]}

gb = GradientBoostingRegressor()
gs = GridSearchCV(MultiOutputRegressor(gb), param_grid=param_grid)

gs.fit(X,y)

关于python - 通过 MultiOutputRegressor 进行网格搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com