GaussianProcessRegressor#

class sklearn.gaussian_process.GaussianProcessRegressor(kernel=None, *, alpha=1e-10, optimizer='fmin_l_bfgs_b', n_restarts_optimizer=0, normalize_y=False, copy_X_train=True, n_targets=None, random_state=None)[源代码]#

高斯过程回归(GPT)。

该实现基于的算法2.1 [RW2006].

除了标准的scikit-learn估计器API外, GaussianProcessRegressor :

  • 允许在没有先验匹配的情况下进行预测(基于GP先验)

  • 提供了额外的方法 sample_y(X) ,它评估在给定输入下从GPT(之前或之后)提取的样本

  • 暴露一种方法 log_marginal_likelihood(theta) ,它可以在外部用于选择超参数的其他方式,例如,通过马尔科夫链蒙特卡洛。

要了解点估计方法与更多的Bayesian建模方法之间的区别,请参阅标题为 核岭回归与高斯过程回归的比较 .

阅读更多的 User Guide .

Added in version 0.18.

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

指定GP的协方差函数的内核。如果传递无,则内核 ConstantKernel(1.0, constant_value_bounds="fixed") * RBF(1.0, length_scale_bounds="fixed") 用作默认设置。请注意,除非边界标记为“固定”,否则核超参数在适配期间会被优化。

alpha形状的float或nd数组(n_samples,),默认= 1 e-10

在拟合期间添加到核矩阵对角线的值。这可以通过确保计算值形成正定矩阵来防止拟合期间的潜在数值问题。它也可以解释为训练观测值上的额外高斯测量噪声的方差。请注意,这与使用 WhiteKernel .如果传递数组,则它必须具有与用于拟合的数据相同的条目数,并用作数据点相关的噪声水平。允许将噪声水平直接指定为参数主要是为了方便和与 Ridge .

optimizer“fmin_l_bfgs_b”,可调用或无,默认=“fmin_l_bfgs_b”

可以是内部支持的优化器之一,用于优化内核参数(由字符串指定),也可以是作为可调用传递的外部定义的优化器。如果传递了可调用内容,则它必须具有签名::

def optimizer(obj_func, initial_theta, bounds):
    # * 'obj_func': the objective function to be minimized, which
    #   takes the hyperparameters theta as a 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

默认情况下,L-BFGS-B算法 scipy.optimize.minimize 采用了如果传递无,则内核的参数保持固定。可用的内部优化器包括: {'fmin_l_bfgs_b'} .

n_restarts_optimizerint,默认=0

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

normalize_y布尔,默认=假

是否规范化目标值 y 通过去除均值并缩放到单位方差。对于使用零均值、单位方差先验的情况,建议采用这一方法。请注意,在此实现中,在报告GP预测之前,规范化被逆转。

在 0.23 版本发生变更.

copy_X_train布尔,默认=True

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

n_targetsint,默认=无

目标值的维度数。用于确定从先前分布中抽样时的输出数量(即调用 sample_y 之前 fit ).此参数被忽略一次 fit 已被呼叫。

Added in version 1.3.

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

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

属性:
X_train_类似阵列的形状(n_samples,n_features)或对象列表

特征载体或训练数据的其他表示(预测也需要)。

y_train_形状类似阵列(n_samples,)或(n_samples,n_targets)

训练数据中的目标值(预测也需要)。

kernel_内核实例

用于预测的内核。内核的结构与作为参数传递的结构相同,但具有优化的超参数。

L_array-like of shape(n_samples,n_samples)

核的下三角Cholesky分解 X_train_ .

alpha_形状类似阵列(n_samples,)

核空间中训练数据点的双重系数。

log_marginal_likelihood_value_浮子

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

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.

参见

GaussianProcessClassifier

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

引用

