【问题标题】:Finding best fit boxes of a scatter plot using python?使用python找到散点图的最佳拟合框?
【发布时间】:2014-08-22 12:39:40
【问题描述】:

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

我有一个散点图,其中包含数据点上的团块。这只是一系列 x,y 坐标对。

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

大概我可以通过选择我想使用多少个框来选择更高或更低的粒度。

有没有最适合解决这类问题的 Python 库?

【问题讨论】:

标签: python scatter-plot


【解决方案1】:

按照我理解您的问题的方式,您希望找到包含数据点云的框。 您将粒度标准定义为用于描述数据集的框数。

我认为您正在寻找的是agglomerative hierarchical clustering。该算法非常简单。让 n 为您在集合中拥有的数据点数。基本上,该算法首先考虑 n 个组,每个组由一个点填充。然后,这是一个迭代过程:

  • 根据距离标准合并两个最近的组
  • 由于组集已更改,请更新组之间的距离
  • 返回合并步骤,直到达到特定的聚类数或特定的距离阈值

您还可以构建树状图。它是一个树状结构,将存储所有合并过程的历史记录,允许您检索 1 个集群和 n 个集群之间的任何粒度级别。

Scipy 中有一组专用于该算法的函数。问题Tutorial for scipy.cluster.hierarchy涵盖了它。

获取集群是第一步,现在您可以构建您的盒子了。让我们以所谓的 数学 观点来讨论这个问题。令 C 为一个簇,P1, ... Pn 为簇的点。如果一个矩形框是可以的,那么它可以由两个坐标点定义(xminymin i>) 和 (xmax, ymax),带有:

  • xmin = min (P.x PC)
  • ymin = min (P.y PC )
  • xmax = max (P.x PC )
  • xmax = max (P.y PC )

编辑

这种构建盒子的方式是最愚蠢的。如果您想要真正适合的东西,则必须着眼于构建每个集群的凸包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2021-02-27
    • 1970-01-01
    • 2022-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多