class_docstr: The meta algorithm here takes the fairness metric as part of the input
  and returns a classifier optimized w.r.t. that fairness metric [11]_.
  
  References:
      .. [11] L. E. Celis, L. Huang, V. Keswani, and N. K. Vishnoi.
         "Classification with Fairness Constraints: A Meta-Algorithm with
         Provable Guarantees," 2018.
docstr: Learns the fair classifier.
  
  Args:
      dataset (BinaryLabelDataset): Dataset containing true labels.
  
  Returns:
      MetaFairClassifier: Returns self.
code: def fit(self, dataset):
      """Learns the fair classifier.
  
      Args:
          dataset (BinaryLabelDataset): Dataset containing true labels.
  
      Returns:
          MetaFairClassifier: Returns self.
      """
      if not self.sensitive_attr:
          self.sensitive_attr = dataset.protected_attribute_names[0]
      sens_idx = dataset.protected_attribute_names.index(
          self.sensitive_attr
      )
  
      x_train = dataset.features
      y_train = np.where(
          dataset.labels.flatten() == dataset.favorable_label, 1, -1
      )
      x_control_train = np.where(
          np.isin(
              dataset.protected_attributes[:, sens_idx],
              dataset.privileged_protected_attributes[sens_idx],
          ),
          1,
          0,
      )
  
      self.model = self.obj.getModel(
          self.tau, x_train, y_train, x_control_train, self.seed
      )
  
      return self
  
file_path: AIF360/aif360/algorithms/inprocessing/meta_fair_classifier.py
imports: import numpy
  from aif360.algorithms import Transformer
  from aif360.algorithms.inprocessing.celisMeta import FalseDiscovery
  from aif360.algorithms.inprocessing.celisMeta import StatisticalRate
label_desc: Use image node_id 2 for calling the MetaFairClassifier obj's underlying member method code with example usage: obj.fit(dataset) and returns: self