浏览网页我发现一些在Python中使用Kriging的工具是pyKriging和Gaussian Process Regression。但是,我不能让他们中的任何一个去工作。第一个对我不起作用(甚至不能导入):
import pyKriging
File "~/python3.6/site-packages/pyKriging/krige.py", line 142
except Exception, err:
^
SyntaxError: invalid syntax
第二个我不知道怎么用。我找不到一个简单的工作示例(例如,这个 rroowwllaanndd answer很好,但遗憾的是,数据不再可供下载)
所以我的问题是,我如何用克里格插值我的数据?我有几个站点数据保存在numpy数组中,如下所示:
2000 1 1 5.0
2000 1 2 3.4
2000 1 3 0.2
柱是年-月-日降水量。我有几个这样的数据数组(st1,st2,st3)和另一个数组,其中包含每个站点的ID和每个站点所在的坐标(stid,因此站点1位于经度15.6865,纬度62.6420,依此类推)。
import numpy as np
st1 = np.array([[2000,1,1,5.0],[2000,1,2,3.4],[2000,1,3,0.2]])
st2 = np.array([[2000,1,1,8.2],[2000,1,2,2.5],[2000,1,3,0.0]])
st3 = np.array([[2000,1,1,np.nan],[2000,1,2,4.5],[2000,1,3,1.2]])
stid = np.array([[1,15.6865,62.6420],[2,15.7325,62.1254],[3,16.1035,61.1449]])
我需要的是每天一个数组(或一个3D数组),其中包含每天用Kriging在这样的网格中插值的所有站点的数据:
y = np.arange(61,63,0.125)
x = np.arange(14,17,0.125)
X,Y = np.meshgrid(x,y)
如有任何帮助,我们将不胜感激。
很高兴能找到有趣的文档、包等,kriging通常被称为“高斯过程回归”。
在python中,一个有许多示例的好实现是著名的机器学习包scikit-learn。它是基于著名的DACE-matlab实现的。
关于高斯过程回归实现的文档可以在这个page和其中的链接中找到。您可以在本页底部找到5个教程:enter link description here。可以找到可用内核的列表here。
使用您提供的数据,您只需执行以下操作,即可将一个简单的模型与您选择的内核匹配起来:
利用OpenTURNS,
KrigingAlgorithm
估计条件高斯过程的超参数。所需元模型的目的是将(经度、纬度)2D点作为输入,将给定日期的降水量作为输出。第一步是准备数据。在下面的脚本中,我创建了包含经度/纬度对的
coordinates_train
变量和包含沉淀的precipitation_train
变量。我使用2000年1月2日的降水量,因为3号站的2000年1月1日的数据缺失。然后我们可以训练克里格。为此,我使用一个常数基(模型的趋势)和一个指数协方差模型。这应该是适当的,因为降水量必须是相当规律的相对于车站的位置。
然后我们可以使用元模型来预测一个没有记录的地点的降水量。因为
krigingMetamodel
是一个函数,所以我只使用“(”运算符。那么
precipitation
是包含给定位置的降水的1D点。这是预测的降水量。你也可以通过输入(经度,纬度,时间)得到一个更一般的克里格。在本例中,您所要做的只是向输入训练示例添加一个新维度,该维度包含关联的时间,格式为实值。
相关问题 更多 >
编程相关推荐