code: def hyperparameter_names(model_string):
      parts = []
      params = re.findall(r"(\{\{[^}]+}\})", model_string)
      for param in params:
          name = re.findall(
              r"(\w+(?=\s*[\=\(]\s*" + re.escape(param) + r"))",
              model_string,
          )
          if len(name) > 0:
              parts.append(name[0])
          else:
              parts.append(parts[-1])
      part_dict = {}
      for i, part in enumerate(parts):
          if part in part_dict.keys():
              part_dict[part] += 1
              parts[i] = part + "_" + str(part_dict[part])
          else:
              part_dict[part] = 0
      return parts
  
imports: import inspect
  import os
  import re
  import sys
  import nbformat
  import numpy
  from hyperopt import fmin
  from nbconvert import PythonExporter
  from .ensemble import VotingModel
  from .utils import remove_imports, remove_all_comments, extract_imports, temp_string, write_temp_files, determine_indent, with_line_numbers, unpack_hyperopt_vals, eval_hyperopt_space, find_signature_end
label_desc: Use image node_id 9 for calling a global function with example usage: hyperparameter_names(model_string) and returns: parts