code: def prepare_input_data(self, X):
          
          X = check_array(X, force_all_finite=False)
          if X.dtype != "f" and X.dtype != "d":
              X = X.astype(float)
  
          self._check_input(X)
          missing_mask = np.isnan(X)
          self._check_missing_value_mask(missing_mask)
          return X, missing_mask
docs: Check to make sure that the input matrix and its mask of missing
          values are valid. Returns X and missing mask.