class_docstr: Linear Discriminant Analysis.
  
  A classifier with a linear decision boundary, generated by fitting class
  conditional densities to the data and using Bayes' rule.
  
  The model fits a Gaussian density to each class, assuming that all classes
  share the same covariance matrix.
  
  The fitted model can also be used to reduce the dimensionality of the input
  by projecting it to the most discriminative directions, using the
  `transform` method.
  
  .. versionadded:: 0.17
     *LinearDiscriminantAnalysis*.
  
  Read more in the :ref:`User Guide <lda_qda>`.
  
  Parameters
  ----------
  solver : {'svd', 'lsqr', 'eigen'}, default='svd'
      Solver to use, possible values:
        - 'svd': Singular value decomposition (default).
          Does not compute the covariance matrix, therefore this solver is
          recommended for data with a large number of features.
        - 'lsqr': Least squares solution.
          Can be combined with shrinkage or custom covariance estimator.
        - 'eigen': Eigenvalue decomposition.
          Can be combined with shrinkage or custom covariance estimator.
  
      .. versionchanged:: 1.2
          `solver="svd"` now has experimental Array API support. See the
          :ref:`Array API User Guide <array_api>` for more details.
  
  shrinkage : 'auto' or float, default=None
      Shrinkage parameter, possible values:
        - None: no shrinkage (default).
        - 'auto': automatic shrinkage using the Ledoit-Wolf lemma.
        - float between 0 and 1: fixed shrinkage parameter.
  
      This should be left to None if `covariance_estimator` is used.
      Note that shrinkage works only with 'lsqr' and 'eigen' solvers.
  
  priors : array-like of shape (n_classes,), default=None
      The class prior probabilities. By default, the class proportions are
      inferred from the training data.
  
  n_components : int, default=None
      Number of components (<= min(n_classes - 1, n_features)) for
      dimensionality reduction. If None, will be set to
      min(n_classes - 1, n_features). This parameter only affects the
      `transform` method.
  
  store_covariance : bool, default=False
      If True, explicitly compute the weighted within-class covariance
      matrix when solver is 'svd'. The matrix is always computed
      and stored for the other solvers.
  
      .. versionadded:: 0.17
  
  tol : float, default=1.0e-4
      Absolute threshold for a singular value of X to be considered
      significant, used to estimate the rank of X. Dimensions whose
      singular values are non-significant are discarded. Only used if
      solver is 'svd'.
  
      .. versionadded:: 0.17
  
  covariance_estimator : covariance estimator, default=None
      If not None, `covariance_estimator` is used to estimate
      the covariance matrices instead of relying on the empirical
      covariance estimator (with potential shrinkage).
      The object should have a fit method and a ``covariance_`` attribute
      like the estimators in :mod:`sklearn.covariance`.
      if None the shrinkage parameter drives the estimate.
  
      This should be left to None if `shrinkage` is used.
      Note that `covariance_estimator` works only with 'lsqr' and 'eigen'
      solvers.
  
      .. versionadded:: 0.24
  
  Attributes
  ----------
  coef_ : ndarray of shape (n_features,) or (n_classes, n_features)
      Weight vector(s).
  
  intercept_ : ndarray of shape (n_classes,)
      Intercept term.
  
  covariance_ : array-like of shape (n_features, n_features)
      Weighted within-class covariance matrix. It corresponds to
      `sum_k prior_k * C_k` where `C_k` is the covariance matrix of the
      samples in class `k`. The `C_k` are estimated using the (potentially
      shrunk) biased estimator of covariance. If solver is 'svd', only
      exists when `store_covariance` is True.
  
  explained_variance_ratio_ : ndarray of shape (n_components,)
      Percentage of variance explained by each of the selected components.
      If ``n_components`` is not set then all components are stored and the
      sum of explained variances is equal to 1.0. Only available when eigen
      or svd solver is used.
  
  means_ : array-like of shape (n_classes, n_features)
      Class-wise means.
  
  priors_ : array-like of shape (n_classes,)
      Class priors (sum to 1).
  
  scalings_ : array-like of shape (rank, n_classes - 1)
      Scaling of the features in the space spanned by the class centroids.
      Only available for 'svd' and 'eigen' solvers.
  
  xbar_ : array-like of shape (n_features,)
      Overall mean. Only present if solver is 'svd'.
  
  classes_ : array-like of shape (n_classes,)
      Unique class labels.
  
  n_features_in_ : int
      Number of features seen during :term:`fit`.
  
      .. versionadded:: 0.24
  
  feature_names_in_ : ndarray of shape (`n_features_in_`,)
      Names of features seen during :term:`fit`. Defined only when `X`
      has feature names that are all strings.
  
      .. versionadded:: 1.0
  
  See Also
  --------
  QuadraticDiscriminantAnalysis : Quadratic Discriminant Analysis.
  
  Examples
  --------
  >>> import numpy as np
  >>> from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
  >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
  >>> y = np.array([1, 1, 1, 2, 2, 2])
  >>> clf = LinearDiscriminantAnalysis()
  >>> clf.fit(X, y)
  LinearDiscriminantAnalysis()
  >>> print(clf.predict([[-0.8, -1]]))
  [1]
