轨迹聚类

时间:2013-02-26 09:50:54

标签: python gis data-mining cluster-analysis modeling

我有大量的时间lat / lon。

我正试图从这些数据中找到k-簇的轨迹。对此最好的方法是什么?

感谢。

编辑:

为了使用kmeans /层次聚类,我应该如何为我的数据生成功能(lat / lon + time)?

编辑:

希望这会让它更清晰

以下是我的数据外观的示例:

Trajectory 1:

lat1,lon1 at time1
lat2,lon2 at time2
...
lat55,lon55 at time55
Trajectory 2:

lat343,lon343 at time343
lat344,lon344 at time344
...
lat376,lon376 at time376

不断(更多的轨迹)。

所以说我有200条这样的轨迹,我想把它们分成两组。我该怎么做呢?

我应该使用kmeans / HAC吗?还是应该看另一种方法?

编辑:

这样做的目的是将轨迹分类为k个星团,代表轨迹的k个不同方向。

简单地说,我只是想将轨迹聚类成不同方向的组。我并不担心他们的距离相似之处。

所以说结束我想找到这样的东西:

Direction 1:
Trajectory 4
Trajectory 5
Trajectory 7
Direction 2:
Trajectory 44
Trajectory 2
Trajectory 27

...

Direction 10:
Trajectory 17
Trajectory 8

注意:轨迹的形状主要是线条(不是直线),有些是环状的 注意:lat / lon是一个区域的超本地,所以我可以使用平地近似。

方向非常粗糙。如何计算轨迹之间的相似性以将其聚类以实现此目的?

编辑:

这是一个例证(尽我所能):

Trajectories and End result

我想将轨迹分成这样的方向。

3 个答案:

答案 0 :(得分:3)

K-means围绕最小化差异设计

当您将其应用于纵向数据时,除非您总是靠近赤道并远离180子午线,否则会出现一些错误。因为地球大约是一个球面,而不是一个无限的欧几里德向量空间。

尝试使用基于距离或密度的聚类算法,例如使用大圆距离。分层聚类也可能是比k均值更好的选择。

大圆距离恰好在两点之间。因此要做的下一件事就是弄清楚如何将这些距离和时间成分组合成适合你的轨迹的相似性度量。这完全取决于使用,我们可以与您分享通用解决方案。 相似度越高,群集效果越好!

答案 1 :(得分:1)

您描述问题的方式听起来好像您可以将所有轨迹表示为相对于赤道的角度。然后归结为分段;这不是真正的聚集;见例如https://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization。在您的情况下,值将循环,因此它将在圆上(使用度/角度)而不是在直线上分割值。当然,如果这描述了你的问题,它也提供了一种可视化的好方法。

答案 2 :(得分:0)

Dynamic time warping(DTW)生成一个通常与时间序列数据一起使用的相似性度量(这就是您所拥有的)。然后,您可以将这些DTW相似性用作许多基于相似性的聚类算法中的任何一种的输入。

对于您的数据集,我只提取方向序列,因为如果以不同的速度遍历路径或者以不同的时间间隔采集样本,则包含距离分量可能会导致问题。