萝卜一下 2023-05-25 09:33 采纳率: 100%
浏览 14
已结题

ordinarykringing

我使用pykrige.ok.OrdinaryKriging中的插值算法对PM10数据进行插值画图,输出的结果出现特别大的值和特别小的值,用同样的代码调用其他数据,比如AQI,输出结果和预期一样,请问知道为什么吗?

from pykrige.ok import OrdinaryKriging
import pandas as pd
import numpy as np

df = pd.read_excel('test_for_kriging.xlsx')


def data_set(df,type_='AQI'):
    Krin = OrdinaryKriging(df['经度'].values, df['纬度'].values, df[type_].values, variogram_model='linear')#,nlags=6)#gaussian linear
    olon = np.arange(73,136,0.5)
    olat = np.arange(14,55,0.5)
    data, ssl = Krin.execute('grid', olon, olat)
    olon,olat = np.meshgrid(olon,olat)
    return olon, olat, data

olon,olat,data = data_set(df,'PM10')

  • 写回答

2条回答 默认 最新

  • 码上团建 2023-05-25 09:41
    关注

    可能出现特别大和特别小的值是因为在执行插值时,超出原始数据范围的点可能使用了较远的邻居节点,从而导致了结果的异常值。这种情况通常在使用较大的插值范围时更容易发生。可以使用其他插值算法进行插值,例如:径向基函数插值算法(RBF)或反距离插值算法(IDW)等。
    下面是一个示例代码,它使用了RBF插值算法:

    from pykrige.rk import Krige
    import pandas as pd
    import numpy as np
     
    df = pd.read_excel('test_for_kriging.xlsx')
     
     
    def data_set(df,type_='AQI'):
        Krin = Krige(df[['经度', '纬度']].values, df[type_].values, variogram_model='linear', verbose=False, enable_plotting=False)
        olon = np.arange(73,136,0.5)
        olat = np.arange(14,55,0.5)
        data = Krin.execute('grid', olon, olat)
        olon,olat = np.meshgrid(olon,olat)
        return olon, olat, data
     
    olon,olat,data = data_set(df,'PM10')
    
    
    

    如果以上代码时,需要先安装scikit-learn库。在此示例中,我们使用pykrige.rk.Krige类进行插值,并使用线性半变异函数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月11日
  • 已采纳回答 7月3日
  • 创建了问题 5月25日

悬赏问题

  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题