8

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

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

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

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

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

4

2 回答 2

5

是的,您绝对可以在scikit_learn.

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

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

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

于 2015-06-03T10:42:25.740 回答
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)
于 2017-04-06T17:22:00.603 回答