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)#
高斯过程回归(GPR)。
该实现基于[Rf75674b0f418-RW2006]_的算法2.1。
除了标准的scikit-learn估计器API外,
GaussianProcessRegressor
:允许在未预先拟合的情况下进行预测(基于GP先验)
提供了一个额外的方法
sample_y(X)
,该方法评估在给定输入处从GPR(先验或后验)抽取的样本公开了一个方法
log_marginal_likelihood(theta)
,该方法可以外部用于选择超参数的其他方式,例如通过马尔可夫链蒙特卡罗。
要了解点估计方法与更贝叶斯建模方法之间的区别,请参阅名为 核岭回归和高斯过程回归的比较 的示例。
更多信息请参阅 用户指南 。
Added in version 0.18.
- Parameters:
- kernel核实例, default=None
指定GP协方差函数的核。如果传递None,则默认使用核
ConstantKernel(1.0, constant_value_bounds="fixed") * RBF(1.0, length_scale_bounds="fixed")
。请注意,除非边界标记为“fixed”,否则在拟合过程中会优化核超参数。- alphafloat 或 shape (n_samples,) 的ndarray, default=1e-10
在拟合过程中添加到核矩阵对角线的值。这可以防止在拟合过程中出现潜在的数值问题,通过确保计算的值形成一个正定矩阵。它也可以解释为训练观测值上额外高斯测量噪声的方差。请注意,这与使用
WhiteKernel
不同。如果传递了一个数组,它必须与用于拟合的数据具有相同数量的条目,并作为数据点依赖的噪声水平使用。允许直接将噪声水平指定为参数主要是为了方便,并与Ridge
保持一致。- optimizer“fmin_l_bfgs_b”, callable 或 None, default=”fmin_l_bfgs_b”
可以是内部支持的优化器之一,通过字符串指定,或外部定义的优化器作为可调用对象传递。如果传递了可调用对象,它必须具有以下签名:
def optimizer(obj_func, initial_theta, bounds): # * 'obj_func': 要最小化的目标函数,它将超参数theta作为参数,并可选标志eval_gradient,该标志确定是否额外返回梯度 # * 'initial_theta': theta的初始值,可以被局部优化器使用 # * 'bounds': theta值的边界 .... # 返回的是找到的最佳超参数theta和目标函数的对应值。 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
意味着执行一次运行。- normalize_ybool, default=False
是否通过去除均值并缩放到单位方差来归一化目标值
y
。这对于使用零均值、单位方差先验的情况是推荐的。请注意,在此实现中,归一化在报告GP预测之前被反转。Changed in version 0.23.
- copy_X_trainbool, default=True
如果为True,则在对象中存储训练数据的持久副本。否则,只存储对训练数据的引用,这可能会导致在数据外部修改时预测发生变化。
- n_targetsint, default=None
目标值的维度数。用于决定从先验分布采样时的输出数量(即在调用:meth:
fit
之前调用:meth:sample_y
)。一旦调用:meth:fit
,此参数将被忽略。Added in version 1.3.
- random_stateint, RandomState 实例或 None, default=None
确定用于初始化中心的随机数生成。传递一个int以在多次函数调用中获得可重复的结果。参见 术语 。
- Attributes:
- X_train_shape (n_samples, n_features) 的类数组或对象列表
训练数据的特征向量或其他表示(也用于预测)。
- y_train_shape (n_samples,) 或 (n_samples, n_targets) 的类数组
训练数据中的目标值(也用于预测)。
- kernel_核实例
用于预测的核。核的结构与作为参数传递的核相同,但具有优化的超参数。
- L_shape (n_samples, n_samples) 的类数组
X_train_
中核的下三角Cholesky分解。- alpha_shape (n_samples,) 的类数组
核空间中训练数据点的对偶系数。
- log_marginal_likelihood_value_float
self.kernel_.theta
的对数边际似然。- n_features_in_int
在 fit 期间看到的特征数量。
Added in version 0.24.
- feature_names_in_shape (
n_features_in_
,) 的ndarray 在:term:
fit
期间看到的特征名称。仅当X
具有全部为字符串的特征名称时定义。Added in version 1.0.
See also
GaussianProcessClassifier
基于拉普拉斯近似的高斯过程分类(GPC)。
References
Examples
>>> 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)#
拟合高斯过程回归模型。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组或对象列表
训练数据的特征向量或其他表示。
- y形状为 (n_samples,) 或 (n_samples, n_targets) 的类数组
目标值。
- Returns:
- selfobject
高斯过程回归器类实例。
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
MetadataRequest
封装的 路由信息。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- log_marginal_likelihood(theta=None, eval_gradient=False, clone_kernel=True)#
返回训练数据的theta的对数边缘似然。
- Parameters:
- thetaarray-like of shape (n_kernel_params,) default=None
要评估对数边缘似然的核超参数。如果为None,则返回
self.kernel_.theta
的预计算对数边缘似然。- eval_gradientbool, default=False
如果为True,则额外返回位置theta处相对于核超参数的对数边缘似然的梯度。如果为True,theta不能为None。
- clone_kernelbool, default=True
如果为True,则复制kernel属性。如果为False,则修改kernel属性,但可能会提高性能。
- Returns:
- log_likelihoodfloat
训练数据的theta的对数边缘似然。
- log_likelihood_gradientndarray of shape (n_kernel_params,), optional
位置theta处相对于核超参数的对数边缘似然的梯度。 仅当eval_gradient为True时返回。
- predict(X, return_std=False, return_cov=False)#
使用高斯过程回归模型进行预测。
我们还可以利用GP先验基于未拟合的模型进行预测。除了预测分布的均值外,还可以选择性地返回其标准差(
return_std=True
)或协方差(return_cov=True
)。请注意,最多只能请求其中之一。- Parameters:
- X类数组形状 (n_samples, n_features) 或对象列表
查询点,在这些点上评估GP。
- return_stdbool, 默认=False
如果为True,则在查询点的预测分布的标准差将与均值一起返回。
- return_covbool, 默认=False
如果为True,则在查询点的联合预测分布的协方差将与均值一起返回。
- Returns:
- y_meanndarray 形状 (n_samples,) 或 (n_samples, n_targets)
查询点处的预测分布的均值。
- y_stdndarray 形状 (n_samples,) 或 (n_samples, n_targets), 可选
查询点处的预测分布的标准差。 仅当
return_std
为 True 时返回。- y_covndarray 形状 (n_samples, n_samples) 或 (n_samples, n_samples, n_targets), 可选
查询点处的联合预测分布的协方差。 仅当
return_cov
为 True 时返回。
- sample_y(X, n_samples=1, random_state=0)#
从高斯过程抽取样本并在X处进行评估。
- Parameters:
- Xarray-like of shape (n_samples_X, n_features) or list of object
GP进行评估的查询点。
- n_samplesint, default=1
每个查询点从高斯过程抽取的样本数量。
- random_stateint, RandomState instance or None, default=0
确定随机数生成以随机抽取样本。 传递一个整数以在多个函数调用中获得可重复的结果。 参见:术语表 <random_state>。
- Returns:
- y_samplesndarray of shape (n_samples_X, n_samples), or (n_samples_X, n_targets, n_samples)
从高斯过程抽取的样本值并在查询点处进行评估。
- score(X, y, sample_weight=None)#
返回预测的决定系数。
决定系数 \(R^2\) 定义为 \((1 - rac{u}{v})\) ,其中 \(u\) 是残差平方和
((y_true - y_pred)** 2).sum()
,而 \(v\) 是总平方和((y_true - y_true.mean()) ** 2).sum()
。最好的可能得分是 1.0,它可能是负的(因为模型可能任意地差)。一个总是预测y
的期望值的常数模型,忽略输入特征,将得到 \(R^2\) 得分为 0.0。- Parameters:
- Xarray-like of shape (n_samples, n_features)
测试样本。对于某些估计器,这可能是一个预计算的核矩阵或一个形状为
(n_samples, n_samples_fitted)
的通用对象列表,其中n_samples_fitted
是估计器拟合中使用的样本数量。- yarray-like of shape (n_samples,) or (n_samples, n_outputs)
X
的真实值。- sample_weightarray-like of shape (n_samples,), default=None
样本权重。
- Returns:
- scorefloat
\(R^2\) 相对于
y
的self.predict(X)
。
Notes
在调用回归器的
score
时使用的 \(R^2\) 得分从 0.23 版本开始使用multioutput='uniform_average'
以保持与r2_score
默认值一致。 这影响了所有多输出回归器的score
方法(除了MultiOutputRegressor
)。
- set_params(**params)#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,以便可以更新嵌套对象的每个组件。- Parameters:
- **paramsdict
估计器参数。
- Returns:
- selfestimator instance
估计器实例。
- set_predict_request(*, return_cov: bool | None | str = '$UNCHANGED$', return_std: bool | None | str = '$UNCHANGED$') GaussianProcessRegressor #
Request metadata passed to the
predict
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed topredict
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it topredict
.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:
- return_covstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
return_cov
parameter inpredict
.- return_stdstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
return_std
parameter inpredict
.
- Returns:
- selfobject
The updated object.
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') GaussianProcessRegressor #
Request metadata passed to the
score
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toscore
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it toscore
.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 inscore
.
- Returns:
- selfobject
The updated object.
Gallery examples#
使用高斯过程回归(GPR)对莫纳罗亚数据集的CO2水平进行预测