美文网首页
GPS轨迹缺失值填补

GPS轨迹缺失值填补

作者: 陈亮2019 | 来源:发表于2018-12-28 11:07 被阅读0次

从硬件设备收集位置信息时,由于设备问题或传输问题,会发生位置信息缺失情况,需要根据前面已有的数据补充缺失数据,以便于后续的分析处理。

本文用Kalman滤波来填补缺失位置信息。

例如有15个GPS位置点,每个点之间的收集间隔时间为一小时。

ship_data = np.array([[ 30.6751, 122.191 ],)

      [ 30.7723, 122.207 ],

      [ 30.9336, 122.221 ],

      [ 31.0166, 122.198 ],

      [ 31.0634, 122.113 ],

      [ 31.0812, 122.033 ],

      [ 31.1106, 121.972 ],

      [ 31.1321, 121.934 ],

      [ 31.1425, 121.915 ],

      [ 31.167 , 121.871 ],

      [ 31.2117, 121.817 ],

      [ 31.283 , 121.745 ],

      [ 31.366 , 121.634 ],

      [ 31.4468, 121.482 ],

      [ 31.5351, 121.361 ]]

将第11到14的3个点设置为缺失,然后用kalman滤波来填补。 

设置缺失值时需要用到numpy 的ma类。 

```python

from numpy import ma

from pykalman import KalmanFilter

km_data = ma.asarray(ship_data)

km_data[11:14]=ma.masked

```

此时km_data=masked_array(

  data=[[30.6751, 122.191],

        [30.7723, 122.207],

        [30.9336, 122.221],

        [31.0166, 122.198],

        [31.0634, 122.113],

        [31.0812, 122.033],

        [31.1106, 121.972],

        [31.1321, 121.934],

        [31.1425, 121.915],

        [31.167, 121.871],

        [31.2117, 121.817],

        [--, --],

        [--, --],

        [--, --],

        [31.5351, 121.361]],

  mask=[[False, False],

        [False, False],

        [False, False],

        [False, False],

        [False, False],

        [False, False],

        [False, False],

        [False, False],

        [False, False],

        [False, False],

        [False, False],

        [ True,  True],

        [ True,  True],

        [ True,  True],

        [False, False]],

  fill_value=1e+20)

然后用kalman滤波器进行处理

init_mean = np.mean(ship_data[0:11],axis=0)

kf = KalmanFilter(initial_state_mean=init_mean, n_dim_obs=2)

result,_ = kf.em(km_data).smooth(km_data)

result是smooth后的位置信息。

array([[ 30.71337729, 122.20059021],

      [ 30.79026542, 122.2087261 ],

      [ 30.91422361, 122.20673372],

      [ 30.9988365 , 122.17886039],

      [ 31.05295974, 122.10927779],

      [ 31.08223278, 122.03751336],

      [ 31.11014741, 121.97826347],

      [ 31.13106912, 121.93798154],

      [ 31.14553269, 121.91038793],

      [ 31.17245686, 121.866536  ],

      [ 31.21827118, 121.80480735],

      [ 31.2931099 , 121.70132513],

      [ 31.36794862, 121.59784291],

      [ 31.44278734, 121.49436068],

      [ 31.51762607, 121.39087846]])

创建KalmanFilter时initial_stat_mean 取前11个数据的均值,n_dim_obs取2,应为要处理的数据有两列,经度和纬度。

将原始数据和经过kalman滤波器处理后的数据点画图做一个比较。蓝色为真实点,黄色为Kalman滤波器处理后的点。

plt.scatter(ship_data[:,0],ship_data[:,1],label='true')

plt.scatter(result[:,0],result[:,1],label='klm')

plt.legend()

相关文章

  • GPS轨迹缺失值填补

    从硬件设备收集位置信息时,由于设备问题或传输问题,会发生位置信息缺失情况,需要根据前面已有的数据补充缺失数据,以便...

  • 《机器学习实战》算法总结

    缺失值 使用可用特征的均值来填补缺失值 使用特殊值来填补缺失值,如-1 忽略有缺失值的样本 使用相似样本的均值添补...

  • 缺失值判断以及处理

    #####缺失值判断以及处理##### #举例1:向量类型判断缺失值is.na和缺失值的填补which (x<-c...

  • 用户漏电检测

    填补缺失值 对数据进行预测 使用随机森林

  • R进阶:缺失值的处理、拟合关系

    缺失值的处理 1.使用中位数或者均值(非数值时使用众数)来填补缺失值 2.使用随机数3.使用mice包多重填补法补...

  • 缺失值插补2(转)

    举例1:向量类型判断缺失值is.na和缺失值的填补which (x<-c(1,2,3,NA)) is.na(x) ...

  • 随机森林如何处理缺失值

    序 RF中有相应的缺失值处理方法,本次记录其两种缺失值处理技巧 暴力填补 Python中的na.roughfix包...

  • python线性插值解析

    在缺失值填补上如果用前后的均值填补中间的均值,比如,0,空,1,[https://www.bilibili.com...

  • Kaggle

    数据预处理: 步骤: 删除不需要的列;填补缺失值;类别特征进行labelencode;连续值进行切分 1.分析数据...

  • 第7章 数据清洗和准备

    7.1处理缺失数据 滤除确实数据 dropna方法 thresh参数:将非空值为参数值以上的全部留下 填补缺失数据...

网友评论

      本文标题:GPS轨迹缺失值填补

      本文链接:https://www.haomeiwen.com/subject/wokslqtx.html