class_docstr: k-Nearest Output Profiles (KNOP).
  
  This method selects all classifiers that correctly classified at least
  one sample belonging to the region of competence of the query sample.
  In this case, the region of competence is estimated using the decisions
  of the base classifier (output profiles). Thus, the similarity between
  the query and the validation samples are measured in the decision space
  rather than the feature space. Each selected classifier has a number of
  votes equals to the number of samples in the region of competence that
  it predicts the correct label. The votes obtained by all
  base classifiers are aggregated to obtain the final ensemble decision.
  
  Parameters
  ----------
   pool_classifiers : list of classifiers (Default = None)
      The generated_pool of classifiers trained for the corresponding
      classification problem. Each base classifiers should support the method
      "predict". If None, then the pool of classifiers is a bagging
      classifier.
  
  k : int (Default = 7)
      Number of neighbors used to estimate the competence of the base
      classifiers.
  
  DFP : Boolean (Default = False)
      Determines if the dynamic frienemy pruning is applied.
  
  with_IH : Boolean (Default = False)
      Whether the hardness level of the region of competence is used to
      decide between using the DS algorithm or the KNN for classification of
      a given query sample.
  
  safe_k : int (default = None)
      The size of the indecision region.
  
  IH_rate : float (default = 0.3)
      Hardness threshold. If the hardness level of the competence region is
      lower than the IH_rate the KNN classifier is used. Otherwise, the DS
      algorithm is used for classification.
  
  random_state : int, RandomState instance or None, optional (default=None)
      If int, random_state is the seed used by the random number generator;
      If RandomState instance, random_state is the random number generator;
      If None, the random number generator is the RandomState instance used
      by `np.random`.
  
  knn_classifier : {'knn', 'faiss', None} (Default = 'knn')
       The algorithm used to estimate the region of competence:
  
       - 'knn' will use :class:`KNeighborsClassifier` from sklearn
        :class:`KNNE` available on `deslib.utils.knne`
  
       - 'faiss' will use Facebook's Faiss similarity search through the
         class :class:`FaissKNNClassifier`
  
       - None, will use sklearn :class:`KNeighborsClassifier`.
  
  knne : bool (Default=False)
      Whether to use K-Nearest Neighbor Equality (KNNE) for the region
      of competence estimation.
  
  DSEL_perc : float (Default = 0.5)
      Percentage of the input data used to fit DSEL.
      Note: This parameter is only used if the pool of classifier is None or
      unfitted.
  
  voting : {'hard', 'soft'}, default='hard'
          If 'hard', uses predicted class labels for majority rule voting.
          Else if 'soft', predicts the class label based on the argmax of
          the sums of the predicted probabilities, which is recommended for
          an ensemble of well-calibrated classifiers.
  
  n_jobs : int, default=-1
      The number of parallel jobs to run. None means 1 unless in
      a joblib.parallel_backend context. -1 means using all processors.
      Doesn’t affect fit method.
  
  References
  ----------
  Cavalin, Paulo R., Robert Sabourin, and Ching Y. Suen.
  "LoGID: An adaptive framework combining local and global
  incremental learning for dynamic selection of ensembles of HMMs."
  Pattern Recognition 45.9 (2012): 3544-3556.
  
  Cavalin, Paulo R., Robert Sabourin, and Ching Y. Suen.
  "Dynamic selection approaches for multiple classifier
  systems." Neural Computing and Applications 22.3-4 (2013): 673-688.
  
  Ko, Albert HR, Robert Sabourin, and Alceu Souza Britto Jr.
  "From dynamic classifier selection to dynamic ensemble
  selection." Pattern Recognition 41.5 (2008): 1718-1731.
  
  Britto, Alceu S., Robert Sabourin, and Luiz ES Oliveira. "Dynamic selection
  of classifiers—a comprehensive review."
  Pattern Recognition 47.11 (2014): 3665-3680
  
  R. M. O. Cruz, R. Sabourin, and G. D. Cavalcanti, “Dynamic classifier
  selection: Recent advances and perspectives,”
  Information Fusion, vol. 41, pp. 195 – 216, 2018.
docstr: Fit the set of output profiles.
  
  Parameters
  ----------
  X_op : array of shape (n_samples, n_features)
      Output profiles of the training data. n_features is equals
      to (n_classifiers x n_classes).
  
  y_op : array of shape (n_samples)
         Class labels of each sample in X_op.
  
  k : int
      Number of output profiles used in the region of competence
      estimation.
docstr_tok: ["Fit","the","set","of","output","profiles",".","Parameters","--","--","--","--","--","X_op",":","array","of","shape","(","n_samples",",","n_features",")","Output","profiles","of","the","training","data",".","n_features","is","equals","to","(","n_classifiers","x","n_classes",")",".","y_op",":","array","of","shape","(","n_samples",")","Class","labels","of","each","sample","in","X_op",".","k",":","int","Number","of","output","profiles","used","in","the","region","of","competence","estimation","."]
code: def _fit_OP(self, X_op, y_op, k):
      """Fit the set of output profiles.
  
      Parameters
      ----------
      X_op : array of shape (n_samples, n_features)
          Output profiles of the training data. n_features is equals
          to (n_classifiers x n_classes).
  
      y_op : array of shape (n_samples)
             Class labels of each sample in X_op.
  
      k : int
          Number of output profiles used in the region of competence
          estimation.
  
      """
      self.op_knn_ = self.knn_class_(k)
  
      if self.n_classes_ == 2:
          # Get only the scores for one class since they are complementary
          X_temp = X_op[:, ::2]
          self.op_knn_.fit(X_temp, y_op)
      else:
          self.op_knn_.fit(X_op, y_op)
  
file_path: DESlib/deslib/des/knop.py
imports: import numpy
  from deslib.des.base import BaseDES
label_desc: Use image node_id 3 for calling the KNOP obj's underlying member method code with example usage: obj._fit_OP(X_op, y_op, k) without return types