class_docstr: Some common functionality for all Euclidean tests. 
docstr: Tests for prediction on a test set. GP2 is expected to do better. 
docstr_tok: ["Tests","for","prediction","on","a","test","set",".","GP2","is","expected","to","do","better","."]
code: def _prediction_test(
      self, get_gp_func1, get_gp_func2, descr1, descr2
  ):
      """Tests for prediction on a test set. GP2 is expected to do better."""
      num_successes = 0
      for dataset in self.datasets:
          gp1 = get_gp_func1(dataset)
          preds1, _ = gp1.eval(dataset[3])
          err1 = compute_average_prediction_error(dataset, preds1)
          gp2 = get_gp_func2(dataset)
          preds2, _ = gp2.eval(dataset[3])
          err2 = compute_average_prediction_error(dataset, preds2)
          success = err2 <= err1
          self.report(
              "(N,D)=%s:: %s-err=%0.4f, %s-err=%0.4f, succ=%d"
              % (
                  str(dataset[0].shape),
                  descr1,
                  err1,
                  descr2,
                  err2,
                  success,
              ),
              "test_result",
          )
          self.report("  -- GP: %s" % (str(gp2)), "test_result")
          num_successes += success
      assert num_successes > 0.6 * 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 3 for calling the EuclideanGPFitterBaseTestClass obj's underlying member method code with example usage: obj._prediction_test(get_gp_func1, get_gp_func2, descr1, descr2) without return types