'How to write a custom wrapper for a prediction function in xgboost or other estimators

So I want to manipulate the result of my prediction and I need to do it within the estimator. I tried to write a wrapper like this, but my kernel just dies when I execute the predict function. From my understanding this should just replace the predict function in xgboost right?

from xgboost import XGBRegressor as xgb


class custXGB(xgb):

   def predict(self, X, y=None):
        return self.predict(X)

I then fit the clas normally but when I use predict the kernel dies without error:

estimator = custXGB()
estimator.fit(X_train, y_train)
# works fine

estimator.predict(X_train)
#kernel dies


Solution 1:[1]

You've written an infinite loop: your predict is calling itself, not the XGBRegressor.predict. Replace self with super() inside the method.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ben Reiniger