当n_jobs> 1时,MultiOutputRegressor因xgboost失败

时间:2019-09-06 13:54:18

标签: python-3.x scikit-learn xgboost

我正在尝试使用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)


0 个答案:

没有答案