[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 make_friedman2
>>> from sklearn.gaussian_process import GaussianProcessRegressor
>>> from sklearn.gaussian_process.kernels import DotProduct, WhiteKernel
>>> X, y = make_friedman2(n_samples=500, noise=0, random_state=0)
>>> kernel = DotProduct() + WhiteKernel()
>>> gpr = GaussianProcessRegressor(kernel=kernel,
...         random_state=0).fit(X, y)
>>> gpr.score(X, y)
0.3680...
>>> gpr.predict(X[:2,:], return_std=True)
(array([653.0..., 592.1...]), array([316.6..., 316.6...]))
fit(X, y)[源代码]#

适应高斯过程回归模型。

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

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

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

目标值。

返回:
self对象

GaussianProcess回归类实例。

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

对其进行log边际似然性评估的核超参数。如果无,则预先计算的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为True时返回。

predict(X, return_std=False, return_cov=False)[源代码]#

使用高斯过程回归模型进行预测。

我们还可以通过使用GP先验来基于不适合的模型进行预测。除了预测分布的平均值外,还可以选择返回其标准差 (return_std=True )或协方差 (return_cov=True ).请注意,最多可以请求两者中的一个。

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

查询评估GP的点。

return_std布尔,默认=假

如果为True,则会返回查询点处预测分布的标准差和平均值。

return_cov布尔,默认=假

如果为True,则会返回查询点处联合预测分布的协方差和平均值。

返回:
y_mean形状的nd数组(n_samples,)或(n_samples,n_targets)

查询点预测分布的平均值。

y_std形状的nd数组(n_samples,)或(n_samples,n_targets),可选

查询点预测分布的标准差。只有当 return_std 是真的

y_cov形状的nd数组(n_samples,n_samples)或 (n_samples,n_samples,n_targets),可选

查询点联合预测分布的协方差。只有当 return_cov 是真的

sample_y(X, n_samples=1, random_state=0)[源代码]#

从高斯过程中提取样本并在X处进行评估。

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

查询评估GP的点。

n_samplesint,默认=1

每个查询点从高斯过程提取的样本数。

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

确定随机数生成以随机抽取样本。传递int以获得跨多个函数调用的可重复结果。看到 Glossary .

返回:
y_samples形状的nd数组(n_samples_X,n_samples),或 (n_samples_X,n_targets,n_samples)

从高斯过程提取并在查询点评估的n_samples样本的值。

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

返回预测的决定系数。

决定系数 \(R^2\) 被定义为 \((1 - \frac{u}{v})\) ,在哪里 \(u\) 是残差平方和 ((y_true - y_pred)** 2).sum()\(v\) 是平方总和 ((y_true - y_true.mean()) ** 2).sum() .最好的可能分数是1.0,并且可以是负的(因为模型可以任意更差)。始终预测的期望值的恒定模型 y 如果不考虑输入功能,就会得到 \(R^2\) 评分0.0。

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

Test samples. For some estimators this may be a precomputed kernel matrix or a list of generic objects instead with shape (n_samples, n_samples_fitted), where n_samples_fitted is the number of samples used in the fitting for the estimator.

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

真正的价值观 X .

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

样本重量。

返回:
score浮子

\(R^2\)self.predict(X) w.r.t. y .

注意到

\(R^2\) 呼叫时使用的分数 score 在回归器上使用 multioutput='uniform_average' 从0.23版本开始,与默认值保持一致 r2_score .这影响了 score 所有多输出回归器的方法(除了 MultiOutputRegressor ).

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

设置此估计器的参数。

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

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

set_predict_request(*, return_cov: bool | None | str = '$UNCHANGED$', return_std: bool | None | str = '$UNCHANGED$') GaussianProcessRegressor[源代码]#

请求元数据传递给 predict

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

The options for each parameter are:

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

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

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

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

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

Added in version 1.3.

备注

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

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

元数据路由 return_cov 参数 predict .

return_std字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 return_std 参数 predict .

返回:
self对象

更新的对象。

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

请求元数据传递给 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对象

更新的对象。