我正在尝试使用sklearn
的{{1}}函数和MultiOutputRegressor
模型进行多输出回归。拟合有效,但是由于某些原因,仅当我将xgboost
用于n_jobs=1
时,预测输出才是合理的-与MultiOutputRegressor
一起使用时,只能预测恒定值。
以前,我使用过n_jobs>1
安装的xgboost-0.90
,现在使用的是conda-forge
版本的表单源(https://xgboost.readthedocs.io/en/latest/build.html)。 1.00
版本运作良好,自0.90
开始出现问题。
有什么办法解决这个问题吗?
v1.00
n_jobs = 1:
import numpy as np
from sklearn.multioutput import MultiOutputRegressor
import xgboost as xgb
x = np.random.rand(12,10)
y = np.random.rand(12,3)+100
n_jobs = 1
rgr = xgb.XGBRegressor(
booster='gblinear',
objective='reg:squarederror',
n_estimators=100)
multioutput = MultiOutputRegressor(rgr, n_jobs=n_jobs).fit(x, y)
multioutput.predict(x)
n_jobs = 2:
>>> multioutput.predict(x)
array([[84.46273 , 84.4255 , 84.5214 ],
[84.95241 , 84.909035, 85.04182 ],
[96.078 , 96.03768 , 96.17616 ],
[72.33289 , 72.32404 , 72.37487 ],
[72.982155, 72.94028 , 73.02294 ],
[76.88867 , 76.84336 , 76.974174],
[76.516945, 76.48126 , 76.61068 ],
[90.373566, 90.33686 , 90.43558 ],
[92.87528 , 92.848175, 92.957275],
[84.76429 , 84.72621 , 84.85416 ],
[89.49434 , 89.44217 , 89.580185],
[85.65462 , 85.61776 , 85.72171 ]], dtype=float32)