code: def test_save_and_load(self):
      metric = Metric({"name": "logloss"})
      params = {
          "objective": "binary:logistic",
          "eval_metric": "logloss",
          "ml_task": BINARY_CLASSIFICATION,
      }
      xgb = XgbAlgorithm(params)
      xgb.fit(self.X, self.y)
      y_predicted = xgb.predict(self.X)
      loss = metric(self.y, y_predicted)
  
      filename = os.path.join(
          tempfile.gettempdir(), os.urandom(12).hex()
      )
  
      xgb.save(filename)
  
      xgb2 = XgbAlgorithm(params)
      self.assertTrue(xgb2.model is None)
      xgb2.load(filename)
      # Finished with the file, delete it
      os.remove(filename)
  
      y_predicted = xgb2.predict(self.X)
      loss2 = metric(self.y, y_predicted)
      assert_almost_equal(loss, loss2)
  
imports: import unittest
  import tempfile
  import json
  import numpy
  import pandas
  import os
  from numpy.testing import assert_almost_equal
  from sklearn import datasets
  from supervised.algorithms.xgboost import XgbAlgorithm, additional
  from supervised.utils.metric import Metric
  from supervised.utils.constants import BINARY_CLASSIFICATION
  import tempfile
label_desc: Use image node_id 4 for calling the XgboostAlgorithmTest obj's underlying member method code with example usage: obj.test_save_and_load() without return types