我正在寻找最好的python库来解决这个问题:
我有一个散点图,数据点上有丛。这只是一系列x,y坐标对。
我想要一个工具来查看我拥有的数据点,然后建议包含不同组的N'框'。
据推测,我可以通过选择我想要使用多少个盒子来获得更高或更低的粒度。
有没有最适合解决此类问题的python库?
答案 0 :(得分:1)
我理解你的问题的方式,你想找到包含数据点云的盒子。 您可以将粒度标准定义为用于描述数据集的框数。
我认为你要找的是agglomerative hierarchical clustering。该算法非常简单。设 n 是集合中的数据点数。基本上,算法首先考虑 n 组,每个组由一个点填充。然后,这是一个迭代过程:
您也可以构建树形图。它是一个树状结构,用于存储所有合并过程的历史记录,允许您检索1个集群和 n 集群之间的任何级别的粒度。
Scipy中有一组专用于此算法的函数。它由问题Tutorial for scipy.cluster.hierarchy涵盖。
获取群集是第一步,现在您可以构建您的盒子了。让我们以所谓的数学的观点来说明这一点。设 C 为群集, P 1 ,... P n 群集的点。如果矩形框很好,则可以通过两个坐标点( x min , y min )和( x max , y max ),用:
编辑:
这种建造盒子的方式是最愚蠢的。如果你想要一些真正适合的东西,你将不得不寻找建立每个星团的凸包。