Moduł Pythona do analizy punktu zmiany

24

Szukam modułu Python, który wykonuje analizę zmiany punktu na szeregu czasowym. Istnieje wiele różnych algorytmów i chciałbym zbadać skuteczność niektórych z nich bez konieczności ręcznego rzucania każdym z algorytmów.

Idealnie chciałbym, aby niektóre moduły, takie jak bcp (Bayesian Change Point) lub pakiety strucchange w R. Spodziewałem się znaleźć kilka w Scipy, ale nie byłem w stanie niczego podkręcić.

Dziwi mnie, że nie ma żadnych udogodnień w:

Czy są jakieś moduły z algorytmami wykrywania punktu zmiany w Pythonie?

Erik Shilts
źródło
Szukam również analizy punktu zmiany w Pythonie. Czy znalazłeś coś przydatnego (np. Używając RPy?).
Jack Kelly
Użyj skondensowanego lasso w SPAMS spams-devel.gforge.inria.fr (ma powiązania Pythona).
Vladislavs Dovgalecs
ktoś już znalazł jakąś dobrą bibliotekę analizy punktu wymiany (implementacja różnych algorytmów mówi, że segmentacja binarna, sąsiedztwo segmentu)?
Maha
W przypadku danych online szeregów czasowych, w jaki sposób implementacja wykrywania punktu zmiany, powiedzmy, że zmiennik może się skalować? To wydaje mi się nieodłącznym problemem.
HoofarLotusX

Odpowiedzi:

7

Możesz wypróbować bibliotekę zmieniacza na PyPI. Opis mówi, że jest to internetowa biblioteka wykrywania zmian oparta na algorytmie ChangeFinder

Istnieją również niektóre implementacje w Pythonie technik statystycznego wykrywania punktu zmiany Michele Basseville dostępne w formie samouczka na tym repozytorium Github.

kushan_s
źródło
3
W tym repozytorium Github można również znaleźć implementację Pythona Bayesian Change Point Detection .
kushan_s
1
wygląda na to, że pierwszy link w odpowiedzi (amanahuja) jest niepełny? drugi zamieszczony w komentarzu jest przydatny!
okkhoy
6

W bibliotece Pythona nadal występują luki w korzystaniu z zaawansowanych pakietów statystyk. Czy próbowałeś użyć modułu RPy? Korzystając z RPy, możesz załadować moduły R.

krótki samouczek na temat RPy: http://www.sciprogblog.com/2012/08/using-r-from-within-python.html struczmienić

sk8asd123
źródło
2
czy nadal tak jest? Czy nadal muszę korzystać z mostka R-Python?
Maha,
ktoś już znalazł jakąś dobrą bibliotekę analizy punktu wymiany (implementacja różnych algorytmów mówi, że segmentacja binarna, sąsiedztwo segmentu)?
Maha
4

Ta implementacja pakietu rpy2 Pythona działała dla mnie:

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()

Następnie możesz wykreślić średnie tylne i prawdopodobieństwo tylne względem oryginalnego wektora. Zobacz przykład funkcji bcp w R, aby uzyskać bardziej szczegółowe informacje na temat tego przykładu.

Również twarde indeksowanie wartości liczbowych (tj. Wartości [5]) nie jest idealne, ale miałem trudności z użyciem ekstraktora rx i rx2. Więc jeśli ktoś może oświecić mnie mniej hackerską metodą ekstrakcji, chciałbym wiedzieć!

scottlittle
źródło
3

Właśnie natrafiłem na bibliotekę wykrywania punktu zmiany w Pythonie o nazwie „ruptures”: https://arxiv.org/abs/1801.00826

Może to się przyda.

Basileios
źródło
0

Czy próbowałeś biblioteki ChangeFinder, możesz zainstalować ją na Linuksie przez:

pip install changefinder

także Bayesian_changepoint_detection Kod GitHub można znaleźć tutaj: Kod GitHub

użytkownik185876
źródło