Python中的GPS轨迹聚类
专栏:科技资讯
发布日期:2018-12-10
阅读量:10844
当我们想要利用智能手机或智能手环等个人设备生成的GPS数据时,G PS轨迹聚类是一种常见的分析。 在本文中,我们将介绍一种在Python中执行GPS轨迹聚类的快速简便方法。这里的主要目标是创建包含“相似”轨迹的聚类。例如,我们希望将每天从工作到家的路径放在同一个聚类中。 本文分为两个主要部分。首先,我们将描述聚类算法。在第二部分中,我们将展示如何在Python中使用和自定义算法。 神经图像算法与GPS轨迹聚类在本文中,我们使用了一种用于neuromaging的聚类算法,而不是像K-Means或DBSCAN那样使用经典的聚类算法。 QuickBundles (QB)是一种简单的聚类算法,用于磁共振成像中对应用tractography算法得到的白质纤维进行聚类。 只需查看下图,我们就可以看到大脑中的白质纤维看起来像GPS轨迹。 主要思想是将每个GPS轨迹视为白质纤维,然后在同一个聚类中合并“相似”轨迹。在本文的其余部分,我们将假设GPS Trajectory = White Matter Fiber。 有了这个假设,我们就可以使用原始论文中提供的算法描述:
在下图中,我们展示了算法如何根据给定的阈值合并公共质心中的不同streamlines 的示例。 阈值是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绘制谷歌地图上的所有轨迹。 我们现在可以从定义两个GPS轨迹(streamlines)之间的距离函数开始。我们将使用GeoPy库中定义的GPS距离,而不是使用QuickBundle中提供的经典欧几里得距离。 我们计算了两个轨迹之间的平均点的GPS距离。这种计算距离的方法可以在且仅当两个轨迹具有相同数量的点时使用,这就是为什么我们使用ResampleFeature类重新采样所有轨迹的原因。 一旦定义了两条轨迹之间的距离,就可以运行QuickBundle聚类算法。 然后,我们可以像以前一样使用gmplot绘制谷歌地图上不同聚类中包含的轨迹。 这里是my_map.html的结果,用于绘制不同的聚类 结论在本文中,我们描述了一种简单快速的方法来执行GPS数据的轨迹聚类。目标是使用QuickBundles实现的,QuickBundles是一种应用于神经成像的聚类算法。 该算法的主要限制与阈值参数的调整有关。但是,作为数据分析中的所有内容,需要根据所需的群集类型选择此参数。 下一页:什么是量子,量子力学名词解释
说点什么
发表
最新评论
|
点击开启品牌新篇章