Python中的GPS轨迹聚类
专栏:科技资讯
发布日期:2018-12-10
阅读量:10840
作者:小爱

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

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

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

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

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

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

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

1544425351384077441.png

应用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 的示例。

1544425364932044907.png

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绘制谷歌地图上的所有轨迹。

1544425379870062573.png

数据集中的GPS轨迹

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

1544425393235041890.png

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

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

1544425405389027289.png

用于运行轨迹聚类的代码

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

1544425417105004681.png

使用gmplot聚类图

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

1544425429430035680.png

Cluster #0

1544425447283094162.png

Cluster #2

1544425459131099102.png

Cluster #30

结论

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

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

上一页:“5G”为什么那么火爆,将带来哪些变革
下一页:什么是量子,量子力学名词解释
说点什么
发表
最新评论
    本文由爱用建站平台用户上传并发布,爱用建站仅提供信息发布平台。文章仅代表作者个人观点,不代表爱用建站立场。未经作者许可,不得转载。有涉嫌抄袭的内容,请通过 反馈中心 进行举报。

    如有投稿需求,可点击立即投稿
    免费建站
    品牌营销
    免费小程序

    精彩资讯

    更多>>
    网站建设

    热点关注

    更多>>

    点击开启品牌新篇章