code: def test_save_restore(self):
      self.model.fit_eval((self.x, self.y), [(self.val_x, self.val_y)])
  
      result_save = self.model.predict(self.val_x)
      model_file = "tmp.pkl"
      self.model.save(model_file)
      assert os.path.isfile(model_file)
      new_model = XGBoost()
      new_model.restore(model_file)
      assert new_model.model
      result_restore = new_model.predict(self.val_x)
      assert_array_almost_equal(
          result_save, result_restore, decimal=2
      ), "Prediction values are not the same after restore: " "predict before is {}, and predict after is {}".format(
          result_save, result_restore
      )
      os.remove(model_file)
  
file_path: BigDL/python/orca/test/bigdl/orca/automl/xgboost/test_xgbregressor.py
imports: from bigdl.orca.test_zoo_utils import ZooTestCase
  import numpy
  import pandas
  import os
  from numpy.testing import assert_array_almost_equal
  from bigdl.orca.automl.xgboost.XGBoost import XGBoost, XGBoostModelBuilder
  import pytest
label_desc: Use image node_id 4 for calling the TestXgbregressor obj's underlying member method code with example usage: obj.test_save_restore() without return types