// Use the whole neighborhood if no sample is selected to form the region of competence
if len(selected_idx) == 0:
selected_idx = idx_neighbors
// Estimate the classifier competence for the filtered region of competence
for clf_index in range(self.n_classifiers):
// Check if the dynamic frienemy pruning (DFP) should be used used
if self.DFP_mask[clf_index]:
clf_competence = [self.processed_dsel[sample_idx][clf_index] for sample_idx in selected_idx]
competences[clf_index] = np.mean(np.array(clf_competence))
return competences
After Change
// get a mask with the neighbors that will be considered for the competence estimation for all samples.
boolean_mask = (S > self.similarity_threshold)
boolean_mask[~np.any(boolean_mask, axis=1), :] = True
// Expanding this mask to the third axis (n_classifiers) since it is the same for each classifier.
boolean_mask = np.repeat(np.expand_dims(boolean_mask, axis=2), self.n_classifiers, axis=2)
// Use the masked array mean to take into account the removed neighbors