My suggestion is to use sklearn.multioutput.MultiOutputRegressor as a wrapper for xgb.XGBRegressor . MultiOutputRegressor trains one regressor per target and only requires the regressor to implement fit and predict , which xgboost supports.
This is perhaps the easiest way to regress multidimensional targets using xgboost, since you will not need to change any other part of your code (if you originally used the sklearn API).
However, this method does not use any possible connection between goals. But you can try to create a custom task to achieve this.
source share