聚类位置数据忽略异常值

Clustering location data ignore outliers

我正在进行 GPS 位置聚类

我得到了大约 4000 个数据点,我使用了 Kmeans 聚类算法。

这是我得到的结果:

标记是真实的数据位置,而绿色圆圈区域(质心)是kmeans结果。

您可以看到右上角的聚类,受到一些异常值的影响

有什么方法可以去除异常值的影响,从而找出准确的聚类质心?谢谢

============================================= ===============

我得到的GEOdata格式如下:

[
{"lat": 22.28552,
 "lng": 114.15769
},
...
]

我使用的 kmeans 算法遵循 here。但是我把距离改成了distance = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2))

对于此类数据,K-means 是一个糟糕的选择。

  1. 对异常值敏感

  2. 它不适用于 Haversine 距离(不要在地理坐标上使用欧几里得!)

此类数据的热门选择包括 DBSCAN 和 OPTICS。