Python中的GPS轨迹聚类 - Go语言中文社区

Python中的GPS轨迹聚类


当我们想要利用智能手机或智能手环等个人设备生成的GPS数据时,G PS轨迹聚类是一种常见的分析。

在本文中,我们将介绍一种在Python中执行GPS轨迹聚类的快速简便方法。这里的主要目标是创建包含“相似”轨迹的聚类。例如,我们希望将每天从工作到家的路径放在同一个聚类中。

本文分为两个主要部分。首先,我们将描述聚类算法。在第二部分中,我们将展示如何在Python中使用和自定义算法。

神经图像算法与GPS轨迹聚类

在本文中,我们使用了一种用于neuromaging的聚类算法,而不是像K-Means或DBSCAN那样使用经典的聚类算法。

QuickBundles (QB)是一种简单的聚类算法,用于磁共振成像中对应用tractography算法得到的白质纤维进行聚类。

只需查看下图,我们就可以看到大脑中的白质纤维看起来像GPS轨迹。

Python中的GPS轨迹聚类

应用tractography算法获得的白质纤维的实例

主要思想是将每个GPS轨迹视为白质纤维,然后在同一个聚类中合并“相似”轨迹。在本文的其余部分,我们将假设GPS Trajectory = White Matter Fiber。

有了这个假设,我们就可以使用原始论文中提供的算法描述:

算法如下进行。在算法的任何一步,我们都有 M个clusters。选择第一个streamline s1并将其放在第一个cluster c1 ←({1},s1,1); 此时M = 1。对于每个剩余的streamlines,依次 i = 2 ,. 。。,N:

(i)计算streamline si与所有当前聚类 ce 的质心streamline ve之间的距离 , e = 1 ,. 。。,M,其中v动态定义为v = h/n;

(ii)如果任何距离的值me小于聚类阈值θ,,将streamlined i添加到聚类e,最小值为me; ce =(I,h,n),并更新 ce ←(append(I, i), h + s, n + 1); 否则创建一个新的cluster cM + 1 ←([i],si,1),M←M + 1.

在下图中,我们展示了算法如何根据给定的阈值合并公共质心中的不同streamlines 的示例。

Python中的GPS轨迹聚类

QuickBundle质心具有不同的阈值

阈值是THE要选择的参数,以优化聚类算法的行为。如果你想要“大”轨迹,你可以设置阈值的高值。否则,如果您想要小聚类,则需要较低的值。

该论文的作者提供了所提出方法的Python实现。该算法作为dipy库的一部分提供,而算法的文档可在此处获得(http://nipy.org/dipy/examples_built/segment_quickbundles.html#)。

GPS轨迹聚类

我们使用的数据集来自微软亚洲研究院发布的GeoLife GPS Trajectories数据集,可在此处获得(https://www.microsoft.com/en-us/download/details.aspx?id=52367)。该数据集文档:https://yidatao.github.io/2016-12-23/geolife-dbscan/。

在开始执行聚类之前,让我们使用gmplot绘制谷歌地图上的所有轨迹。

Python中的GPS轨迹聚类

数据集中的GPS轨迹

我们现在可以从定义两个GPS轨迹(streamlines)之间的距离函数开始。我们将使用GeoPy库中定义的GPS距离,而不是使用QuickBundle中提供的经典欧几里得距离。

Python中的GPS轨迹聚类

 

我们计算了两个轨迹之间的平均点的GPS距离。这种计算距离的方法可以在且仅当两个轨迹具有相同数量的点时使用,这就是为什么我们使用ResampleFeature类重新采样所有轨迹的原因。

一旦定义了两条轨迹之间的距离,就可以运行QuickBundle聚类算法。

Python中的GPS轨迹聚类

用于运行轨迹聚类的代码

然后,我们可以像以前一样使用gmplot绘制谷歌地图上不同聚类中包含的轨迹。

Python中的GPS轨迹聚类

使用gmplot聚类图

这里是my_map.html的结果,用于绘制不同的聚类

Python中的GPS轨迹聚类

Cluster #0

Python中的GPS轨迹聚类

Cluster #2

Python中的GPS轨迹聚类

Cluster #30

结论

在本文中,我们描述了一种简单快速的方法来执行GPS数据的轨迹聚类。目标是使用QuickBundles实现的,QuickBundles是一种应用于神经成像的聚类算法。

该算法的主要限制与阈值参数的调整有关。但是,作为数据分析中的所有内容,需要根据所需的群集类型选择此参数。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43888876/article/details/84891745
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-27 11:53:13
  • 阅读 ( 2911 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