如何从持久图中提取连接的组件?

计算科学 数据分析
2021-11-28 06:18:59

从给定的点云(图 1)中,我使用 Scipy-TDA 提取持久性图(图 2)。我感兴趣的是提取3个圆圈。例如,我想知道每个点的 3 个中心点和标签。我是拓扑数据分析的新手。有人可以帮助我或指导这个过程吗?

在此处输入图像描述

在此处输入图像描述

编辑:为了展示一个具有挑战性的案例,我的数据如下所示,应该对 12 个椭圆进行聚类。

2个回答

如果您可以将数据表示为可以使用的稀疏图;https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.sparse.csgraph.connected_components.html

对于您询问的情况,我会定义一个参数ε这样对于两个节点p,q通过边缘连接e如果d(p,q)<ε-和d(,)是一些距离函数-。

我在 MATLAB 中做了一个类似的项目,尽管不是用于拓扑数据分析,这种方法在那里运行良好。MATLAB 和 SciPy 都有很好的图论工具。

所以 H0 告诉你零维或连通分量。因此,圆的圆周上的每个点通过其邻居与圆上的其他点相连,因此圆的圆周构成一个连通分量。在您提供的图中,我可以看到圆圈不是完全连接的,但是您可以从一个点转到圆周上的另一个点,因此您的右上角的圆圈是一个连接的组件。您的底部圆圈 - 如图所示 - 是两个连接组件,左中心一个是三个连接组件。H1 告诉你封闭的空白区域。因此,一个完整的圆圈(图像中没有)将包围一个空白区域,其编号将为 1。在持久图中,人们开始在每个点的顶部放置一个光盘,并逐渐增加光盘的半径,并在新组件形成或死亡时进行记录。例如,当增加以圆周每个点为中心的圆盘的半径时,这些圆盘将在其半径变为半径 R 时与完全相反的圆盘接触。因此您可以提取圆的半径。我怀疑你是否可以通过这个找到圆圈的实际坐标。