Ripser.py学习 (1):概述

文章目录

1 概述

Ripser.py是一个用于持续同伦 (Persistent homology) 的Python库,其在C++ Ripser的基础上构建,提供了一些诸如以下的强大接口:

  1. 计算稀疏或者稠密数据的持续同伦。持续同伦是一种在拓扑数据分析中用来识别拓扑结构的方法。它可以用来分析一组数据的拓扑性质,通过检测数据的局部和全局的拓扑结构,可以提供对数据集的更深入的理解。在持续同伦的过程中,拓扑结构被表示为一系列的持久性特征,其中包括持续性间隙、持续性循环等。而拓扑结构的持续同伦则是指,在拓扑结构中不同维度的持续特征可以相互影响,并在一定程度上影响拓扑结构的演化。在拓扑数据分析中,持续同伦可以用来识别数据中的关键形状特征,例如孔洞、洞和环等;
  2. 可视化持久性图
  3. 计算图像上的低星滤形 (Lowerstar filtration);
  4. 计算表征链(Representative cochain)。

参考地址https://ripser.scikit-tda.org/en/latest/index.html

2 安装

Pipser库依赖于Cython库:

pip install cython
pip install ripser

3 示意

可以通过以下代码测试是否安装成功:

import numpy as np
from ripser import ripser
from persim import plot_diagrams


data = np.random.random((100, 2))
diagrams = ripser(data)['dgms']
plot_diagrams(diagrams, show=True)

输出如下:

关于图中的 H 0 H_0 H0 H 1 H_1 H1

  • H 0 H_0 H0:表示一个拓扑空间中连通分支的数量。通常情况下它的值为1或更大的正整数,表示该空间有一个或多个连通分支;
  • H 1 H_1 H1:表示一个拓扑空间中的环的数量。如果一个空间是连通的但不是环的,那么H_1 为零。如果有一条环,那么 H 1 为零。如果有一条环,那么H_1 为零。如果有一条环,那么H1就是整数1。如果有两个不相交的环,那么H_1$就是整数2,以此类推;
  • H 2 H_2 H2:表示一个拓扑空间中的空洞的数量。一个空洞可以被看作是一个二维的“空心环”,也就是一个环的内部又被一个环包围起来了。类似地,如果一个空间没有任何空洞,那么 H 2 H_2 H2为零。如果有一个空洞,那么H2为整数1。如果有两个不相交的空洞,那么 H 2 H_2 H2为整数2,以此类推。

以上代码还可以有以下替代方式:

import numpy as np
import matplotlib.pyplot as plt
from ripser import Rips


rips = Rips()
data = np.random.random((100,2))
diagrams = rips.fit_transform(data)
rips.plot(diagrams)
plt.show()

此时的绘制结果会有些许不同:

猜你喜欢

转载自blog.csdn.net/weixin_44575152/article/details/129667488