【问题标题】:Kernel parameters of Gaussian Process Regression: How to get them in Scikit-learn?高斯过程回归的内核参数:如何在 Scikit-learn 中获取它们?
【发布时间】:2018-10-21 14:37:32
【问题描述】:

我在使用 Scikit-learn 的 GaussianProcessRegressor 的回归运算中使用平方指数内核或 RBF。此外,我使用内部可用的优化器'fmin_l_bfgs_b'(L-BFGS-B 算法)来优化内核参数。在我的例子中,内核参数是长度尺度和信号方差。关于log_marginal_likelihood的文档如下:

我按照此文档打印了GPML kernellog_marginal_likelihood。以下是代码sn-p:

print("GPML kernel: %s" % gp.kernel_)
print("Log-marginal-likelihood:",
       gp.log_marginal_likelihood(gp.kernel_.theta, eval_gradient = True))

在控制台打印以下值:

    GPML kernel: 31.6**2 * RBF(length_scale=1.94)
Log-marginal-likelihood: (-115.33295413296841, array([ 1.01038168e+02, -2.16465175e-07]))

在这里,我无法计算出在对数边际似然处打印的值。数组里面的值是什么?

我关于回归的代码 sn-p 如下:

x_train = np.array([[0,0],[2,2],[3,3]])
y_train = np.array([200,321,417])
xvalues = np.array([0,1,2,3])
yvalues = np.array([0,1,2,3])
a,b = np.meshgrid(xvalues,yvalues)
positions = np.vstack([a.ravel(), b.ravel()])
x_test = (np.array(positions)).T
kernel = C(1.0, (1e-3, 1e3)) * RBF(10)
gp = GaussianProcessRegressor(kernel=kernel, optimizer = 'fmin_l_bfgs_b',alpha = 1.5, n_restarts_optimizer=5)
gp.fit(x_train, y_train)
y_pred_test, sigma = gp.predict(x_test, return_std =True)

我打印内核参数的方法是否正确?

谢谢!

【问题讨论】:

    标签: python scikit-learn regression hyperparameters


    【解决方案1】:

    gp.log_marginal_likelihood 返回的值在您附加的文档中指示,第一个值实际上是所传递参数的结果对数边际可能性,在您的情况下为gp.kernel_.theta,并且数组中的值是梯度尊重内核的参数。

    实际得到优化后的内核参数。使用返回的内核:

    gp.kernel_.get_params()
    

    它返回一个包含参数的字典,或者您可以使用以下方法单独获取它们:

    gp.kernel_.k1
    

    gp.kernel_.k2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-15
      • 2019-09-15
      • 2019-07-23
      • 2019-07-26
      • 2020-03-11
      • 2018-01-15
      • 2020-05-30
      相关资源
      最近更新 更多