docstr: Fit the imputer and then transform input `X`
  
  Note: all imputations should have a `fit_transform` method,
  but only some (like IterativeImputer in sklearn) also support inductive
  mode using `fit` or `fit_transform` on `X_train` and then `transform`
  on new `X_test`.
docstr_tok: ["Fit","the","imputer","and","then","transform","input","`","X","`","Note",":","all","imputations","should","have","a","`","fit_transform","`","method",",","but","only","some","(","like","IterativeImputer","in","sklearn",")","also","support","inductive","mode","using","`","fit","`","or","`","fit_transform","`","on","`","X_train","`","and","then","`","transform","`","on","new","`","X_test","`","."]
code: def fit_transform(self, X, y=None):
      """
      Fit the imputer and then transform input `X`
  
      Note: all imputations should have a `fit_transform` method,
      but only some (like IterativeImputer in sklearn) also support inductive
      mode using `fit` or `fit_transform` on `X_train` and then `transform`
      on new `X_test`.
      """
      X_original, missing_mask = self.prepare_input_data(X)
      observed_mask = ~missing_mask
      X = X_original.copy()
      if self.normalizer is not None:
          X = self.normalizer.fit_transform(X)
      X_filled = self.fill(X, missing_mask, inplace=True)
      if not isinstance(X_filled, np.ndarray):
          raise TypeError(
              "Expected %s.fill() to return NumPy array but got %s"
              % (self.__class__.__name__, type(X_filled))
          )
  
      X_result = self.solve(X_filled, missing_mask)
      if not isinstance(X_result, np.ndarray):
          raise TypeError(
              "Expected %s.solve() to return NumPy array but got %s"
              % (self.__class__.__name__, type(X_result))
          )
  
      X_result = self.project_result(X=X_result)
      X_result[observed_mask] = X_original[observed_mask]
      return X_result
  
file_path: fancyimpute/fancyimpute/solver.py
imports: import warnings
  import numpy
  from sklearn.utils import check_array
  from .common import generate_random_column_samples
label_desc: Use image node_id 12 for calling the Solver obj's underlying member method code with example usage: obj.fit_transform(X, y) and returns: X_result