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)[源代码]#

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

该实现基于算法3.1、3.2和5.1, [RW2006].

在内部,拉普拉斯逼近用于通过高斯逼近非高斯后验。

目前实施仅限于使用物流链接功能。对于多类分类,可以匹配几个二进制一对休息分类器。请注意,因此,这个类并不实现真正的多类拉普拉斯逼近。

阅读更多的 User Guide .

Added in version 0.18.

参数:
kernel内核实例,默认值=无

指定GP的协方差函数的内核。如果传递无,则默认使用内核“1.0 * RBS(1.0)”。请注意,内核的超参数在适配期间进行了优化。此外,内核也不能是 CompoundKernel .

optimizer“fmin_l_bfgs_b”,可调用或无,默认=“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. optimate. minimals中的“L-BFSG-B”算法。如果传递无,则内核的参数保持固定。可用的内部优化器有::

'fmin_l_bfgs_b'
n_restarts_optimizerint,默认=0

优化器重新启动的次数,以寻找最大限度地提高对log边际可能性的内核参数。优化器的第一次运行是根据内核的初始参数执行的,其余参数(如果有的话)是从允许的theta值空间随机进行log均匀抽样的。如果大于0,则所有边界必须是有限的。请注意,n_rests_optimizer=0意味着执行一次运行。

max_iter_predictint,默认=100

在预测过程中,牛顿法用于近似后验的最大迭代次数。值越小,计算时间越短,结果越差。

warm_start布尔,默认=假

如果启用了热启动,则后验模式的拉普拉斯近似的最后一次牛顿迭代的解将用作下一次调用_posterior_mode()的初始化。当在类似的问题上多次调用_posterior_mode时,这可以加速收敛,就像在超参数优化中一样。看到 the Glossary .

copy_X_train布尔,默认=True

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

random_stateint,RandomState实例或无,默认=无

确定用于初始化中心的随机数生成。传递int以获得跨多个函数调用的可重复结果。看到 Glossary .

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,默认=无

用于计算的作业数量:并行计算指定的多类问题。 None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

属性:
base_estimator_ : Estimator 例如估计实例

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

kernel_内核实例

返回基本估计器的内核。

log_marginal_likelihood_value_浮子

的log边际可能性 self.kernel_.theta

classes_形状类似阵列(n_classes,)

独特的班级标签。

n_classes_int

训练数据中的班级数量

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

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

Added in version 1.0.

参见

GaussianProcessRegressor

高斯过程回归(GPT)。

引用

[RW2006]

Carl E. Rasmussen and Christopher K.I. Williams, "Gaussian Processes for Machine Learning", MIT Press 2006 <https://www.gaussianprocess.org/gpml/chapters/RW.pdf> _

示例

>>> 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]])

有关GaussianProcess Classifier与其他分类器的比较,请参阅: sphx_glr_auto_examples_classification_plot_classification_probability.py .

fit(X, y)[源代码]#

适应高斯流程分类模型。

参数:
X类似阵列的形状(n_samples,n_features)或对象列表

特征载体或训练数据的其他表示。

y形状类似阵列(n_samples,)

目标值必须是二进制。

返回:
self对象

返回自我的实例。

get_metadata_routing()[源代码]#

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

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

log_marginal_likelihood(theta=None, eval_gradient=False, clone_kernel=True)[源代码]#

返回训练数据的theta的log边缘可能性。

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

参数:
theta形状类似数组(n_kernel_params,),默认值为无

对其进行log边际似然性评估的核超参数。在多类分类的情况下,theta可以是复合核或单个核的超参数。在后一种情况下,所有单个内核都被分配相同的theta值。如果无,则预先计算的log_边际_似然 self.kernel_.theta 已经回来了

eval_gradient布尔,默认=假

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

clone_kernel布尔,默认=True

如果为True,则复制内核属性。如果为False,则会修改内核属性,但可能会导致性能改进。

返回:
log_likelihood浮子

训练数据的theta的log边缘似然。

log_likelihood_gradient形状的nd数组(n_core_params,),可选

相对于位置theta处核超参数的log边际似然度的梯度。只有当 eval_gradient 是真的

predict(X)[源代码]#

对测试载体X数组执行分类。

参数:
X类似阵列的形状(n_samples,n_features)或对象列表

查询GP评估分类的点。

返回:
C形状的nd数组(n_samples,)

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

predict_proba(X)[源代码]#

测试载体X的返回概率估计。

参数:
X类似阵列的形状(n_samples,n_features)或对象列表

查询GP评估分类的点。

返回:
C形状类似阵列(n_samples,n_classes)

返回模型中每个类的样本概率。这些列按排序顺序对应于类,因为它们出现在属性中 classes_ .

score(X, y, sample_weight=None)[源代码]#

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

在多标签分类中,这是子集准确度,这是一个苛刻的指标,因为您需要为每个样本正确预测每个标签集。

参数:
X形状类似阵列(n_samples,n_features)

测试样本。

y形状的类似阵列(n_samples,)或(n_samples,n_outputs)

真正的标签 X .

sample_weight形状类似数组(n_samples,),默认=无

样本重量。

返回:
score浮子

平均准确度 self.predict(X) w.r.t. y .

set_params(**params)[源代码]#

设置此估计器的参数。

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

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

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

请求元数据传递给 score

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 score 如果提供的话。如果未提供元数据,则会忽略请求。

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

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

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

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

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 score .

返回:
self对象

更新的对象。