class_docstr: Some common functionality for all Euclidean tests. 
docstr: This tests for the marginal likelihood. GP2 is expected to do better. 
docstr_tok: ["This","tests","for","the","marginal","likelihood",".","GP2","is","expected","to","do","better","."]
code: def _marg_likelihood_test(
      self, get_gp_func1, get_gp_func2, descr1, descr2
  ):
      """This tests for the marginal likelihood. GP2 is expected to do better."""
      num_successes = 0
      for dataset in self.datasets:
          gp1 = get_gp_func1(dataset)
          gp2 = get_gp_func2(dataset)
          lml1 = gp1.compute_log_marginal_likelihood()
          lml2 = gp2.compute_log_marginal_likelihood()
          success = lml1 <= lml2
          self.report(
              "(N,D)=%s:: %s-lml=%0.4f, %s-lml=%0.4f, succ=%d"
              % (
                  str(dataset[0].shape),
                  descr1,
                  lml1,
                  descr2,
                  lml2,
                  success,
              ),
              "test_result",
          )
          num_successes += success
      assert num_successes == len(self.datasets)
  
imports: from __future__ import division
  import unittest
  import numpy
  from .euclidean_gp import EuclideanGP, EuclideanGPFitter, euclidean_gp_args
  from .unittest_gp_core import compute_average_prediction_error
  from .unittest_gp_core import gen_gp_test_data
  from ..utils.base_test_class import BaseTestClass, execute_tests
  from ..utils.option_handler import load_options
label_desc: Use image node_id 2 for calling the EuclideanGPFitterBaseTestClass obj's underlying member method code with example usage: obj._marg_likelihood_test(get_gp_func1, get_gp_func2, descr1, descr2) without return types