【问题标题】:Python - Kriging (Gaussian Process) in scikit_learnPython - scikit_learn 中的克里金法(高斯过程)
【发布时间】:2015-08-09 23:03:39
【问题描述】:

我正在考虑使用这种方法来插入我拥有的一些 3D 点。作为输入,我在一个区域的不同高度有大气浓度的气体。我拥有的数据显示为每几英尺垂直高度为几十英尺的值,但水平分隔数百英尺(因此是紧密排列的值的“列”)。

假设在任何给定时间点,垂直方向的值变化明显大于水平方向的变化。

我想在考虑到该假设的情况下执行 3D 克里金法(作为我可以调整的参数或在统计上定义的参数 - 非此即彼)。

我相信 scikit learn 模块可以做到这一点。如果可以,我的问题是如何创建离散单元输出?也就是说,输出到 3D 数据网格,尺寸为 50 x 50 x 1 英尺。理想情况下,我希望输出 [x_location, y_location, value] 并分离这些(或类似的)距离。

不幸的是,我没有太多时间来玩它,所以我只是希望在深入研究之前弄清楚这在 Python 中是否可行。谢谢!

【问题讨论】:

    标签: python 3d interpolation gaussian kriging


    【解决方案1】:

    是的,您绝对可以在scikit_learn 中做到这一点。

    事实上,可以使用各向异性协方差核是克里金/高斯过程回归的一个基本特征。

    正如manual(下文引用)中所述,您可以自己设置协方差参数或估计它们。您可以选择使所有参数相等或完全不同。

    theta0 : double array_like, 可选 形状为 (n_features, ) 或 (1, ) 的数组。中的参数 自相关模型。如果还指定了 thetaL 和 thetaU,则 theta0 被认为是最大似然的起点 估计最佳参数集。默认假定各向同性 theta0 = 1e-1 的自相关模型。

    【讨论】:

      【解决方案2】:

      在 2d 的情况下,这样的事情应该可以工作:

      import numpy as np
      from sklearn.gaussian_process import GaussianProcess
      
      x = np.arange(1,51)
      y = np.arange(1,51)
      X, Y = np.meshgrid(lons, lats)
      
      points = zip(obs_x,  obs_y)
      values = obs_data    # Replace with your observed data
      
      gp = GaussianProcess(theta0=0.1, thetaL=.001, thetaU=1., nugget=0.001)
      gp.fit(points, values)
      XY_pairs = np.column_stack([X.flatten(), Y.flatten()])
      predicted = gp.predict(XY_pairs).reshape(X.shape)
      

      【讨论】:

        猜你喜欢
        • 2019-04-30
        • 2015-07-12
        • 2015-09-14
        • 2020-03-12
        • 2020-11-15
        • 2022-01-10
        • 2020-09-01
        • 2019-10-03
        • 2013-11-24
        相关资源
        最近更新 更多