code: def test_mean_results(self):
      mean_eval = ChordMeanEvaluation([self.eval1, self.eval2])
      self.assertAlmostEqual(mean_eval.root, 0.9487179487179487)
      self.assertAlmostEqual(mean_eval.majmin, 0.8205128205128205)
      self.assertAlmostEqual(mean_eval.majminbass, 0.7307692307692308)
      self.assertAlmostEqual(mean_eval.sevenths, 0.7307692307692308)
      self.assertAlmostEqual(mean_eval.seventhsbass, 0.6410256410256411)
      self.assertAlmostEqual(
          mean_eval.undersegmentation, 0.9615384615384616
      )
      self.assertAlmostEqual(
          mean_eval.oversegmentation, 0.7948717948717949
      )
      self.assertAlmostEqual(mean_eval.segmentation, 0.7948717948717949)
  
imports: from __future__ import absolute_import, division, print_function
  import unittest
  from os.path import join
  from madmom.evaluation.chords import *
  from .None import ANNOTATIONS_PATH, DETECTIONS_PATH
label_desc: Use image node_id 2 for calling the TestAggregateChordEvaluation obj's underlying member method code with example usage: obj.test_mean_results() without return types