我正在考虑使用这种方法来插值我拥有的一些3D点。作为输入,我有一个地区不同高度的气体在大气中的浓度。我拥有的数据显示为几十英尺的垂直高程的每几英尺的值,但水平分隔数百英尺(所以“列”的紧凑的值)。
假设在任何给定的时间点上,值在垂直方向上的变化明显大于在水平方向上的变化。
我想要在考虑到这个假设的情况下执行3D克里金法(作为我可以调整的参数,或者是统计定义的参数-要么/或者)。
我相信scikit学习模块可以做到这一点。如果可以,我的问题是如何创建离散单元输出?也就是说,输出到尺寸为50x50x1英尺的3D数据网格。理想情况下,我希望输出的x_location,y_location,值与这些(或类似)距离的分隔。
不幸的是,我没有太多的时间去尝试它,所以在深入研究它之前,我只是希望弄清楚这在Python中是否可行。谢谢!
发布于 2015-06-03 18:42:26
是的,你绝对可以在scikit_learn中做到这一点。
事实上,可以使用各向异性协方差核是克里金/高斯过程回归的一个基本特征。
因为它在manual (下面引用)中是精确的,所以您可以自己设置协方差的参数,也可以估计它们。您可以选择让所有参数相等或全部不同。
theta0 : double array_like,可选形状为(n_features,)或(1,)的数组。自相关模型中的参数。如果还指定了thetaL和thetaU,则theta0将被视为最佳参数集的最大似然估计的起点。默认假设各向同性自相关模型,theta0 =1e-1。
发布于 2017-04-07 01:22:01
在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)https://stackoverflow.com/questions/30489610
复制相似问题