我按kmeans算法排序区域。我希望将区域作为区域(例如多边形)。怎么做?

时间:2018-07-20 02:42:48

标签: python google-maps matplotlib plot k-means

Zones with centers already created by k means algorithm

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

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

1 个答案:

答案 0 :(得分:0)

计算聚类中心的Delaunay三角剖分。其中的对偶是Voronpi细胞,它们精确地对应于k-均值发现的簇。

但是,这些单元将达到无穷大。对于仅k = 2的情况,您将得到一个简单的等分线:两个点的Delaunay三角剖分只是它们的连接线。然后在两个中心的中点垂直画一条线。这会将飞机分为两个区域,这就是您的集群。

在许多情况下,凸包都不会更精确地处理,尽管凸包不会精确显示。

对于地理数据,k均值也不是最佳选择:1)它对异常值不具有鲁棒性,并且您经常会有一些点不应该出现在聚类中; 2)它使用平方误差而不是距离。平方误差在地理上没有特别直观的含义(两次旅行通常需要两倍的时间,而不是四次!),并且在经度和纬度上使用时,它会引起偏差,除非您始终靠近赤道而不是赤道。在+ -180。