当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn GaussianProcessRegressor用法及代码示例


本文简要介绍python语言中 sklearn.gaussian_process.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, random_state=None)

高斯过程回归 (GPR)。

该实现基于[1]的算法2.1。

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

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

  • 提供了一种额外的方法 sample_y(X) ,它评估在给定输入处从 GPR(先验或后验)抽取的样本

  • 公开了一个方法 log_marginal_likelihood(theta) ,该方法可以在外部用于其他选择超参数的方法,例如,通过马尔可夫链蒙特卡罗。

在用户指南中阅读更多信息。

参数

kernel内核实例,默认=无

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

alphafloat 或 ndarray 形状 (n_samples,),默认 = 1e-10

在拟合期间添加到核矩阵对角线的值。这可以通过确保计算值形成正定矩阵来防止拟合过程中出现潜在的数值问题。它也可以解释为额外的高斯测量噪声对训练观察的方差。请注意,这与使用 WhiteKernel 不同。如果传递一个数组,它必须具有与用于拟合的数据相同的条目数,并用作datapoint-dependent 噪声级别。允许将噪声级别直接指定为参数主要是为了方便并与 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

默认情况下,使用来自 scipy.optimize.minimize 的 L-BFGS-B 算法。如果 None 被传递,内核的参数保持固定。可用的内部优化器是:{'fmin_l_bfgs_b'}

n_restarts_optimizer整数,默认=0

优化器重新启动的次数,用于查找最大化log-marginal 可能性的内核参数。优化器的第一次运行是从内核的初始参数执行的,其余的(如果有的话)来自 thetas 从允许的 theta-values 的空间中随机采样 log-uniform。如果大于 0,则所有边界都必须是有限的。请注意,n_restarts_optimizer == 0 意味着执行了一次运行。

normalize_y布尔,默认=假

是否通过移除均值并缩放到 unit-variance 来规范化目标值 y。对于使用zero-mean、unit-variance 先验的情况,建议使用此方法。请注意,在此实现中,标准化在报告 GP 预测之前被反转。

copy_X_train布尔,默认=真

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

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

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

属性

X_train_形状类似数组 (n_samples, n_features) 或对象列表

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

y_train_形状为 (n_samples,) 或 (n_samples, n_targets) 的类似数组

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

kernel_内核实例

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

L_形状类似数组 (n_samples, n_samples)

X_train_ 中内核的下三角 Cholesky 分解。

alpha_形状类似数组 (n_samples,)

核空间中训练数据点的对偶系数。

log_marginal_likelihood_value_浮点数

self.kernel_.theta 的 log-marginal-likelihood 。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

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

参考

1

拉斯穆森,卡尔·爱德华。 “机器学习中的高斯过程。”机器学习暑期学校。施普林格,柏林,海德堡,2003.

例子

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

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.gaussian_process.GaussianProcessRegressor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。