我有一组矩形,我需要根据它们之间的欧氏距离聚集在一起。情况在附图中说明。 。
一种可能的方法是采用每个矩形的中心并使用K均值聚类中心点(距离函数将是XY平面中的欧氏距离)。但是,我想知道是否有任何其他方法解决这个问题,它不是通过它的中心点逼近矩形,而是考虑矩形的实际形状。
答案 0 :(得分:2)
查看可以与任意数据类型一起使用的DBSCAN和OPTICS等算法,只要您可以定义它们之间的距离(例如最小矩形到矩形的距离) )。
K-means可能不太好,因为它是为具有平方欧氏距离(=平方和,群内方差)的点数据而设计的。
答案 1 :(得分:2)
制定此问题的一种方法是查看每个矩形i
,以及距离为(i,j)
的每对矩形d(i,j)
,然后形成距离矩阵d
。这个距离度量D
可以是矩形中心之间的距离或更像是矩形上最近点之间的距离。
然后,应用以距离矩阵作为输入的聚类算法,您可以将距离矩阵(i,j)
定义为元素d(i,j)
为{{1}}的矩阵。
相关:Clustering with a distance matrix
Anony-Mousse的答案对于在给定距离矩阵时可用于聚类的算法有一些很好的建议。
答案 2 :(得分:0)
我们使用Spectral Clustering将left_x,right_x,top_y,bottom_y坐标作为功能,效果非常好。