docstr: Least squares solver.
  
  The least squares solver computes a straightforward solution of the
  optimal decision rule based directly on the discriminant functions. It
  can only be used for classification (with any covariance estimator),
  because
  estimation of eigenvectors is not performed. Therefore, dimensionality
  reduction with the transform is not supported.
  
  Parameters
  ----------
  X : array-like of shape (n_samples, n_features)
      Training data.
  
  y : array-like of shape (n_samples,) or (n_samples, n_classes)
      Target values.
  
  shrinkage : 'auto', float or None
      Shrinkage parameter, possible values:
        - None: no shrinkage.
        - 'auto': automatic shrinkage using the Ledoit-Wolf lemma.
        - float between 0 and 1: fixed shrinkage parameter.
  
      Shrinkage parameter is ignored if  `covariance_estimator` i
      not None
  
  covariance_estimator : estimator, default=None
      If not None, `covariance_estimator` is used to estimate
      the covariance matrices instead of relying the empirical
      covariance estimator (with potential shrinkage).
      The object should have a fit method and a ``covariance_`` attribute
      like the estimators in sklearn.covariance.
      if None the shrinkage parameter drives the estimate.
  
      .. versionadded:: 0.24
  
  Notes
  -----
  This solver is based on [1]_, section 2.6.2, pp. 39-41.
  
  References
  ----------
  .. [1] R. O. Duda, P. E. Hart, D. G. Stork. Pattern Classification
     (Second Edition). John Wiley & Sons, Inc., New York, 2001. ISBN
     0-471-05669-3.
