docs: def set_params(self, **params):
          """Set parameters on this object
  
          Safe setter method - attributes should not be modified directly as some
          changes are not valid.
          Valid parameters:
          - n_landmark
          - n_svd
  
          Parameters
          ----------
          params : key-value pairs of parameter name and new values
  
          Returns
          -------
          self
          """
          # update parameters
          reset_landmarks = False
          if 'n_landmark' in params and params['n_landmark'] != self.n_landmark:
              self.n_landmark = params['n_landmark']
              reset_landmarks = True
          if 'n_svd' in params and params['n_svd'] != self.n_svd:
              self.n_svd = params['n_svd']
              reset_landmarks = True
          # update superclass parameters
          super().set_params(**params)
          # reset things that changed
          if reset_landmarks:
              self._reset_landmarks()
          return self