code: def _get_summary_struct(self):
          
  
          model_fields = [
              ("Method", 'method'),
              ("Number of distance components", 'num_distance_components'),
              ("Number of examples", 'num_examples'),
              ("Number of feature columns", 'num_features'),
              ("Number of unpacked features", 'num_unpacked_features'),
              ("Total training time (seconds)", 'training_time')]
  
          ball_tree_fields = [
              ("Tree depth", 'tree_depth'),
              ("Leaf size", 'leaf_size')]
  
          lsh_fields = [
              ("Number of hash tables", 'num_tables'),
              ("Number of projections per table", 'num_projections_per_table')]
  
          sections = [model_fields]
          section_titles = ['Attributes']
  
          if (self.method == 'ball_tree'):
              sections.append(ball_tree_fields)
              section_titles.append('Ball Tree Attributes')
  
          if (self.method == 'lsh'):
              sections.append(lsh_fields)
              section_titles.append('LSH Attributes')
  
          return (sections, section_titles)
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.