docstr_tok: ["Least","squares","solver",".","The","least","squares","solver","computes","a","straightforward","solution","of","the","optimal","decision","rule","based","directly","on","the","discriminant","functions",".","It","can","only","be","used","for","classification","(","with","any","covariance","estimator",")",",","because","estimation","of","eigenvectors","is","not","performed",".","Therefore",",","dimensionality","reduction","with","the","transform","is","not","supported",".","Parameters","--","--","--","--","--","X",":","array-like","of","shape","(","n_samples",",","n_features",")","Training","data",".","y",":","array-like","of","shape","(","n_samples",",",")","or","(","n_samples",",","n_classes",")","Target","values",".","shrinkage",":","'auto","'",",","float","or","None","Shrinkage","parameter",",","possible","values",":","-","None",":","no","shrinkage",".","-","'auto","'",":","automatic","shrinkage","using","the","Ledoit-Wolf","lemma",".","-","float","between","0","and","1",":","fixed","shrinkage","parameter",".","Shrinkage","parameter","is","ignored","if","`","covariance_estimator","`","i","not","None","covariance_estimator",":","estimator",",","default=None","If","not","None",",","`","covariance_estimator","`","is","used","to","estimate","the","covariance","matrices","instead","of","relying","the","empirical","covariance","estimator","(","with","potential","shrinkage",")",".","The","object","should","have","a","fit","method","and","a","``","covariance_","``","attribute","like","the","estimators","in","sklearn.covariance",".","if","None","the","shrinkage","parameter","drives","the","estimate",".","..","versionadded",":",":","0.24","Notes","--","--","-","This","solver","is","based","on","[","1","]","_",",","section","2.6.2",",","pp",".","39-41",".","References","--","--","--","--","--","..","[","1","]","R.","O.","Duda",",","P.","E.","Hart",",","D.","G.","Stork",".","Pattern","Classification","(","Second","Edition",")",".","John","Wiley","&","Sons",",","Inc.",",","New","York",",","2001",".","ISBN","0-471-05669-3","."]
code: def _solve_lstsq(self, X, y, shrinkage, covariance_estimator):
      """Least squares solver.
  
      The least squares solver computes a straightforward solution of the
      optimal decision rule based directly on the discriminant functions. It
      can only be used for classification (with any covariance estimator),
      because
      estimation of eigenvectors is not performed. Therefore, dimensionality
      reduction with the transform is not supported.
  
      Parameters
      ----------
      X : array-like of shape (n_samples, n_features)
          Training data.
  
      y : array-like of shape (n_samples,) or (n_samples, n_classes)
          Target values.
  
      shrinkage : 'auto', float or None
          Shrinkage parameter, possible values:
            - None: no shrinkage.
            - 'auto': automatic shrinkage using the Ledoit-Wolf lemma.
            - float between 0 and 1: fixed shrinkage parameter.
  
          Shrinkage parameter is ignored if  `covariance_estimator` i
          not None
  
      covariance_estimator : estimator, default=None
          If not None, `covariance_estimator` is used to estimate
          the covariance matrices instead of relying the empirical
          covariance estimator (with potential shrinkage).
          The object should have a fit method and a ``covariance_`` attribute
          like the estimators in sklearn.covariance.
          if None the shrinkage parameter drives the estimate.
  
          .. versionadded:: 0.24
  
      Notes
      -----
      This solver is based on [1]_, section 2.6.2, pp. 39-41.
  
      References
      ----------
      .. [1] R. O. Duda, P. E. Hart, D. G. Stork. Pattern Classification
         (Second Edition). John Wiley & Sons, Inc., New York, 2001. ISBN
         0-471-05669-3.
      """
      self.means_ = _class_means(X, y)
      self.covariance_ = _class_cov(
          X, y, self.priors_, shrinkage, covariance_estimator
      )
      self.coef_ = linalg.lstsq(self.covariance_, self.means_.T)[0].T
      self.intercept_ = -0.5 * np.diag(
          np.dot(self.means_, self.coef_.T)
      ) + np.log(self.priors_)
  
imports: import warnings
  from numbers import Integral, Real
  import numpy
  import scipy.linalg
  from scipy import linalg
  from .base import BaseEstimator, ClassifierMixin, ClassNamePrefixFeaturesOutMixin, TransformerMixin, _fit_context
  from .covariance import empirical_covariance, ledoit_wolf, shrunk_covariance
  from .linear_model._base import LinearClassifierMixin
  from .preprocessing import StandardScaler
  from .utils._array_api import _expit, device, get_namespace, size
  from .utils._param_validation import HasMethods, Interval, StrOptions
  from .utils.extmath import softmax
  from .utils.multiclass import check_classification_targets, unique_labels
  from .utils.validation import check_is_fitted
label_desc: Use image node_id 2 for calling the LinearDiscriminantAnalysis obj's underlying member method code with example usage: obj._solve_lstsq(X, y, shrinkage, covariance_estimator) without return types