class_docstr: A meta-estimator which wraps a given estimator with a reweighing
  preprocessing step.
  
  This is necessary for use in a Pipeline, etc.
  
  Attributes:
      estimator_ (sklearn.BaseEstimator): The fitted underlying estimator.
      reweigher_: The fitted underlying reweigher.
      classes_ (array, shape (n_classes,)): Class labels from `estimator_`.
class_docstr_tok: ["A","meta-estimator","which","wraps","a","given","estimator","with","a","reweighing","preprocessing","step",".","This","is","necessary","for","use","in","a","Pipeline",",","etc",".","Attributes",":","estimator_","(","sklearn.BaseEstimator",")",":","The","fitted","underlying","estimator",".","reweigher_",":","The","fitted","underlying","reweigher",".","classes_","(","array",",","shape","(","n_classes",",",")",")",":","Class","labels","from","`","estimator_","`","."]
docstr: Performs ``self.reweigher_.fit_transform(X, y, sample_weight)`` and
  then ``self.estimator_.fit(X, y, sample_weight)`` using the reweighed
  samples.
  
  Args:
      X (pandas.DataFrame): Training samples.
      y (array-like): Training labels.
      sample_weight (array-like, optional): Sample weights.
  
  Returns:
      self
docstr_tok: ["Performs","``","self.reweigher_.fit_transform","(","X",",","y",",","sample_weight",")","``","and","then","``","self.estimator_.fit","(","X",",","y",",","sample_weight",")","``","using","the","reweighed","samples",".","Args",":","X","(","pandas.DataFrame",")",":","Training","samples",".","y","(","array-like",")",":","Training","labels",".","sample_weight","(","array-like",",","optional",")",":","Sample","weights",".","Returns",":","self"]
code: def fit(self, X, y, sample_weight=None):
      """Performs ``self.reweigher_.fit_transform(X, y, sample_weight)`` and
      then ``self.estimator_.fit(X, y, sample_weight)`` using the reweighed
      samples.
  
      Args:
          X (pandas.DataFrame): Training samples.
          y (array-like): Training labels.
          sample_weight (array-like, optional): Sample weights.
  
      Returns:
          self
      """
      if not has_fit_parameter(self.estimator, "sample_weight"):
          raise TypeError(
              "`estimator` (type: {}) does not have fit parameter"
              " `sample_weight`.".format(type(self.estimator))
          )
  
      if self.reweigher is None:
          self.reweigher_ = Reweighing()
      else:
          self.reweigher_ = clone(self.reweigher)
      self.estimator_ = clone(self.estimator)
  
      X, sample_weight = self.reweigher_.fit_transform(
          X, y, sample_weight=sample_weight
      )
      self.estimator_.fit(X, y, sample_weight=sample_weight)
      return self
  
imports: import numpy
  from sklearn.base import BaseEstimator, MetaEstimatorMixin, clone
  from sklearn.utils.metaestimators import if_delegate_has_method
  from sklearn.utils.validation import has_fit_parameter
  from aif360.sklearn.utils import check_inputs, check_groups
label_desc: Use image node_id 4 for calling the ReweighingMeta obj's underlying member method code with example usage: obj.fit(X, y, sample_weight) and returns: self