找回密码
 会员注册
查看: 20|回复: 0

克里金(Kriging)模型及Pythonpykrige库实现

[复制链接]

2

主题

0

回帖

7

积分

新手上路

积分
7
发表于 2024-9-10 21:27:41 | 显示全部楼层 |阅读模式
1、克里金(Kriging)模型1.1克里金(Kriging)模型简介克里金(Kriging)模型是代理模型的一种。代理模型现在已经发展出多项式响应面(RSM)、Kriging模型、径向基函数模型(RBFS)、神经网络(ANN)、支持向量回归(SVR)、多变量插值回归(MIR)、多项式混沌展开(PCE)等多种代理模型方法。现在的二代代理模型:根据一定准则加入新样本点,循环更新代理模型。克里金(Kriging)模型是代理模型中应用最广泛的,这是因为它不仅能够给出对于未知函数的预估值,而且可以给出预估值的误差,这是其区别于其他模型的显著特点。此外其对于非线性模型具备良好的近似能力。克里金(Kriging)模型本质上是一种插值模型。它是一种基于高斯过程的建模方法(Gaussianprocessbasedmodellingmethod),结构紧凑,计算效率高。很多研究表明,普通克里金(Kriging)模型计算中经常出错,特别是针对于天然非线性问题。所以后来又演化出改进的克里金模型,如“盲Kriging模型”、CoKriging模型等。1.2克里金(Kriging)插值克里金(kriging)插值是在有限区域内对区域化变量进行无偏最优估计的一种方法。无偏指的是估计值和实际值之差的期望等于零,最优指的是估计值和实际值的方差最小。基于这一特点使得克里金插值的效果比其他插值方法要好很多。1.3总结简单而言,克里金(kriging)模型就是一种插值模型,与多项式插值、线性插值、样条插值等类似,根据“采样点”上的值预测非采样点的值。只不过克里金(kriging)模型相较于其他插值方法具备一些优势(上文介绍过了)。其对于非样本点值的预测是基于线性加权组合(linearlyweightedcombination)实现的。在普通克里金(kriging)模型中,通过计算预测点附近的已知值的加权平均来获得预测值。其只有在样本值具备空间相关性时才有意义。2、Python实现:基于pykrige模块pykrige可以实现二维和三维的普通克里金(ordinarykriging)和通用克里金(universalkriging)模型,使用起来很方便。但是更高维度的Kriging模型就得自己从底层原理入手了,目前网上没有找到高维克里金模型的案例。不过知乎评论区有人说“发现了在python里面kriging叫高斯过程回归,做在Python库里面找现成的高斯过程回归库就行,高斯过程回归可以在高维上面用”,后面有时间详细研究。知乎链接:Python|Kriging算法实现-知乎(zhihu.com)关于pykrige更加详细的内容参考pykrige模块官网:pykrige.ok3d.OrdinaryKriging3D—PyKrige1.7.1.dev10documentation(geostat-framework.readthedocs.io)2.1二维OrdinaryKriging参考:克里金插值学习笔记-CSDN博客2.1.1参数介绍:二维ordinarykriging: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)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-29 14:02 , Processed in 0.974377 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表