code: def _validate_data_dep_params(self, X):
          
          n_samples, m_features = X.shape
  
          # terms
          if self.terms is 'auto':
              # one numerical spline per feature
              self.terms = TermList(*[SplineTerm(feat, verbose=self.verbose) for feat in range(m_features)])
  
          elif self.terms is None:
              # no terms
              self.terms = TermList()
  
          else:
              # user-specified
              self.terms = TermList(self.terms, verbose=self.verbose)
  
          # add intercept
          if self.fit_intercept:
              self.terms = self.terms + Intercept()
  
          if len(self.terms) == 0:
              raise ValueError('At least 1 term must be specified')
  
          # copy over things from plural
          remove = []
          for k, v in self.__dict__.items():
              if k in self._plural:
                  setattr(self.terms, k, v)
                  remove.append(k)
          for k in remove:
              delattr(self, k)
  
          self.terms.compile(X)
docs: method to validate and prepare data-dependent parameters
  
          Parameters
          ---------
          X : array-like
              containing the input dataset
  
          Returns
          -------
          None