GaussianProcessClassifier#

class sklearn.gaussian_process.GaussianProcessClassifier(kernel=None, *, optimizer='fmin_l_bfgs_b', n_restarts_optimizer=0, max_iter_predict=100, warm_start=False, copy_X_train=True, random_state=None, multi_class='one_vs_rest', n_jobs=None)[source]#

基于拉普拉斯近似的高斯过程分类 (GPC)。

此实现基于 [RW2006] 中的算法 3.1、3.2 和 5.1。

在内部,使用拉普拉斯近似(Laplace approximation)将非高斯后验(non-Gaussian posterior)近似为高斯分布。

目前,此实现仅限于使用 logistic 链接函数。对于多分类问题,会拟合多个二分类“一对多”(one-versus-rest)分类器。请注意,因此此类并未实现真正的多分类拉普拉斯近似。

欲了解更多信息,请参阅 用户指南

版本 0.18 新增。

参数:
kernel核函数实例,default=None

指定高斯过程协方差函数的核函数。如果传入 None,则默认使用核函数“1.0 * RBF(1.0)”。请注意,核函数的超参数在拟合过程中会进行优化。此外,核函数不能是 CompoundKernel

optimizer‘fmin_l_bfgs_b’、callable 或 None,default=’fmin_l_bfgs_b’

可以是内部支持的用于优化核函数参数的优化器之一(通过字符串指定),也可以是作为可调用对象传入的外部定义优化器。如果传入可调用对象,它必须具有以下签名

def optimizer(obj_func, initial_theta, bounds):
    # * 'obj_func' is the objective function to be maximized, which
    #   takes the hyperparameters theta as parameter and an
    #   optional flag eval_gradient, which determines if the
    #   gradient is returned additionally to the function value
    # * 'initial_theta': the initial value for theta, which can be
    #   used by local optimizers
    # * 'bounds': the bounds on the values of theta
    ....
    # Returned are the best found hyperparameters theta and
    # the corresponding value of the target function.
    return theta_opt, func_min

默认情况下,使用 scipy.optimize.minimize 中的 'L-BFGS-B' 算法。如果传入 None,则核函数的参数保持固定。可用的内部优化器包括

'fmin_l_bfgs_b'
n_restarts_optimizerint,default=0

优化器重启次数,用于寻找使对数边际似然最大化的核函数参数。优化器的第一次运行从核函数的初始参数开始,其余运行(如果有)从对数均匀随机采样自允许的 theta 值空间中的 theta 开始。如果大于 0,则所有边界都必须是有限的。请注意,n_restarts_optimizer=0 意味着执行一次运行。

max_iter_predictint,default=100

