def _calculate_new_weights(self, instance_probabilites, bag_probabilities):
weights = []
for p_ij, p_i, Y_i in zip(self._bag_split(instance_probabilites),
bag_probabilities,
self._bag_labels):
if Y_i > 0:
if p_i == 0.0:
p_i = np.finfo(float).resolution
term_1 = (2 * p_ij * (1 - p_ij)) / p_i
else:
if p_i == 1.0:
p_i = 1 - np.finfo(float).resolution
term_1 = -((2 * p_ij * (1 - p_ij)) / (1 - p_i))
weights += (term_1 * self.softmax_fcn.d_dt(p_ij)).tolist()
return np.array(weights) / np.sum(np.abs(weights))
评论列表
文章目录