def fit(self, X, y): from xgboost import XGBRegressor if not KAGGLE: from OptimizedOffsetRegressor import DigitizedOptimizedOffsetRegressor self.xgb = XGBRegressor(objective=self.objective, learning_rate=self.learning_rate, min_child_weight=self.min_child_weight, subsample=self.subsample, colsample_bytree=self.colsample_bytree, max_depth=self.max_depth, n_estimators=self.n_estimators, nthread=self.nthread, missing=0.0, seed=self.seed) from OptimizedOffsetRegressor import FullDigitizedOptimizedOffsetRegressor self.off = FullDigitizedOptimizedOffsetRegressor( n_buckets=self.n_buckets, # basinhopping=True, initial_params=self.initial_params, minimizer=self.minimizer, scoring=self.scoring) self.xgb.fit(X, y) tr_y_hat = self.xgb.predict( X, ntree_limit=self.xgb.booster().best_iteration) print('Train score is:', -self.scoring(tr_y_hat, y)) self.off.fit(tr_y_hat, y) print("Offsets:", self.off.params) return self
def __call__(self, i, te_y_hat, ytest): print('XGB[{}] Test score is:'.format(i + 1), -self.scoring(te_y_hat, ytest)) from OptimizedOffsetRegressor import FullDigitizedOptimizedOffsetRegressor off = FullDigitizedOptimizedOffsetRegressor( n_buckets=self.n_buckets, basinhopping=True, initial_params=self.initial_params, minimizer=self.minimizer, scoring=self.scoring) off.fit(te_y_hat, ytest) print("Offsets[{}]:".format(i + 1), off.params) return off