使用python找到散点图的最佳拟合框?

时间:2014-07-01 20:45:08

标签: python scatter-plot

我正在寻找最好的python库来解决这个问题:

我有一个散点图,数据点上有丛。这只是一系列x,y坐标对。

我想要一个工具来查看我拥有的数据点,然后建议包含不同组的N'框'。

据推测,我可以通过选择我想要使用多少个盒子来获得更高或更低的粒度。

有没有最适合解决此类问题的python库?

1 个答案:

答案 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 ),用:

  • x min = min( P .x P C
  • y min = min( P .y P C
  • x max = max( P .x P C
  • x max = max( P .y P C

编辑

这种建造盒子的方式是最愚蠢的。如果你想要一些真正适合的东西,你将不得不寻找建立每个星团的凸包。