Toggle Menu
Prev Up Next

scikit-learn 1.3.2
Other versions

Please cite us if you use the software.

# `sklearn.discriminant_analysis`.QuadraticDiscriminantAnalysis

class sklearn.discriminant_analysis.QuadraticDiscriminantAnalysis(*, priors=None, reg_param=0.0, store_covariance=False, tol=0.0001)

  Quadratic Discriminant Analysis.

  A classifier with a quadratic decision boundary, generated by fitting class conditional densities to the data and using Bayes’ rule.

  The model fits a Gaussian density to each class.

  New in version 0.17: QuadraticDiscriminantAnalysis

  Read more in the User Guide.

  Parameters:
    priors array-like of shape (n_classes,), default=None

      Class priors. By default, the class proportions are inferred from the training data.

    reg_param float, default=0.0

      Regularizes the per-class covariance estimates by transforming S2 as `S2 = (1 - reg_param) * S2 + reg_param * np.eye(n_features)`, where S2 corresponds to the `scaling_` attribute of a given class.

    store_covariance bool, default=False

      If True, the class covariance matrices are explicitly computed and stored in the `self.covariance_` attribute.

      New in version 0.17.

    tol float, default=1.0e-4

      Absolute threshold for a singular value to be considered significant, used to estimate the rank of `Xk` where `Xk` is the centered matrix of samples in class k. This parameter does not affect the predictions. It only controls a warning that is raised when features are considered to be colinear.

      New in version 0.17.

  Attributes:
    covariance_list of len n_classes of ndarray of shape (n_features, n_features)

      For each class, gives the covariance matrix estimated using the samples of that class. The estimations are unbiased. Only present if `store_covariance` is True.

    means_array-like of shape (n_classes, n_features)

      Class-wise means.

    priors_array-like of shape (n_classes,)

      Class priors (sum to 1).

    rotations_list of len n_classes of ndarray of shape (n_features, n_k)

      For each class k an array of shape (n_features, n_k), where `n_k = min(n_features, number of elements in class k)` It is the rotation of the Gaussian distribution, i.e. its principal axis. It corresponds to `V`, the matrix of eigenvectors coming from the SVD of `Xk = U S Vt` where `Xk` is the centered matrix of samples from class k.

    scalings_list of len n_classes of ndarray of shape (n_k,)

      For each class, contains the scaling of the Gaussian distributions along its principal axes, i.e. the variance in the rotated coordinate system. It corresponds to `S^2 / (n_samples - 1)`, where `S` is the diagonal matrix of singular values from the SVD of `Xk`, where `Xk` is the centered matrix of samples from class k.

    classes_ndarray of shape (n_classes,)

      Unique class labels.

    n_features_in_int

      Number of features seen during fit.

      New in version 0.24.

    feature_names_in_ndarray of shape (`n_features_in_`,)

      Names of features seen during fit. Defined only when `X` has feature names that are all strings.

      New in version 1.0.

  See also

  `LinearDiscriminantAnalysis`

    Linear Discriminant Analysis.

  Examples

      >>> from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis
      >>> import numpy as np
      >>> 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 = QuadraticDiscriminantAnalysis()
      >>> clf.fit(X, y)
      QuadraticDiscriminantAnalysis()
      >>> print(clf.predict([[-0.8, -1]]))
      [1]

  Methods

  `decision_function`(X) | Apply decision function to an array of samples.
  `fit`(X, y) | Fit the model according to the given training data and parameters.
  `get_metadata_routing`() | Get metadata routing of this object.
  `get_params`([deep]) | Get parameters for this estimator.
  `predict`(X) | Perform classification on an array of test vectors X.
  `predict_log_proba`(X) | Return log of posterior probabilities of classification.
  `predict_proba`(X) | Return posterior probabilities of classification.
  `score`(X, y[, sample_weight]) | Return the mean accuracy on the given test data and labels.
  `set_params`(**params) | Set the parameters of this estimator.
  `set_score_request`(*[, sample_weight]) | Request metadata passed to the `score` method.

  decision_function(X)

    Apply decision function to an array of samples.

    The decision function is equal (up to a constant factor) to the log-posterior of the model, i.e. `log p(y = k | x)`. In a binary classification setting this instead corresponds to the difference `log p(y = 1 | x) - log p(y = 0 | x)`. See Mathematical formulation of the LDA and QDA classifiers.

    Parameters:
      X array-like of shape (n_samples, n_features)

        Array of samples (test vectors).

    Returns:
      C ndarray of shape (n_samples,) or (n_samples, n_classes)

        Decision function values related to each class, per sample. In the two-class case, the shape is (n_samples,), giving the log likelihood ratio of the positive class.

  fit(X, y)

    Fit the model according to the given training data and parameters.

    > Changed in version 0.19: `store_covariances` has been moved to main constructor as `store_covariance`

    > Changed in version 0.19: `tol` has been moved to main constructor.

    Parameters:
      X array-like of shape (n_samples, n_features)

        Training vector, where `n_samples` is the number of samples and `n_features` is the number of features.

      y array-like of shape (n_samples,)

        Target values (integers).

    Returns:
      self object

        Fitted estimator.

  get_metadata_routing()

    Get metadata routing of this object.

    Please check User Guide on how the routing mechanism works.

    Returns:
      routing MetadataRequest

        A `MetadataRequest` encapsulating routing information.

  get_params(deep=True)

    Get parameters for this estimator.

    Parameters:
      deep bool, default=True

        If True, will return the parameters for this estimator and contained subobjects that are estimators.

    Returns:
      params dict

        Parameter names mapped to their values.

  predict(X)

    Perform classification on an array of test vectors X.

    The predicted class C for each sample in X is returned.

    Parameters:
      X array-like of shape (n_samples, n_features)

        Vector to be scored, where `n_samples` is the number of samples and `n_features` is the number of features.

    Returns:
      C ndarray of shape (n_samples,)

        Estimated probabilities.

  predict_log_proba(X)

    Return log of posterior probabilities of classification.

    Parameters:
      X array-like of shape (n_samples, n_features)

        Array of samples/test vectors.

    Returns:
      C ndarray of shape (n_samples, n_classes)

        Posterior log-probabilities of classification per class.

  predict_proba(X)

    Return posterior probabilities of classification.

    Parameters:
      X array-like of shape (n_samples, n_features)

        Array of samples/test vectors.

    Returns:
      C ndarray of shape (n_samples, n_classes)

        Posterior probabilities of classification per class.

  score(X, y, sample_weight=None)

    Return the mean accuracy on the given test data and labels.

    In multi-label classification, this is the subset accuracy which is a harsh metric since you require for each sample that each label set be correctly predicted.

    Parameters:
      X array-like of shape (n_samples, n_features)

        Test samples.

      y array-like of shape (n_samples,) or (n_samples, n_outputs)

        True labels for `X`.

      sample_weight array-like of shape (n_samples,), default=None

        Sample weights.

    Returns:
      score float

        Mean accuracy of `self.predict(X)` w.r.t. `y`.

  set_params(**params)

    Set the parameters of this estimator.

    The method works on simple estimators as well as on nested objects (such as `Pipeline`). The latter have parameters of the form `<component>__<parameter>` so that it’s possible to update each component of a nested object.

    Parameters:
      **params dict

        Estimator parameters.

    Returns:
      self estimator instance

        Estimator instance.

  set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') → QuadraticDiscriminantAnalysis

    Request metadata passed to the `score` method.

    Note that this method is only relevant if `enable_metadata_routing=True` (see `sklearn.set_config`). Please see User Guide on how the routing mechanism works.

    The options for each parameter are:

    - `True`: metadata is requested, and passed to `score` if provided. The request is ignored if metadata is not provided.

    - `False`: metadata is not requested and the meta-estimator will not pass it to `score`.

    - `None`: metadata is not requested, and the meta-estimator will raise an error if the user provides it.

    - `str`: metadata should be passed to the meta-estimator with this given alias instead of the original name.

    The default (`sklearn.utils.metadata_routing.UNCHANGED`) retains the existing request. This allows you to change the request for some parameters and not others.

    New in version 1.3.

    Note

    This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a `Pipeline`. Otherwise it has no effect.

    Parameters:
      sample_weight str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

        Metadata routing for `sample_weight` parameter in `score`.

    Returns:
      self object

        The updated object.

## Examples using `sklearn.discriminant_analysis.QuadraticDiscriminantAnalysis`

Classifier comparison

Classifier comparison

Linear and Quadratic Discriminant Analysis with covariance ellipsoid

Linear and Quadratic Discriminant Analysis with covariance ellipsoid