Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _full_fit_single(self, choice, X, a, r):
yclass, this_choice = self._filter_arm_data(X, a, r, choice)
n_pos = yclass.sum()
if self.smooth is not None:
self.counters[0, choice] += yclass.shape[0]
if (n_pos < self.thr) or ((yclass.shape[0] - n_pos) < self.thr):
if not self.force_fit:
self.algos[choice] = _BetaPredictor(self.alpha + n_pos, self.beta + yclass.shape[0] - n_pos)
return None
if n_pos == 0:
if not self.force_fit:
self.algos[choice] = _ZeroPredictor()
return None
if n_pos == yclass.shape[0]:
if not self.force_fit:
self.algos[choice] = _OnePredictor()
return None
xclass = X[this_choice, :]
self.algos[choice].fit(xclass, yclass)
if self.force_counters or (self.thr > 0 and not self.force_fit):
self._update_beta_counters(yclass, choice)
r_node = r[obs_take]
p_node = p[obs_take]
r_more_onehalf = r_node >= .5
y = ( np.in1d(a_node, self.tree.node_comparisons[classif][2]) ).astype('uint8')
y_node = y.copy()
y_node[r_more_onehalf] = 1 - y[r_more_onehalf]
w_node = (.5 - r_node) / p_node
w_node[r_more_onehalf] = ( (r_node - .5) / p_node )[r_more_onehalf]
w_node = w_node * w_node.shape[0] / np.sum(w_node)
if y_node.shape[0] == 0:
self._oracles[classif] = _RandomPredictor()
elif y_node.sum() == y_node.shape[0]:
self._oracles[classif] = _OnePredictor()
elif y_node.sum() == 0:
self._oracles[classif] = _ZeroPredictor()
else:
self._oracles[classif].fit(X_node, y_node, sample_weight = w_node)
def _fit_single(self, sample, ix_take_all, X, y):
ix_take = ix_take_all[:, sample]
xsample = X[ix_take, :]
ysample = y[ix_take]
nclass = ysample.sum()
if not self.partialfit:
if nclass == ysample.shape[0]:
self.bs_algos[sample] = _OnePredictor()
return None
elif nclass == 0:
self.bs_algos[sample] = _ZeroPredictor()
return None
self.bs_algos[sample].fit(xsample, ysample)