我正在使用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 回答
你提到"the documentation",http://scikit-learn.org/stable/modules/generated/sklearn.gaussian_process.GaussianProcessRegressor.html
它解释了GPR可以调用您提供的优化器,它可以在调用目标函数时指定
eval_gradient
.