【发布时间】:2017-09-17 20:55:44
【问题描述】:
让我们考虑一个多元回归问题(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 操作?如果不可能,有没有更好的选择?
【问题讨论】:
标签: python machine-learning scikit-learn regression