scikit中的高斯过程回归学习没有内核梯度评估

时间:2017-08-08 00:58:37

标签: scikit-learn regression gradient gaussian

我正在使用sklearn中的模块GaussianProcessesRegression进行简单的高斯回归。但是我试图实现我自己的内核而不是模块内核提供的内核。

我遇到了超参数优化的问题(可能是我错误地实现了内核梯度,我没有看到错误)。所以我的问题是:

我怎样才能运行`fit' (优化超参数的情况下)GaussianProcessesRegression模块在优化过程中没有评估内核梯度?

从文档中可以通过设置变量`eval_gradient = False'但实际上我不能用这个变量调用任何方法。

这是我正在使用的代码的一个概念:

import numpy as np
from sklearn.gaussian_process import GaussianProcessRegressor
import kernels as my_kernel

kernel1 = 1.0*my_kernel.RBF_D(length_scale=np.linspace(1,10,10), length_scale_bounds=(1e-3, 100.0))

gp = GaussianProcessRegressor(kernel=kernel1, n_restarts_optimizer=10)
gp.fit(Xtrain,Ytrain)
hyperp = = gp.kernel_.get_params()
y_gp,y_train_std=gp.predict(Xtrain,return_std=True)

如果我试着打电话

gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=0,eval_gradient=False)

我有错误:

`Traceback(最近一次调用最后一次):...

gp = GaussianProcessRegressor(kernel = kernel1,n_restarts_optimizer = 10,eval_gradient = False) TypeError: init ()得到了一个意外的关键字参数' eval_gradient' '

同样,如果我尝试

gp.fit(Xtrain, Ytrain, eval_gradient=False)

`TypeError:fit()得到了一个意外的关键字参数' eval_gradient' '

很明显它没有用,但我没有任何其他想法。有关如何做到这一点的任何暗示?

(我使用自己的内核的事实与此问题无关)

1 个答案:

答案 0 :(得分:0)

您提到了“文档”,http://scikit-learn.org/stable/modules/generated/sklearn.gaussian_process.GaussianProcessRegressor.html

它解释了GPR可以调用你提供的优化器,它可以在调用目标函数时指定eval_gradient