QuadraticDiscriminantAnalysis#

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

二次判别分析。

一个具有二次决策边界的分类器,通过拟合类条件密度到数据并使用贝叶斯规则生成。

该模型为每个类拟合一个高斯密度。

Added in version 0.17.

有关 QuadraticDiscriminantAnalysisLinearDiscriminantAnalysis 之间的比较,请参见 线性判别分析和二次判别分析的协方差椭球体

更多信息请参阅 用户指南

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

类先验概率。默认情况下,类比例从训练数据中推断。

reg_paramfloat, default=0.0

通过将 S2 转换为 S2 = (1 - reg_param) * S2 + reg_param * np.eye(n_features) 来正则化每个类的协方差估计, 其中 S2 对应于给定类的 scaling_ 属性。

store_covariancebool, default=False

如果为 True,则显式计算并存储类协方差矩阵在 self.covariance_ 属性中。

Added in version 0.17.

tolfloat, default=1.0e-4

在应用一些正则化(见 reg_param )到每个 Sk 之后,协方差矩阵被认为是秩不足的绝对阈值,其中 Sk 表示第 k 类的协方差矩阵。 此参数不影响预测。它控制当协方差矩阵不是满秩时何时引发警告。

Added in version 0.17.

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

对于每个类,给出使用该类样本估计的协方差矩阵。估计是无偏的。仅当 store_covariance 为 True 时存在。

means_array-like of shape (n_classes, n_features)

类内均值。

priors_array-like of shape (n_classes,)

类先验概率(总和为 1)。

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

对于每个类 k,形状为 (n_features, n_k) 的数组,其中 n_k = min(n_features, k 中的元素数) 它是高斯分布的旋转,即其主轴。它对应于 V ,即来自 Xk = U S Vt 的 SVD 的特征向量矩阵,其中 Xk 是类 k 的中心矩阵样本。

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

对于每个类,包含沿其主轴的高斯分布的缩放,即在旋转坐标系中的方差。它对应于 S^2 / (n_samples - 1) ,其中 S 是奇异值的对角矩阵 来自 Xk 的 SVD,其中 Xk 是类 k 的中心矩阵样本。

classes_ndarray of shape (n_classes,)

唯一的类标签。

n_features_in_int

fit 期间看到的特征数。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当 X 的所有特征名称均为字符串时定义。

Added in version 1.0.

See also

LinearDiscriminantAnalysis

线性判别分析。

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]
decision_function(X)#

应用决策函数到一个样本数组。

决策函数等于(直到一个常数因子)模型的对数后验概率,即 log p(y = k | x) 。在二分类设置中,这对应于差异 log p(y = 1 | x) - log p(y = 0 | x) 。参见 LDA 和 QDA 分类器的数学表述

Parameters:
X形状为 (n_samples, n_features) 的类数组

样本数组(测试向量)。

Returns:
C形状为 (n_samples,) 或 (n_samples, n_classes) 的 ndarray

与每个类相关的决策函数值,每个样本。 在二分类情况下,形状为 (n_samples,),给出正类的对数似然比。

fit(X, y)#

拟合模型根据给定的训练数据和参数。

Changed in version 0.19: store_covariances 已被移动到主构造函数中,并更名为 store_covariance

Changed in version 0.19: tol 已被移动到主构造函数中。

Parameters:
X形状为 (n_samples, n_features) 的类数组

训练向量,其中 n_samples 是样本数量, n_features 是特征数量。

y形状为 (n_samples,) 的类数组

目标值(整数)。

Returns:
self对象

拟合的估计器。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

predict(X)#

执行对测试向量数组X的分类。

返回X中每个样本的预测类别C。

Parameters:
X类数组形状 (n_samples, n_features)

要评分的向量,其中 n_samples 是样本数量, n_features 是特征数量。

Returns:
C形状为 (n_samples,) 的 ndarray

估计的概率。

predict_log_proba(X)#

返回分类的后验概率的对数。

Parameters:
X形状为 (n_samples, n_features) 的类数组

样本/测试向量的数组。

Returns:
C形状为 (n_samples, n_classes) 的 ndarray

每个类别的分类后验对数概率。

predict_proba(X)#

返回分类的后验概率。

Parameters:
X形状为 (n_samples, n_features) 的类数组

样本/测试向量的数组。

Returns:
C形状为 (n_samples, n_classes) 的 ndarray

每个类别的分类后验概率。

score(X, y, sample_weight=None)#

返回给定测试数据和标签的平均准确率。

在多标签分类中,这是子集准确率,这是一个严格的指标,因为你要求每个样本的每个标签集都被正确预测。

Parameters:
X形状为 (n_samples, n_features) 的类数组

测试样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组

` X`的真实标签。

sample_weight形状为 (n_samples,) 的类数组,默认=None

样本权重。

Returns:
scorefloat

self.predict(X) 相对于 y 的平均准确率。

set_params(**params)#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline )。后者具有形式为 <component>__<parameter> 的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator 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.

Added 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_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in score .

Returns:
selfobject

The updated object.