'Predict multi-output variable using a model
trained for each target variable.
Parameters
X : (sparse) array-like, shape (n_samples, n_features)
Data.
Returns
y : (sparse) array-like, shape (n_samples, n_outputs)
Multi-output targets predicted across multiple predictors.
Note: Separate models are generated for each predictor.'

def predict(self, X):

    check_is_fitted(self, 'estimators_')
    if (not hasattr(self.estimator, 'predict')):
        raise ValueError('The    base    estimator    should    implement    a    predict    method')
    X = check_array(X, accept_sparse=True)
    y = Parallel(n_jobs=self.n_jobs)((delayed(parallel_helper)(e, 'predict', X) for e in self.estimators_))
    return np.asarray(y).T