在预测过程中,用于近似后验的牛顿法(Newton's method)的最大迭代次数。较小的值会减少计算时间,但代价是结果可能较差。

warm_startbool, default=False

如果启用热启动(warm-starts),则上次牛顿迭代在后验众数拉普拉斯近似上的解将用作下一次调用 _posterior_mode() 的初始化。当 _posterior_mode 在超参数优化等类似问题上多次调用时,这可以加快收敛速度。请参阅 词汇表

copy_X_trainbool,default=True

如果为 True,则训练数据的持久副本存储在对象中。否则,只存储对训练数据的引用,如果数据在外部被修改,可能会导致预测发生变化。

random_stateint, RandomState instance or None, default=None

确定用于初始化中心的随机数生成。传入 int 可在多次函数调用中获得可重现的结果。请参阅 词汇表

multi_class{‘one_vs_rest’, ‘one_vs_one’},default=’one_vs_rest’

指定如何处理多分类问题。支持 'one_vs_rest' 和 'one_vs_one'。在 'one_vs_rest' 中,为每个类别拟合一个二分类高斯过程分类器,训练该分类器以将该类别与其他类别分开。在 'one_vs_one' 中,为每对类别拟合一个二分类高斯过程分类器,训练该分类器以将这两个类别分开。这些二分类预测器的预测结果被组合成多分类预测。请注意,'one_vs_one' 不支持预测概率估计值。

n_jobsint, default=None

用于计算的作业数:指定的多个分类问题并行计算。None 表示 1,除非处于 joblib.parallel_backend 上下文中。-1 表示使用所有处理器。有关详细信息,请参阅 词汇表

属性:
base_estimator_Estimator 实例

使用观察数据定义似然函数的估计器实例。

kernel_核函数实例

返回基本估计器的核函数。

log_marginal_likelihood_value_float

self.kernel_.theta 的对数边际似然值

classes_array-like of shape (n_classes,)

唯一的类标签。

n_classes_int

训练数据中的类别数

n_features_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

另请参阅

GaussianProcessRegressor

高斯过程回归 (GPR)。

References

示例

>>> from sklearn.datasets import load_iris
>>> from sklearn.gaussian_process import GaussianProcessClassifier
>>> from sklearn.gaussian_process.kernels import RBF
>>> X, y = load_iris(return_X_y=True)
>>> kernel = 1.0 * RBF(1.0)
>>> gpc = GaussianProcessClassifier(kernel=kernel,
...         random_state=0).fit(X, y)
>>> gpc.score(X, y)
0.9866...
>>> gpc.predict_proba(X[:2,:])
array([[0.83548752, 0.03228706, 0.13222543],
       [0.79064206, 0.06525643, 0.14410151]])

有关 GaussianProcessClassifier 与其他分类器的比较,请参阅:绘制分类概率

fit(X, y)[source]#

拟合高斯过程分类模型。

参数:
Xarray-like of shape (n_samples, n_features) or list of object

特征向量或训练数据的其他表示形式。

yarray-like of shape (n_samples,)

目标值,必须是二值的。

返回:
selfobject

Returns an instance of self.

get_metadata_routing()[source]#

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

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, default=True

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

返回:
paramsdict

参数名称映射到其值。

latent_mean_and_variance(X)[source]#

计算潜在函数(latent function)的均值和方差。

根据 [RW2006] 的算法 3.2,此函数返回高斯过程分类模型的潜在均值(第 4 行)和方差(第 6 行)。

请注意,此函数仅支持二分类。

在版本 1.7 中新增。

参数:
Xarray-like of shape (n_samples, n_features) or list of object

用于分类的高斯过程评估的查询点。

返回:
latent_meanarray-like of shape (n_samples,)

查询点处潜在函数值的均值。

latent_vararray-like of shape (n_samples,)

查询点处潜在函数值的方差。

log_marginal_likelihood(theta=None, eval_gradient=False, clone_kernel=True)[source]#

返回训练数据对于 theta 的对数边际似然。

在多分类情况下,返回“一对多”分类器的平均对数边际似然。

参数:
thetaarray-like of shape (n_kernel_params,),default=None

用于评估对数边际似然的核函数超参数。在多分类情况下,theta 可以是复合核函数(compound kernel)的超参数,也可以是单个核函数的超参数。在后一种情况下,所有单个核函数都分配相同的 theta 值。如果为 None,则返回 self.kernel_.theta 的预计算对数边际似然。

eval_gradientbool, default=False

如果为 True,则额外返回对数边际似然在 theta 位置处关于核函数超参数的梯度。请注意,非二分类不支持梯度计算。如果为 True,则 theta 不能为 None。

clone_kernelbool,default=True

如果为 True,则复制核属性。如果为 False,则修改核属性,但这可能会提高性能。

返回:
log_likelihoodfloat

训练数据对于 theta 的对数边际似然。

log_likelihood_gradientndarray of shape (n_kernel_params,),可选

对数边际似然在 theta 位置处关于核函数超参数的梯度。仅当 eval_gradient 为 True 时返回。

predict(X)[source]#

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

参数:
Xarray-like of shape (n_samples, n_features) or list of object

用于分类的高斯过程评估的查询点。

返回:
Cndarray of shape (n_samples,)

X 的预测目标值,值来自 classes_

predict_proba(X)[source]#

返回测试向量 X 的概率估计值。

参数:
Xarray-like of shape (n_samples, n_features) or list of object

用于分类的高斯过程评估的查询点。

返回:
Carray-like of shape (n_samples, n_classes)

返回每个样本在模型中每个类别的概率。列对应于按排序顺序排列的类别,与其在属性 classes_ 中出现的顺序一致。

score(X, y, sample_weight=None)[source]#

返回在提供的数据和标签上的 准确率 (accuracy)

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

参数:
Xshape 为 (n_samples, n_features) 的 array-like

测试样本。

yshape 为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like

X 的真实标签。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

样本权重。

返回:
scorefloat

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

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') GaussianProcessClassifier[source]#

配置是否应请求元数据以传递给 score 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True:请求元数据,如果提供则传递给 score。如果未提供元数据,则忽略该请求。

  • False:不请求元数据,元估计器不会将其传递给 score

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

score 方法中 sample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。