scikit-tda/ripser.py

A Lean Persistent Homology Library for Python

什麼是 Ripser.py?

Ripser.py 是快速 C++ 庫 RipserPython 封裝,提供一個輕量、易用的工具組,用於計算 拓撲資料分析 (TDA) 的核心方法——持續同調(persistent homology)。它可將點群、距離矩陣或影像轉換為 持續圖(persistence diagrams),捕捉多尺度的形狀資訊,適用於許多機器學習流程。


主要功能

功能 說明
持續上同調 對稀疏或密集資料計算 Vietoris-Rips(或下星)濾波,並回傳出生/死亡對。
圖譜可視化 透過 persim 套件提供簡單的 plot_diagrams 輔助函數,繪製持續圖。
影像濾波 直接從灰階影像生成下星濾波。
代表性上鏈 提取實現圖譜中顯示的同調類的具體上鏈。
scikit-learn 兼容 API 提供 Rips 變換器(fit_transform / plot),可輕鬆接入流程。

安裝

# 從 PyPI(支援 Windows、macOS、Linux 的預建輪子)
pip install ripser

如需從原始碼建置(例如修改程式碼),請克隆倉儲並執行 pip install . 或使用 pip install -e . 進行可編輯安裝。唯一必需的相依性是 Cython, numpy, scipy, scikit-learn, persim。Windows 用戶可能需要 MinGW;macOS 用戶請確保 Xcode 命令列工具為最新版本。

可選性能提升:將 robin-hood-hashing 倉儲克隆至專案根目錄,可啟用更快的雜湊表實作,帶來最高約 30% 的速度提升。


快速範例

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

# 隨機 2D 點群
X = np.random.random((100, 2))

# 函數式 API
dgms = ripser(X)['dgms']
plot_diagrams(dgms, show=True)

# scikit-learn 風格
rips = Rips()
dgms2 = rips.fit_transform(X)
rips.plot(dgms2)

上述程式碼產生一個持續圖(參見 README 圖像),展示不同尺度下拓撲特徵的生命周期。


文件與資源


授權與引用

  • 授權:MIT(Python 封裝與底層 C++ 程式碼皆適用)。
  • 在研究中使用此套件時,請引用 JOSS 論文與原始 Ripser 論文(README 中提供 BibTeX 條目)。

誰會使用它?

  • 將 TDA 應用於點群、時間序列或影像的資料科學家。
  • 建構分類、聚類或異常偵測特徵的研究人員。
  • 需要無需處理 C++ 編譯問題的快速純 Python 接口的任何人。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案