code: def fit_transform(self, X, y=None, **fit_params):
      """Fit to data, then transform it.
  
      Fits transformer to ``X`` and ``y`` with optional parameters
      ``fit_params``, and returns a transformed version of ``X``.
  
      Parameters
      ----------
      X : array, shape (n_samples, n_features)
          Training set.
      y : array, shape (n_samples,)
          Target values or class labels.
      **fit_params : dict
          Additional fitting parameters passed to the ``fit`` method..
  
      Returns
      -------
      X_new : array, shape (n_samples, n_features_new)
          Transformed array.
      """
      # non-optimized default implementation; override when a better
      # method is possible for a given clustering algorithm
      if y is None:
          # fit method of arity 1 (unsupervised transformation)
          return self.fit(X, **fit_params).transform(X)
      else:
          # fit method of arity 2 (supervised transformation)
          return self.fit(X, y, **fit_params).transform(X)
  
label_desc: Use image node_id 1 for calling the TransformerMixin obj's underlying member method code with example usage: obj.fit_transform(X, y) and returns: self, self