爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 20694|回复: 5

[经验总结] 科研颜狗:python之克里金插值模块pykriging

[复制链接]

新浪微博达人勋

发表于 2020-12-24 10:02:31 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
一、科研界也是颜狗

现在的文化很肤浅,不论人、狗、电子产品,都是颜值为王,
科研界也是如此,图的美观性胜过数据的准确性,
不仅中国,Nature和Science对图的要求,都是十分苛刻的。

克里金插值法是我最喜欢的平面插值法,虽然它的原理我一知半解,准确性也不好把握,
但是它出的图真的很漂亮!

而且,它的速度还挺快,
以前我经常用IDL出克里金的图,
以下是我长期使用、久经考验的程序:
IDL之通用版克里金Kriging插值程序

二、曲高和寡

python中的克里金模块是pyKriging,网上的帖子都是把它内置的示例运行一遍,所以出的结果都是一样的,
以前我研究PyQt与JS交互方法时,也发现网上的帖子几乎都是抄的同一家:
PyQt与高德地图JS交互操作范例
由此可见,但凡有些深度的知识,网上就不好找了,还得靠自己和身边的小圈子。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2020-12-24 10:11:40 | 显示全部楼层
三、样板程序

我使用的是python3.8,网上有人是用python2.7

克里金插值图.png
import pyKriging  
from pyKriging.krige import kriging  
from pyKriging.samplingplan import samplingplan

# The Kriging model starts by defining a sampling plan,
# we use an optimal Latin Hypercube here

sp = samplingplan(2)  
X = sp.optimallhc(20)

# Next, we define the problem we would like to solve
testfun = pyKriging.testfunctions().branin  
y = testfun(X)

# Now that we have our initial data,
# we can create an instance of a Kriging model

k = kriging(X, y, testfunction=testfun, name='simple')  
k.train()

# Now, five infill points are added.
# Note that the model is re-trained after each point is added

numiter = 5  
for i in range(numiter):  
    print('Infill iteration {0} of {1}....'.format(i + 1, numiter))
    newpoints = k.infill(1)
    for point in newpoints:
        k.addPoint(point, testfun(point)[0])
    k.train()

# 出图
k.plot()



密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-12-24 10:45:28 | 显示全部楼层
四、深入源码


克里金插值法虽然理论比较复杂,但是代码不是太长,
网上有人直接用matlab手敲克里金插值法,
IDL的krig2d.pro是352行,pyKriging包是9个文件2500行,
通过阅读源码,化繁为简,精炼出通用程序,
目前至少有2步:
1、将样本数据替换为自定义数据,
2、从kriging.plot方法中分离计算结果,把画图部分剔除


360截图20201224101654462.jpg
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-12-24 19:03:47 | 显示全部楼层
分享,棒
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-7-4 08:53:55 | 显示全部楼层
{:eb502:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-10-1 11:56:14 | 显示全部楼层
谢谢楼主!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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