code: def plot_clusters(ax, X, labels):
      set_clusters = set(labels)
      set_clusters.discard(
          -1
      )  # -1 signifiies outliers, which we plot separately
      for label, color in zip(sorted(set_clusters), COLORS):
          idx = labels == label
          if not sum(idx):
              continue
          ax.scatter(X[idx, 0], X[idx, 1], color=color)
  
      # show outliers (if any)
      idx = labels == -1
      if sum(idx):
          ax.scatter(X[idx, 0], X[idx, 1], c="k", marker="x")
  
      ax.grid(None)
      ax.set_xticks([])
      ax.set_yticks([])
      return ax
  
imports: import gradio
  import math
  from functools import partial
  import matplotlib.pyplot
  import numpy
  from sklearn.cluster import AgglomerativeClustering, Birch, DBSCAN, KMeans, MeanShift, OPTICS, SpectralClustering, estimate_bandwidth
  from sklearn.datasets import make_blobs, make_circles, make_moons
  from sklearn.mixture import GaussianMixture
  from sklearn.neighbors import kneighbors_graph
  from sklearn.preprocessing import StandardScaler
label_desc: Use image node_id 18 for calling a global function with example usage: plot_clusters(ax, X, labels) and returns: ax