【问题标题】:Separating points/clusters with a line用线分隔点/簇
【发布时间】:2018-02-04 16:44:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: matlab data-analysis non-linear-regression


    【解决方案1】:

    如果您在每个邮政编码中都有密集的已知点云,坐标为 [latitude.经度,邮政编码],使用机器学习来找到包围这些点的边界听起来有点矫枉过正。

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

    K = convhull(X,Y)
    

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

    唯一的复杂之处是要在什么坐标系中工作,您可能需要在 (lat, lon) 和地图 (x,y) 坐标之间做一些工作。如果您没有 Matlab Mapping Toolbox,您可以查看第三方库 M_Map M_Map home page,它提供了一些相同的功能。

    编辑:如果邮政编码的点云具有非凸的边界区域,您可能需要更通用的计算几何技术来找到边界区域的更好近似值。按照 cmets 的建议,对该区域执行 Voronoi 细分就是这样一种可能性。

    【讨论】:

    • 谢谢,这似乎是一个很好的解决方案。而且我没有意识到坐标的问题,但是,我想知道在相对较小的区域(捷克共和国)进行操作时是否需要转换坐标。我想我会看到的。
    • 凸包将返回凸区域。邮政编码区域通常不是。一种更合适的方法是使用所有点的 Voronoi 细分,保留用不同邮政编码分隔点的每条线。
    • 这是另一回事,好点 - 取决于 OP 希望对该区域的近似值有多好。关键是计算几何,而不是机器学习,是解决这个问题的方法。 IIRC 在 vanilla Matlab 中也支持 Voronoi 细分。
    • 粗略估计对我来说已经足够了,但我关注的区域根本不是凸的,所以它会重叠很多。似乎 Voronoi 镶嵌会更合适。谢谢@Cris Luengo!
    • 我使用机器学习是因为我最近在研究它,不知道从哪里寻找更好的解决方案。
    猜你喜欢
    • 2022-01-08
    • 2014-03-07
    • 2019-10-10
    • 2018-12-09
    • 2016-12-31
    • 1970-01-01
    • 2017-02-01
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多