我正在使用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' '
很明显它没有用,但我没有任何其他想法。有关如何做到这一点的任何暗示?
(我使用自己的内核的事实与此问题无关)
答案 0 :(得分:0)
它解释了GPR可以调用你提供的优化器,它可以在调用目标函数时指定eval_gradient
。