code: def _get_summary_struct(self):
          
          data_fields = [
              ('Number of examples', 'num_examples'),
              ('Number of feature columns', 'num_features'),
              ('Number of unpacked features', 'num_unpacked_features')]
          if 'num_classes' in self._list_fields():
              data_fields.append(('Number of classes', 'num_classes'))
  
          training_fields = [
              ("Number of trees", 'num_trees'),
              ("Max tree depth", 'max_depth'),
              ("Training time (sec)", 'training_time')]
  
          for m in ['accuracy', 'log_loss', 'auc', 'rmse', 'max_error']:
              if 'training_%s' % m in self._list_fields():
                  training_fields.append(('Training %s' % m, 'training_%s' % m))
                  if 'validation_%s' % m in self._list_fields():
                      training_fields.append(('Validation %s' % m,
                                              'validation_%s' % m))
  
          return ([data_fields, training_fields], ["Schema", "Settings"])
docs: Returns a structured description of the model, including (where relevant)
          the schema of the training data, description of the training data,
          training statistics, and model hyperparameters.
  
          Returns
          -------
          sections : list (of list of tuples)
              A list of summary sections.
                Each section is a list.
                  Each item in a section list is a tuple of the form:
                    ('<label>','<field>')
          section_titles: list
              A list of section titles.
                The order matches that of the 'sections' object.