Scikit learn scikit学习中无核梯度估计的高斯过程回归

Scikit learn scikit学习中无核梯度估计的高斯过程回归,scikit-learn,regression,gradient,gaussian,Scikit Learn,Regression,Gradient,Gaussian,我正在使用sklearn中的高斯过程回归模块进行简单的高斯回归。然而,我试图实现我自己的内核,而不是模块内核提供的内核 我在超参数的优化方面遇到了问题(可能是我错误地实现了内核梯度,我没有看到错误)。所以我的问题是: 我如何运行GaussianProcessResgression模块的“fit”(超参数优化发生的地方)方法,而不在优化过程中评估核梯度 从文档中可以设置变量'eval_gradient=False',但实际上我不能用这个变量调用任何方法 这是我正在使用的代码的想法: import

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

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

我如何运行GaussianProcessResgression模块的“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(内核=kernel1,n_重新启动\u优化器=10,eval_梯度=False) TypeError:init()获得意外的关键字参数“eval_gradient”

同样,如果我尝试

gp.fit(Xtrain、Ytrain、eval\u gradient=False)

`TypeError:fit()获得意外的关键字参数“eval_gradient”

这很明显,它不起作用,但我没有任何其他想法。有没有关于如何做到这一点的提示

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

您提到了“文档”


它解释了GPR可以调用您提供的优化器,它可以在调用目标函数时指定
eval\u gradient

为我们提供了一个提示,说明您当前正在运行哪些代码来尝试此操作。我重新编辑了,谢谢。是的,我假设有一种方法可以将相同的变量也指定给默认优化器。但如果可能的话,我不知道该怎么做,“意外的关键字参数‘eval_gradient’”诊断是准确的,并且与文档相符。看起来您想要编写一个
优化器
回调并将其传递给GPR。