docs: def tsne(X, y=None, ax=None, decompose='svd', decompose_by=50, classes=None,
             colors=None, colormap=None, alpha=0.7, **kwargs):
      """
      Display a projection of a vectorized corpus in two dimensions using TSNE,
      a nonlinear dimensionality reduction method that is particularly well
      suited to embedding in two or three dimensions for visualization as a
      scatter plot. TSNE is widely used in text analysis to show clusters or
      groups of documents or utterances and their relative proximities.
  
      Parameters
      ----------
  
      X : ndarray or DataFrame of shape n x m
          A matrix of n instances with m features representing the corpus of
          vectorized documents to visualize with tsne.
  
      y : ndarray or Series of length n
          An optional array or series of target or class values for instances.
          If this is specified, then the points will be colored according to
          their class. Often cluster labels are passed in to color the documents
          in cluster space, so this method is used both for classification and
          clustering methods.
  
      ax : matplotlib axes
          The axes to plot the figure on.
  
      decompose : string or None
          A preliminary decomposition is often used prior to TSNE to make the
          projection faster. Specify `"svd"` for sparse data or `"pca"` for
          dense data. If decompose is None, the original data set will be used.
  
      decompose_by : int
          Specify the number of components for preliminary decomposition, by
          default this is 50; the more components, the slower TSNE will be.
  
      classes : list of strings
          The names of the classes in the target, used to create a legend.
  
      colors : list or tuple of colors
          Specify the colors for each individual class
  
      colormap : string or matplotlib cmap
          Sequential colormap for continuous target
  
      alpha : float, default: 0.7
          Specify a transparency where 1 is completely opaque and 0 is completely
          transparent. This property makes densely clustered points more visible.
  
      kwargs : dict
          Pass any additional keyword arguments to the TSNE transformer.
  
      Returns
      -------
      ax : matplotlib axes
          Returns the axes that the parallel coordinates were drawn on.
      """
      # Instantiate the visualizer
      visualizer = TSNEVisualizer(
          ax, decompose, decompose_by, classes, colors, colormap, alpha, **kwargs
      )
  
      # Fit and transform the visualizer (calls draw)
      visualizer.fit(X, y, **kwargs)
      visualizer.transform(X)
  
      # Return the axes object on the visualizer
      return visualizer.ax