class_docstr: Base class for a dynamic classifier selection (dcs) and
     dynamic ensemble selection (des) methods.
  
  All DCS and DES techniques should inherit from this class.
  
  Warning: This class should not be used directly.
  Use derived classes instead.
code: def _IH_prediction(
      self, X, ind_disagree, predicted_proba, is_proba=False
  ):
      X_DS = X[ind_disagree, :]
      distances, region_competence = self.get_competence_region(X_DS)
      if self.with_IH:
          ind_hard, ind_easy = self._split_easy_samples(
              region_competence
          )
          distances, region_competence = self._predict_easy_samples(
              X_DS,
              distances,
              ind_disagree,
              ind_easy,
              region_competence,
              predicted_proba,
              is_proba,
          )
      else:
          # IH was not considered. So all samples go to predict with DS
          ind_hard = np.arange(ind_disagree.size)
      return distances, ind_hard, region_competence
  
imports: import functools
  import math
  import warnings
  from abc import abstractmethod, ABCMeta
  import numpy
  from scipy.stats import mode
  from sklearn.base import BaseEstimator, ClassifierMixin
  from sklearn.ensemble import BaseEnsemble, BaggingClassifier
  from sklearn.model_selection import train_test_split
  from sklearn.neighbors import KNeighborsClassifier
  from sklearn.preprocessing import LabelEncoder, normalize
  from sklearn.utils.validation import check_X_y, check_is_fitted, check_array, check_random_state
  from deslib.util import KNNE
  from deslib.util import faiss_knn_wrapper
  from deslib.util.dfp import frienemy_pruning_preprocessed
  from deslib.util.instance_hardness import hardness_region_competence
label_desc: Use image node_id 13 for calling the BaseDS obj's underlying member method code with example usage: obj._IH_prediction(X, ind_disagree, predicted_proba, is_proba) and returns: distances,  ind_hard,  region_competence