artificial-intelligence - 高斯过程回归的空间插值

标签 artificial-intelligence geospatial kriging spatial-interpolation gaussian-process

我有一个包含 140.000 点(行)的 csv 文件。它包括:

  1. 经度值
  2. 纬度值
  3. 特定点的沉降值。我假设这些点在空间上相关。

我想对点的面积进行空间插值分析。这意味着,我将使用克里金法(即高斯过程回归)进行地统计插值分析。

我正在sci-kit learn页面上阅读有关高斯回归的内容。但我不确定如何实现它。

哪些特征决定了我可以使用哪个内核?如何使用我的空间数据正确实现这一点?

最佳答案

首先,您应该将数据转换为投影坐标系。最好的方法取决于您的数据所在的位置;本质上,您希望您的位置具有最小失真量的等角投影(例如,赤道附近的墨卡托投影,或者横轴墨卡托投影,如果您的数据都靠近单个子午线)。您可以在geopandas中实现这一点示例:

import pandas as pd
import geopandas as gpd

data = {'latitude': [54, 56, 58], 'longitude': [-62, -63, -64], 'subsidence': [10, 20, 30]}
df = pd.DataFrame(data)

params ={
    'geometry': gpd.points_from_xy(df.longitude, df.latitude),
    'crs': 'epsg:4326',  # WGS84
}

gdf_ = gpd.GeoDataFrame(df, **params)
gdf = gdf_.to_crs('epsg:2961')   # UTM20N
gdf

GeoDataFrame 现在位于投影坐标中。现在您可以进行一些空间预测:

import numpy as np
from sklearn.gaussian_process.kernels import RBF
from sklearn.gaussian_process import GaussianProcessRegressor

kernel = RBF(length_scale=100_000)
gpr = GaussianProcessRegressor(kernel=kernel)

X = np.array([gdf.geometry.x, gdf.geometry.y]).T
y = gdf.subsidence
gpr.fit(X, y)

现在您可以预测某个位置,例如gpr.predict([(500_000, 5_900_000)]) 为我的玩具数据提供 array([22.86764555])

要在网格上进行预测,您可以这样做:

x_min, x_max = np.min(gdf.geometry.x) - 10_000, np.max(gdf.geometry.x) + 10_000
y_min, y_max = np.min(gdf.geometry.y) - 10_000, np.max(gdf.geometry.y) + 10_000
grid_y, grid_x = np.mgrid[y_min:y_max:10_000, x_min:x_max:10_000]
X_grid = np.stack([grid_x.ravel(), grid_y.ravel()]).T
y_grid = gpr.predict(X_grid).reshape(grid_x.shape)

需要考虑的事情:

  • 您应该阅读 geopandas 的文档和 sklearn.gaussian_process
  • 您应该使内核适合您的数据。
  • 您可能想使用各向异性内核。
  • 估算器有一些您应该注意的超参数。
  • 不要忘记对您的估算进行一些验证,检查残差的分布等。
  • 您可能需要使用专业的地质统计软件包,例如 gstools ,这将为您做很多繁琐的事情。

关于artificial-intelligence - 高斯过程回归的空间插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68624554/

相关文章:

matlab - 有没有实现多输出高斯过程的软件?

matlab - Matlab 中的克里金/高斯过程条件模拟

machine-learning - TensorFlow - 具有数千个标签的分类

c++ - A* 寻路保证找到最短路径?

python - 如何创建平衡的 k 均值地理空间聚类?

r - 在 R 中绘制随时间变化的概率密度热图

java - 我如何在 Java 中使用 Gremlin/Tinkerpop?

algorithm - 寻找位置造句

azure - Azure 搜索 .NET 客户端 API 中的空间搜索

r - 使用 PBSMapping 和 Shapefiles 帮助在 R 中绘制地理数据