Python-Modul zur Analyse von Änderungspunkten

24

Ich suche ein Python-Modul, das eine Änderungspunktanalyse für eine Zeitreihe durchführt. Es gibt eine Reihe verschiedener Algorithmen, und ich möchte die Wirksamkeit einiger von ihnen untersuchen, ohne jeden der Algorithmen von Hand rollen zu müssen.

Im Idealfall hätte ich gerne Module wie den bcp (Bayesian Change Point) oder Strucchange- Pakete in R. Ich hatte erwartet, dass ich welche in Scipy finde, aber ich konnte nichts aufdrehen.

Ich bin überrascht, dass es keine Einrichtungen in:

Gibt es Module mit Algorithmen zur Erkennung von Änderungspunkten in Python?

Erik Shilts
quelle
Ich suche auch nach Change-Point-Analyse in Python. Haben Sie etwas Nützliches gefunden (zB mit RPy?).
Jack Kelly
Verwenden Sie das fusionierte Lasso in SPAMS spams-devel.gforge.inria.fr (mit Python-Bindungen).
Vladislavs Dovgalecs
Hat jemand inzwischen eine gute Bibliothek zur Analyse von Änderungspunkten gefunden (Implementierung verschiedener Algorithmen, z. B. binäre Segmentierung, Segmentnachbarschaft)?
Maha
Für die Online - Zeitreihendaten, wie kommt eine Change-Point - Erkennung Implementierung sagen changefinder skaliert werden kann? Dies scheint mir ein inhärentes Problem zu sein.
HoofarLotusX

Antworten:

7

Sie können die Changefinder- Bibliothek auf PyPI ausprobieren. Die Beschreibung besagt, dass es sich um eine Online-Änderungserkennungsbibliothek handelt, die auf dem ChangeFinder-Algorithmus basiert

Es gibt auch einige Python-Implementierungen der Statistical Change Point Detection-Techniken von Michele Basseville, die in diesem Github-Repo im Tutorial-Format verfügbar sind .

kushan_s
quelle
3
Eine Python-Implementierung von Bayesian Change Point Detection finden Sie auch in diesem Github-Repo.
kushan_s
1
sieht aus wie der erste link in der antwort (amanahuja) unvollständig ist? Der andere, den Sie im Kommentar gepostet haben, ist nützlich!
okkhoy
6

In der Python-Bibliothek gibt es noch einige Lücken für die Verwendung erweiterter Statistikpakete. Haben Sie versucht, das RPy-Modul zu verwenden? Bei Verwendung von RPy können Sie R-Module laden.

Kurzes Tutorial zu RPy: http://www.sciprogblog.com/2012/08/using-r-from-within-python.html strucchange

sk8asd123
quelle
2
ist das noch der fall Muss ich immer noch R-Python Bridge verwenden?
Maha
Hat jemand inzwischen eine gute Bibliothek zur Analyse von Änderungspunkten gefunden (Implementierung verschiedener Algorithmen, z. B. binäre Segmentierung, Segmentnachbarschaft)?
Maha
4

Diese Implementierung des Python-Pakets rpy2 hat bei mir funktioniert:

import numpy as np
from rpy2.robjects.packages import importr
import rpy2.robjects as robjects

r = robjects.r #allows access to r object with r.

bcp = importr('bcp') #import bayesian change point package in python

values = bcp.bcp( r.c( r.rnorm(50) , r.rnorm(50,5,1), r.rnorm(50) ) ) #use bcp function on vector

posterior_means = np.array(values[5]).flatten()
posterior_probability = np.array(values[7]).flatten()

Dann können Sie das hintere Mittel und die hintere Wahrscheinlichkeit gegen den ursprünglichen Vektor darstellen. Weitere Informationen zu diesem Beispiel finden Sie im Beispiel für die bcp-Funktion in R.

Auch das Indizieren von Werten mit einer Zahl (dh Werten [5]) ist nicht ideal, aber ich hatte Schwierigkeiten, den RX- und RX2-Extraktor zu verwenden. Wenn mich jemand über eine weniger hackige Methode der Extraktion aufklären kann, würde ich es gerne wissen!

scottlittle
quelle
2

Ich bin gerade auf eine Änderungspunkterkennungsbibliothek in Python mit dem Namen "ruptures" gestoßen: https://arxiv.org/abs/1801.00826

Vielleicht kann das von Nutzen sein.

Basileios
quelle
0

Haben Sie die ChangeFinder-Bibliothek ausprobiert, können Sie sie unter Linux folgendermaßen installieren:

pip install changefinder

auch Bayesian_changepoint_detection GitHub Code finden Sie hier: GitHub Code

user185876
quelle