scikit-tda/ripser.py

A Lean Persistent Homology Library for Python

Ripser.py는 무엇인가요?

Ripser.py는 빠른 C++ 라이브러리 RipserPython 래퍼로, 위상적 데이터 분석 (TDA)의 핵심 방법인 지속 호모로지(persistent homology)를 계산하기 위한 가볍고 사용하기 쉬운 툴킷을 제공합니다. 점군, 거리 행렬, 또는 이미지를 지속 다이어그램(persistence diagrams)으로 변환할 수 있으며, 다양한 기계학습 파이프라인에서 유용한 다중 척도의 형태 정보를 포착합니다.


주요 기능

기능 설명
지속 코호모로지 희소 또는 밀집 데이터에 대해 비에트리스-리퍼스(또는 로우스타르) 필터링을 계산하고 탄생/소멸 쌍을 반환합니다.
다이어그램 시각화 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

# 2차원 랜덤 점군
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 인터페이스가 필요한 사람.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트