【问题标题】:How to create anisotropic exponential and gaussian correlation function in Python for kernel?如何在 Python 中为内核创建各向异性指数和高斯相关函数?
【发布时间】:2020-09-04 22:44:42
【问题描述】:

我有一个包含 1000 个观察样本的数据集,其中 6 个特征构成 X,一个目标变量构成 Y。

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

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

【问题讨论】:

    标签: python scikit-learn gaussian kriging


    【解决方案1】:

    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)
    

    【讨论】:

    • 非常感谢。非常感谢您花时间回答这个问题。数组中的值不是由 Gaussian Process Regressor 优化的吗?我从数组中的 1 开始。
    • 是的,它们默认根据文档进行了优化:scikit-learn.org/stable/modules/generated/…
    猜你喜欢
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2015-07-12
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多