首页 > Python资料 博客日记
克里金(Kriging)模型及Python pykrige库实现
2024-02-29 18:00:04Python资料围观608次
1、克里金(Kriging)模型
1.1克里金(Kriging)模型简介
- 克里金(Kriging)模型是代理模型的一种。代理模型现在已经发展出多项式响应面(RSM)、Kriging模型、径向基函数模型(RBFS)、神经网络(ANN)、支持向量回归(SVR)、多变量插值回归(MIR)、多项式混沌展开(PCE)等多种代理模型方法。
-
现在的二代代理模型:根据一定准则加入新样本点,循环更新代理模型。
- 克里金(Kriging)模型是代理模型中应用最广泛的,这是因为它不仅能够给出对于未知函数的预估值,而且可以给出预估值的误差,这是其区别于其他模型的显著特点。此外其对于非线性模型具备良好的近似能力。
- 克里金(Kriging)模型本质上是一种插值模型。它是一种基于高斯过程的建模方法(Gaussian process based modelling method),结构紧凑,计算效率高。
- 很多研究表明,普通克里金(Kriging)模型计算中经常出错,特别是针对于天然非线性问题。所以后来又演化出改进的克里金模型,如“盲Kriging模型”、Co Kriging模型等。
1.2克里金(Kriging)插值
克里金(kriging)插值是在有限区域内对区域化变量进行无偏最优估计的一种方法。无偏指的是估计值和实际值之差的期望等于零,最优指的是估计值和实际值的方差最小。基于这一特点使得克里金插值的效果比其他插值方法要好很多。
1.3总结
简单而言,克里金(kriging)模型就是一种插值模型,与多项式插值、线性插值、样条插值等类似,根据“采样点”上的值预测非采样点的值。只不过克里金(kriging)模型相较于其他插值方法具备一些优势(上文介绍过了)。
其对于非样本点值的预测是基于线性加权组合(linearly weighted combination)实现的。
在普通克里金(kriging)模型中,通过计算预测点附近的已知值的加权平均来获得预测值。其只有在样本值具备空间相关性时才有意义。
2、Python实现:基于pykrige模块
pykrige可以实现二维和三维的普通克里金(ordinary kriging)和通用克里金(universal kriging)模型,使用起来很方便。
但是更高维度的Kriging模型就得自己从底层原理入手了,目前网上没有找到高维克里金模型的案例。不过知乎评论区有人说“发现了在python里面kriging叫高斯过程回归,做在Python库里面找现成的高斯过程回归库就行,高斯过程回归可以在高维上面用”,后面有时间详细研究。
知乎链接:Python | Kriging算法实现 - 知乎 (zhihu.com)
关于pykrige更加详细的内容参考pykrige模块官网:pykrige.ok3d.OrdinaryKriging3D — PyKrige 1.7.1.dev10 documentation (geostat-framework.readthedocs.io)
2.1二维OrdinaryKriging
2.1.1参数介绍:二维ordinary kriging:pykrige.ok3d.OrdinaryKriging()
pykrige.ok.OrdinaryKriging(x, y, z, variogram_model='linear', variogram_parameters=None, variogram_function=None, nlags=6, weight=False, anisotropy_scaling=1.0, anisotropy_angle=0.0, verbose=False, enable_plotting=False, enable_statistics=False, coordinates_type='euclidean', exact_values=True, pseudo_inv=False, pseudo_inv_type='pinv')
- x, y, z:三个坐标值
- variogram_model:选择需要用的方差模型,linear, power, gaussian, spherical, exponential, hole-effect,custom。默认为linear。hole-effect仅针对于一维问题。
- variogram_parameters:方差模型参数,根据所选方差模型确定。不提供的话则采用“软”(soft)L1范式最小化方案。
- variogram_function:方差模型为custom时需要。
- 其它参数省略,不常用,用默认即可。
2.1.2核心方法:execute(self, style, xpoints, ypoints, mask=None, backend='vectorized', n_closest_points = None)
参数:
- style:定义输入点参数。如果是“grid”,将xpoints, ypoints定义为矩形网格的x、y坐标值列表;如果是“points”,则将xpoints, ypoints作为坐标对处理。
- xpoints, ypoints:坐标值
- backend:计算方法,如果是‘vectorized’,则是向量方法,运算速度更快,但是数据点较多时占用资源大;如果是‘loop',则是遍历求解每个网格点,计算较慢但是占用资源少;如果是“C”,则会采用循环计算。默认是‘vectorized’。
输出:
- zvalues:即为插值结果。
- sigmasq:插值方差。
3、普通克里金(kriging)模型Python实现:底层原理
参考:有空再详细研究
python 普通克里金法程序实现kriging - CSDN文库
【Python进阶】克里金插值法的实现过程 - 知乎 (zhihu.com)其源码在基于 Python(gma) 的克里金 (Kriging) 法插值的主要过程 (qq.com)
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Windows上安装 Python 环境并配置环境变量 (超详细教程)