class_docstr: Enables dimensionality reduction for multiple
  class distributions. It transforms the features space into a space where
  the between class scatter is maximized and the within class scatter is
  minimized.
  
  Parameters:
  -----------
  solver: str
      If 'svd' we use the pseudo-inverse to calculate the inverse of matrices
      when doing the transformation.
docstr: Plot the dataset X and the corresponding labels y in 2D using the LDA
  transformation.
docstr_tok: ["Plot","the","dataset","X","and","the","corresponding","labels","y","in","2D","using","the","LDA","transformation","."]
code: def plot_in_2d(self, X, y, title=None):
      """Plot the dataset X and the corresponding labels y in 2D using the LDA
      transformation."""
      X_transformed = self.transform(X, y, n_components=2)
      x1 = X_transformed[:, 0]
      x2 = X_transformed[:, 1]
      plt.scatter(x1, x2, c=y)
      if title:
          plt.title(title)
      plt.show()
  
file_path: ML-From-Scratch/mlfromscratch/supervised_learning/multi_class_lda.py
imports: from __future__ import print_function, division
  import matplotlib.pyplot
  import numpy
  from mlfromscratch.utils import calculate_covariance_matrix, normalize, standardize
label_desc: Use image node_id 4 for calling the MultiClassLDA obj's underlying member method code with example usage: obj.plot_in_2d(X, y, title) without return types