

def _boost(self, X, y, sample_weight):
    'Implement a single boost using the SAMME or SAMME.R algorithm,\n        which is modified in uBoost way'
    cumulative_score = np.zeros(len(X))
    y_signed = ((2 * y) - 1)
    for iteration in range(self.n_estimators):
        estimator = self._make_estimator()
        mask = generate_mask(len(X), self.bagging, self.random_generator)
        estimator.fit(X, y, sample_weight=(sample_weight * mask))
        if (self.algorithm == 'SAMME'):
            y_pred = estimator.predict(X)
            estimator_error = np.average((y_pred != y), weights=sample_weight)
            estimator_error = np.clip(estimator_error, 1e-06, (1.0 - 1e-06))
            estimator_weight = ((self.learning_rate * 0.5) * np.log(((1.0 - estimator_error) / estimator_error)))
            score = (estimator_weight * ((2 * y_pred) - 1))
        else:
            estimator_weight = (self.learning_rate * 0.5)
            score = (estimator_weight * self._estimator_score(estimator, X))
        sample_weight *= np.exp(((- y_signed) * score))
        sample_weight = self._normalize_weight(y, sample_weight)
        cumulative_score += score
        (uboost_multipliers, global_score_cut) = self.compute_uboost_multipliers(sample_weight, cumulative_score, y)
        sample_weight *= uboost_multipliers
        sample_weight = self._normalize_weight(y, sample_weight)
        self.score_cuts_.append(global_score_cut)
        self.estimators_.append(estimator)
        self.estimator_weights_.append(estimator_weight)
        if self.keep_debug_info:
            self.debug_dict['weights'].append(sample_weight.copy())
    if (not self.keep_debug_info):
        self.knn_indices = None

dataset/ETHPy150Open anaderi/lhcb_trigger_ml/hep_ml/uboost.py uBoostBDT._boost/original