用于更改点分析的Python模块


24

我正在寻找一个在时间序列上执行变更点分析的Python模块。有很多不同的算法,我想探索其中一些算法的有效性,而不必手动滚动每种算法。

理想情况下,我需要R中的一些模块,例如bcp(贝叶斯变更点)或strucchange软件包。我希望在Scipy中找到一些模块,但是我无法打开任何东西。

我很惊讶其中没有任何设施:

Python中是否有带有变更点检测算法的模块?


我也在寻找Python中的变更点分析。您发现有用的东西了吗(例如使用RPy?)。
杰克·凯利

在SPAMS spams-devel.gforge.inria.fr(具有Python绑定)中使用融合的套索。
弗拉迪斯拉夫(Vladislavs Dovgalecs)

有人现在发现任何好的变更点分析库(实现各种算法,例如二进制分割,分割邻域)吗?
玛哈

对于在线时间序列数据,更改点检测实现(例如changefinder)如何扩展?对我来说,这似乎是一个固有的问题。
HoofarLotusX '18年

Answers:


7

您可以在PyPI上试用changefinder库。描述说这是一个基于ChangeFinder算法的在线变更检测库

Github 存储库上,还以教程格式提供了Michele Basseville统计更改点检测技术的一些Python实现。


3
Github存储库中也可以找到Bayesian Change Point Detection的Python实现。
kushan_s 2014年

1
似乎答案(amanahuja)中的第一个链接不完整?您在评论中发布的另一个非常有用!
okkhoy

6

Python库在使用高级统计信息包方面仍然存在一些差距。您是否尝试过使用RPy模块?使用RPy时,您可以加载R模块。

有关RPy的简短教程:http : //www.sciprogblog.com/2012/08/using-r-from-within-python.html strucchange


2
还是这样吗?我仍然需要结束使用R-Python桥吗?
玛哈

有人现在发现任何好的变更点分析库(实现各种算法,例如二进制分割,分割邻域)吗?
玛哈

4

Python包rpy2的此实现对我有用:

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

然后,您可以针对原始向量绘制后均值和后验概率。有关此示例的更多详细信息,请参见R中的bcp函数示例。

另外,用数字(即values [5])对索引值进行硬索引也不理想,但是我在使用rx和rx2提取器时遇到了困难。因此,如果有人可以通过一种不太古怪的提取方法来启发我,我很想知道!



0

您是否尝试过ChangeFinder库,可以通过以下方式在Linux上安装它:

pip install changefinder

也可以在这里找到Bayesian_changepoint_detection GitHub代码:GitHub Code

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.