dynamicslab/pysindy
A package for the sparse identification of nonlinear dynamical systems from data
PySINDy – 비선형 동역학계의 희소 식별
개요:
측정 데이터로부터 동역학계의 지배 방정식을 직접 발견하는 파이썬 라이브러리입니다. SINDy (Sparse Identification of Nonlinear Dynamics) 알고리즘과 여러 관련 희소 회귀 기법을 구현합니다.
중요성:
생성된 모델은 해석 가능하며(명시적 방정식), 종종 간결합니다. 따라서 블랙박스 신경망 없이도 예측, 제어 설계 또는 과학적 통찰을 얻는 데 유용합니다.
주요 기능
- 시계열 스냅샷으로부터 연속 시간 동역학계 피팅.
- 다양한 희소 최적화 도구 선택 가능 (예: LASSO, SR3, MIOSR, Bayesian SBR).
- 후보 함수 라이브러리(다항식, 삼각함수 등) 자동 구성.
- 선택적 추가 기능을 통한 사용자 정의 특징 라이브러리 및 최적화 도구 지원.
- 발견된 방정식을 기호 형식, NumPy 함수 또는 LaTeX로 내보내기 가능.
일반적인 워크플로우
- 데이터 수집 – 상태 측정 행렬
X및 시간 벡터t. - 모델 생성 –
model = pysindy.SINDy()(최적화 도구, 특징 라이브러리 등을 선택적으로 지정). - 피팅 –
model.fit(X, t=t). - 검사 –
model.print()또는model.coefficients()를 사용하여 식별된 방정식 확인. - 사용 – 시뮬레이션, 제어기 설계 또는 기호 모델 분석.
설치
pip install pysindy # 핵심 패키지
# 선택적 최적화 도구
pip install pysindy[miosr] # 분기 한정 L0 최적화 도구
pip install pysindy[cvxpy] # 볼록 SR3 최적화 도구
pip install pysindy[sbr] # 베이지안 회귀 최적화 도구
Conda 사용자는 conda install -c conda-forge pysindy를 통해 설치할 수 있습니다.
최소 예제 (간단한 선형 시스템 식별)
import numpy as np
import pysindy as ps
# x' = -2x, y' = y 에 대한 합성 데이터
t = np.linspace(0, 1, 100)
x = 3 * np.exp(-2 * t)
y = 0.5 * np.exp(t)
X = np.column_stack([x, y])
model = ps.SINDy()
model.fit(X, t=t, feature_names=["x", "y"])
model.print()
출력:
x' = -2.000 x
y' = 1.000 y
문서 및 도움말
- 전체 문서: https://pysindy.readthedocs.io
- YouTube의 개요 및 튜토리얼 재생 목록 (README에 링크).
- 버그/질문 추적기: https://github.com/dynamicslab/pysindy/issues
- 기능 추가 또는 버그 수정을 위한 기여 가이드.
관련 도구
- Deeptime – 시계열 분석, 마르코프 모델.
- PyDMD – 동적 모드 분해, 데이터 기반 모델링의 대안적 접근 방식.
- PySINDyGUI / SEED – 동일 알고리즘을 위한 그래픽 프런트엔드.
사용 권장 대상 실험 데이터로부터 물리적, 생물학적 또는 공학적 시스템의 간결하고 해석 가능한 모델이 필요하며, 단순 예측 성능보다 해석 가능성을 우선시하는 연구자 및 엔지니어.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트