用一条线分隔 points/clusters

Separating points/clusters with a line

上下文:我想创建一个交互式热图,其中的区域由邮政编码分隔。我找不到直接显示它的方法(即使用 Google 地图或 OSM),所以我想创建分隔这些区域的曲线或线,并在地图中将其可视化。

我有一组点,由它们的坐标和相应的 class(邮政编码)表示。我想要一条曲线将它们分开。问题是这些点不是线性可分的。

我尝试使用 softmax 回归,但它不适用于非线性可分 classes。我知道的唯一能够非线性分离的方法是最近的邻居和神经网络。但是这样的 classifier 只是 classify,他们没有告诉我 classes 之间的边界。
有没有办法以某种方式获得边界?

如果在坐标为 [纬度.经度、邮政编码],使用机器学习来找到包围这些点的边界听起来有点过分了。

您可能可以通过使用计算几何获得边界的良好近似值,例如使用 Matlab convhull 函数找到每个邮政编码点集的二维凸包

K = convhull(X,Y)

结果 K 将是包含输入 X、Y 点向量的点向量,可用于绘制多边形。

唯一的问题是要在哪个坐标系中工作,您可能需要在 (lat, lon) 和地图 (x,y) 坐标之间做一些处理。如果您没有 Matlab 映射工具箱,您可以查看第三方库 M_Map M_Map home page,它提供了一些相同的功能。

编辑:如果邮政编码的点云有一个非凸的边界区域,您可能需要更通用的计算几何技术来找到边界区域的更好近似值。正如评论中所建议的那样,对该区域进行 Voronoi 镶嵌是一种可能性。