我正在考虑使用这种方法来插入我所拥有的一些3D点。作为输入,我在一个区域的不同高度处具有大气浓度的气体。我的数据显示为垂直高度每几英尺几十英尺的值,但水平分隔数百英尺(所以'列'紧凑的值)。
假设在任何给定时间点,垂直方向的值变化明显大于水平方向。
我想用这个假设来执行3D克里金法(作为我可以调整的参数或者统计定义的参数 - 或者/或者)。
我相信scikit学习模块可以做到这一点。如果可以,我的问题是如何创建离散单元输出?也就是说,输出到尺寸为50 x 50 x 1英尺的3D数据网格中。理想情况下,我希望[x_location,y_location,value]的输出与这些(或类似的)距离分开。
不幸的是,我没有足够的时间来玩它,所以我只是希望在深入研究它之前弄清楚这是否可以在Python中使用。谢谢!
答案 0 :(得分:4)
是的,你绝对可以在scikit_learn
中做到这一点。
事实上,克里金/高斯过程回归的基本特征是你可以使用各向异性协方差核。
由于它在manual(下面引用)中被精确化,您可以自己设置协方差的参数或估计它们。您可以选择使所有参数相等或全部不同。
theta0:double array_like,可选 具有形状(n_features,)或(1,)的数组。中的参数 自相关模型。如果还指定了thetaL和thetaU,那么theta0 被认为是最大可能性的起点 估计最佳参数集。默认假定为各向同性 自相关模型,其中θ= 1e-1。
答案 1 :(得分:0)
In the 2d case, something like this should work:
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)