code: def save_model(self, filename, num_iteration=None, start_iteration=0):
          
          if num_iteration is None:
              num_iteration = self.best_iteration
          _safe_call(_LIB.LGBM_BoosterSaveModel(
              self.handle,
              ctypes.c_int(start_iteration),
              ctypes.c_int(num_iteration),
              c_str(filename)))
          _dump_pandas_categorical(self.pandas_categorical, filename)
          return self
docs: Save Booster to file.
  
          Parameters
          ----------
          filename : string
              Filename to save Booster.
          num_iteration : int or None, optional (default=None)
              Index of the iteration that should be saved.
              If None, if the best iteration exists, it is saved; otherwise, all iterations are saved.
              If <= 0, all iterations are saved.
          start_iteration : int, optional (default=0)
              Start index of the iteration that should be saved.
  
          Returns
          -------
          self : Booster
              Returns self.