【发布时间】:2018-01-15 09:32:29
【问题描述】:
我正在使用 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)
我有错误:
` 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() got an unexpected keyword argument 'eval_gradient' '
很明显它不起作用,但我没有任何其他想法。有关如何执行此操作的任何提示?
(我使用自己的内核与这个问题无关)
【问题讨论】:
-
向我们提供有关您当前正在运行什么代码来尝试此操作的提示。
-
我重新编辑了,谢谢。
标签: scikit-learn regression gradient gaussian