code: def fit(self, X, Y):
      import sklearn.discriminant_analysis
      import sklearn.multiclass
  
      if check_none(self.shrinkage):
          self.shrinkage_ = None
          solver = "svd"
      elif self.shrinkage == "auto":
          self.shrinkage_ = "auto"
          solver = "lsqr"
      elif self.shrinkage == "manual":
          self.shrinkage_ = float(self.shrinkage_factor)
          solver = "lsqr"
      else:
          raise ValueError(self.shrinkage)
  
      self.tol = float(self.tol)
  
      estimator = (
          sklearn.discriminant_analysis.LinearDiscriminantAnalysis(
              shrinkage=self.shrinkage_, tol=self.tol, solver=solver
          )
      )
  
      if len(Y.shape) == 2 and Y.shape[1] > 1:
          self.estimator = sklearn.multiclass.OneVsRestClassifier(
              estimator, n_jobs=1
          )
      else:
          self.estimator = estimator
  
      self.estimator.fit(X, Y)
      return self
  
file_path: auto-sklearn/autosklearn/pipeline/components/classification/lda.py
imports: from typing import Optional
  from ConfigSpace.conditions import EqualsCondition
  from ConfigSpace.configuration_space import ConfigurationSpace
  from ConfigSpace.hyperparameters import CategoricalHyperparameter, UniformFloatHyperparameter
  from autosklearn.askl_typing import FEAT_TYPE_TYPE
  from autosklearn.pipeline.components.base import AutoSklearnClassificationAlgorithm
  from autosklearn.pipeline.constants import DENSE, PREDICTIONS, UNSIGNED_DATA
  from autosklearn.pipeline.implementations.util import softmax
  from autosklearn.util.common import check_none
label_desc: Use image node_id 2 for calling the LDA obj's underlying member method code with example usage: obj.fit(X, Y) and returns: self