我需要一种可以解决以下问题的算法:查找最接近给定3D线集合的3D点,每条线均由一对点定义。
此图以图形方式显示此问题的设置。在这种情况下,从视觉上可以清楚地看到有2个“集群”点。
我认识到这是一个集群问题。我发现this算法是2D线的k中值。但是,它为二维线找到了预定数量的点。我发现均值漂移算法具有我需要的属性,但是对于点而不是直线。也许可以将均值偏移扩展到3D线中吗?
总结一下,该算法需要:
编辑:
因为更多的人建议使用每对线之间最短距离的中点,然后对点进行典型聚类,所以我想展示这种方法的一些问题。
虽然此方法适用于单个群集,但对于两个群集,它们之间将存在大量点。仅考虑小于一定数量/比率的距离(例如,最大距离除以100)即可缓解这种情况。但是,此方法非常脆弱,因为它仅适用于聚类点之间具有相似距离的情况。
理想情况下,该算法将能够处理移动的聚类点。
对于上面显示的示例,绘制每对线之间的中点会产生this图,直观地显示了我上面提到的问题。
答案 0 :(得分:2)
目前还不清楚如何对线进行聚类。根据什么标准?
您当然可以构建成对的距离矩阵并运行几乎所有聚类算法(例如HAC,PAM,DBSCAN)。那么问题是要使用什么距离(线之间的最小距离?)。
或者-因为您的所有行都很简单-值得尝试简单地在(a)串联点上进行k均值聚类,并使用一些排序逻辑(x较小的点排在最前面)或更简单(b)中间点每行。
在上面的示例中,我相当乐观,通过将中点与k均值聚类,您将接近所需的结果。
答案 1 :(得分:0)
您可以考虑采用这种方法:
答案 2 :(得分:0)
回应这里的一些响应,一种选择是计算成对距离的矩阵。在下面链接的论文中,我们为此使用了光谱聚类。优点是可以直接考虑距离矩阵的特征值来确定聚类的个数。
据我所知,对 3D 线进行聚类的最大挑战是三角不等式不适用。因此,即使这些集群彼此相距很远,一条线也可能属于 2 个(或更多)集群。