docstr: Fit method - currently unused as the counterfactual search is fully unsupervised.
  
  Parameters
  ----------
  X
      Not used. Included for consistency.
  y
      Not used. Included for consistency.
  
  Returns
  -------
  self
      Explainer itself.
docstr_tok: ["Fit","method","-","currently","unused","as","the","counterfactual","search","is","fully","unsupervised",".","Parameters","--","--","--","--","--","X","Not","used",".","Included","for","consistency",".","y","Not","used",".","Included","for","consistency",".","Returns","--","--","--","-","self","Explainer","itself","."]
code: def fit(
      self, X: np.ndarray, y: Optional[np.ndarray]
  ) -> "Counterfactual":
      """
      Fit method - currently unused as the counterfactual search is fully unsupervised.
  
      Parameters
      ----------
      X
          Not used. Included for consistency.
      y
          Not used. Included for consistency.
  
      Returns
      -------
      self
          Explainer itself.
      """
      # TODO feature ranges, epsilons and MADs
  
      self.fitted = True
      return self
  
imports: import copy
  import logging
  from typing import Callable, Optional, Tuple, Union
  import numpy
  import tensorflow.compat.v1
  from alibi.api.defaults import DEFAULT_DATA_CF, DEFAULT_META_CF
  from alibi.api.interfaces import Explainer, Explanation
  from alibi.utils.gradients import num_grad_batch
label_desc: Use image node_id 3 for calling the Counterfactual obj's underlying member method code with example usage: obj.fit(X, y) and returns: self