首页 > 解决方案 > 在 sk learn 中为 2D 高斯过程回归器创建内核

问题描述

我正在尝试将高斯过程回归模型用于贝叶斯优化部分。GP模型是为了逼近我的目标函数。它有两个输入(变量)(x,y),它们返回一个输出 z。我正在努力了解用于 GP 模型的内核/内核组合。我已经尝试了两个 SE 内核(RBF + RBF 和 RBF x RBF)的乘积和总和,到目前为止,预测并不是那么好。我使用了 81 个训练点(x,y 对)和结果 z 值来训练模型。如果有帮助,我还包括下面的 3D 数据图像和代码。真的,我只需要一些帮助来了解要使用哪些内核/如何构建自定义内核以适应我的数据。任何帮助将不胜感激。

在此处输入图像描述

下面是我的代码:


    x_train = np.array(list_of_pairs)
    y_train = training_data['result'].to_list()
    
    kernel = gp.kernels.RBF(length_scale=0.00000000005, length_scale_bounds=(0.000001, 100000)) * gp.kernels.RBF(length_scale=0.00000000005, length_scale_bounds=(0.000001, 100000)) 
    model = gp.GaussianProcessRegressor(kernel = kernel, n_restarts_optimizer=4)
    model.fit(x_train, y_train)
    
    test_sample = [[0.1,57]]
    test_sample = np.array(test_sample)
    yhat, covar = model.predict(test_sample, return_std=True)
    print(yhat, covar)
    print(model.kernel_.get_params())

下面是一些输出错误的截图,我也可以使用一些帮助理解。在此处输入图像描述

标签: pythonscikit-learngaussiangaussian-process

解决方案


推荐阅读