首页 文章

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

提问于
浏览
-1

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

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

如何在优化期间运行GaussianProcessesRegression模块的方法`fit'(发生超参数的优化)而不评估内核梯度?

从文档中可以通过设置变量`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)

我有错误:

`回溯(最近的呼叫最后):...

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 回答

相关问题