code: def fit(self, X, Y):
      import sklearn.discriminant_analysis
  
      estimator = (
          sklearn.discriminant_analysis.QuadraticDiscriminantAnalysis(
              reg_param=self.reg_param
          )
      )
  
      if len(Y.shape) == 2 and Y.shape[1] > 1:
          import sklearn.multiclass
  
          self.estimator = sklearn.multiclass.OneVsRestClassifier(
              estimator, n_jobs=1
          )
      else:
          self.estimator = estimator
  
      self.estimator.fit(X, Y)
  
      if len(Y.shape) == 2 and Y.shape[1] > 1:
          problems = []
          for est in self.estimator.estimators_:
              problem = np.any(
                  np.any([np.any(s <= 0.0) for s in est.scalings_])
              )
              problems.append(problem)
          problem = np.any(problems)
      else:
          problem = np.any(
              np.any(
                  [np.any(s <= 0.0) for s in self.estimator.scalings_]
              )
          )
      if problem:
          raise ValueError(
              "Numerical problems in QDA. QDA.scalings_ "
              "contains values <= 0.0"
          )
      return self
  
file_path: auto-sklearn/autosklearn/pipeline/components/classification/qda.py
imports: from typing import Optional
  import numpy
  from ConfigSpace.configuration_space import ConfigurationSpace
  from ConfigSpace.hyperparameters import 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
label_desc: Use image node_id 2 for calling the QDA obj's underlying member method code with example usage: obj.fit(X, Y) and returns: self