如何在 Python 中为内核创建各向异性指数和高斯相关函数?

How to create anisotropic exponential and gaussian correlation function in Python for kernel?

我有一个包含 1000 个观测样本的数据集,这些样本由构成 X 的 6 个特征和构成 Y 的一个目标变量组成。

我正在使用克里金法或 Gaussian Process Regressor 来训练我的模型。我想使用各向异性高斯和各向异性指数相关函数作为内核。请参阅随附的方程式片段以供参考。

如何在 python 中定义命名函数?

Scikit-learn 提供各向异性高斯核和指数核。您所要做的就是用长度等于特征数的数组替换长度标度。在高斯内核的情况下,它是这样工作的:

from sklearn.datasets import load_iris
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF,Matern
X, y = load_iris(return_X_y=True)
kernel = 1.0 * RBF([1.0,1.5,0.5,1]) # just create anisotropic kernel here
#kernel = 1.0 * RBF([1]) # isotropic kernel
gpc = GaussianProcessClassifier(kernel=kernel,random_state=0).fit(X, y)
gpc.score(X, y)
gpc.predict_proba(X[:2,:])

您可以获得作为 Matern 核的特例的指数核。我的数学有点生疏,但 Rasmussen&Williams Chapter 4 说这是通过将 nu 参数设置为 0.5 来完成的:

from sklearn.gaussian_process.kernels import Matern    
kernel = 1.0 * Matern(length_scale=[1.0,1.5,0.5,1], nu=0.5)