code: def fit_transform(self, input_df, normalize=True):
          
          # Shallow copy the dataframe (we'll be making changes to some columns)
          _df = input_df.copy(deep=False)
  
          # Set class variables that will be used both now and later for transform
          self.normalize = normalize
  
          # Convert columns that are probably categorical
          self.convert_to_categorical(_df)
  
          # First check for columns that are explicitly categorical
          self.cat_columns = _df.select_dtypes(include=['category']).columns.tolist()
  
          # Remove any columns that aren't bool/int/float/category
          _df = _df.select_dtypes(include=['bool', 'int', 'float', 'category'])
  
          # Normalize any numeric columns if normalize specified
          if self.normalize:
              for column in list(_df.select_dtypes(include=[np.number]).columns.values):
                  print('Normalizing column {:s}...'.format(column))
                  _df[column], _min, _max = self._normalize_series(_df[column])
                  self.norm_map[column] = (_min, _max)
  
          # Now that categorical columns are setup call the dummy_encoder
          return self.dummy_encoder.fit_transform(_df)
docs: Convert the dataframe to a matrix (numpy ndarray)
          Args:
              input_df (dataframe): The dataframe to convert
              normalize (bool): Boolean flag to normalize numeric columns (default=True)