python - 我有按 kmeans 算法排序的区域。我希望这些区域作为区域(如多边形)。怎么做?
问题描述
我想为图中的每个区域创建一个多边形(点是图中指示的点)(请参考上图)。你能帮我弄清楚怎么做吗?
PS:我还绘制了所有这些点(GPS坐标)。
解决方案
计算聚类中心的 Delaunay 三角剖分。对偶的是 Voronpi 细胞,这些细胞与k-means 发现的集群完全对应。
然而,这些细胞将走向无穷大。在您只有 k=2 的情况下,您会得到一个简单的平分线:两点的 Delaunay 三角剖分只是它们的连接线。然后在两个中心的中点画一条垂直线。这将飞机分成两个区域,这些是您的集群。
在许多情况下,凸包会更容易处理,尽管它没有精确地显示集群分离。
对于地理数据,k-means 也不是最佳选择:1)它对异常值不稳健,并且您经常有一些不应该在集群中的点 2)它使用平方误差,而不是距离。平方误差在地理上没有特别直观的含义(旅行两倍通常需要两倍的时间,而不是四倍!)当用于纬度和经度时,它会导致偏差,除非你总是靠近赤道而不是在 +-180。
推荐阅读
- r - 如何在闪亮的应用程序中使用 ggplot2 绘制直方图?
- python - Python ctypes ERROR:异常:访问冲突写入 0x00DEF6CC
- python - 使用数据框的每 2 列创建一个新数据框
- c++ - C++ 窗口服务
- android - Here sdk api 的高级版如何工作?
- html - Angular *ngIf 在单击页面或 alt+tab 后更新(重新聚焦)
- groovy - JMeter 函数和变量
- ruby - 引发 LoadError 时如何使用救援
- yaml - 在无服务器组件 yaml 中参考云形成堆栈
- php - 在 Symfony PHP 中强制使用 HTTPS 会导致 AWS 负载均衡器后面的重定向循环