首页 > 解决方案 > 我有按 kmeans 算法排序的区域。我希望这些区域作为区域(如多边形)。怎么做?

问题描述

已由 k 均值算法创建的具有中心的区域

我想为图中的每个区域创建一个多边形(点是图中指示的点)(请参考上图)。你能帮我弄清楚怎么做吗?

PS:我还绘制了所有这些点(GPS坐标)。

标签: pythongoogle-mapsmatplotlibplotk-means

解决方案


计算聚类中心的 Delaunay 三角剖分。对偶的是 Voronpi 细胞,这些细胞与k-means 发现的集群完全对应。

然而,这些细胞将走向无穷大。在您只有 k=2 的情况下,您会得到一个简单的平分线:两点的 Delaunay 三角剖分只是它们的连接线。然后在两个中心的中点画一条垂直线。这将飞机分成两个区域,这些是您的集群。

在许多情况下,凸包会更容易处理,尽管它没有精确地显示集群分离。

对于地理数据,k-means 也不是最佳选择:1)它对异常值不稳健,并且您经常有一些不应该在集群中的点 2)它使用平方误差,而不是距离。平方误差在地理上没有特别直观的含义(旅行两倍通常需要两倍的时间,而不是四倍!)当用于纬度和经度时,它会导致偏差,除非你总是靠近赤道而不是在 +-180。


推荐阅读