一个强大的和可扩展的库,可以用于各种时间序列数据挖掘任务
stump的Python项目详细描述
树桩
Stumpy是一个功能强大且可扩展的库,它可以有效地计算称为矩阵配置文件(matrix profile)的内容,可用于各种时间序列数据挖掘任务,如:
- 模式/模体(在较长时间序列内近似重复的子序列)发现
- 异常/新奇(不协调)发现
- Shapelet发现
- 语义分割
- 密度估计
- 时间序列链(时间顺序的子序列模式集)
- 等等…
无论您是学术界、数据科学家、软件开发人员还是时间序列爱好者,Stumpy都易于安装,并允许您以最有效的方式计算矩阵配置文件。我们的目标是让您更快地了解时间序列。有关详细信息,请参见 文档 。
如何使用stumpy
典型用法(一维时间序列数据),带有 stump :
importstumpyimportnumpyasnpyour_time_series=np.random.rand(10000)window_size=50# Approximately, how many data points might be found in a patternmatrix_profile=stumpy.stump(your_time_series,m=window_size)
一维时间序列数据的分布式使用,DASK通过树桩分布
importstumpyimportnumpyasnpfromdask.distributedimportClientdask_client=Client()your_time_series=np.random.rand(10000)window_size=50# Approximately, how many data points might be found in a patternmatrix_profile=stumpy.stumped(dask_client,your_time_series,m=window_size)
具有mstump的多维时间序列数据
importstumpyimportnumpyasnpyour_time_series=np.random.rand(3,1000)window_size=50# Approximately, how many data points might be found in a patternmatrix_profile,matrix_profile_indices=stumpy.mstump(your_time_series,m=window_size)
分布式多维时间序列数据分析
importstumpyimportnumpyasnpfromdask.distributedimportClientdask_client=Client()your_time_series=np.random.rand(3,1000)window_size=50# Approximately, how many data points might be found in a patternmatrix_profile,matrix_profile_indices=stumpy.mstumped(dask_client,your_time_series,m=window_size)
时间序列链:
importstumpyimportnumpyasnpyour_time_series=np.random.rand(10000)window_size=50# Approximately, how many data points might be found in a patternmatrix_profile=stumpy.stump(your_time_series,m=window_size)left_matrix_profile_index=matrix_profile[:,2]right_matrix_profile_index=matrix_profile[:,3]idx=10# Subsequence index for which to retrieve the anchored time series chain foranchored_chain=stumpy.atsc(left_matrix_profile_index,right_matrix_profile_index,idx)all_chain_set,longest_unanchored_chain=stumpy.allc(left_matrix_profile_index,right_matrix_profile_index)
哪里可以买到
Conda安装(首选):
conda install -c conda-forge stumpy
pypi安装,假设您已经安装了numpy、scipy和numba:
pip install stumpy
要从源代码安装stumpy,请参阅 文档中的说明
文档
为了充分理解和欣赏底层算法和应用程序,您必须阅读原始的 出版物 。有关如何使用stumpy的更详细示例,请参阅最新的 文档 ,或浏览以下教程:
- 矩阵配置文件-教程0
- 树桩基础-教程1
- 时间序列链-教程2 < > >
性能
我们使用numba jit编译版本的代码对随机生成的不同长度的数据(即 n p.random.rand(n) )进行性能测试。
原始结果显示为小时:分:秒。
<表> < COLGROUP > < COL/> < COL/> < COL/> < COL/> < COL/> < COL/> <广告> i n=2 i gpu-跺脚 树桩16 难倒了。128 残缺.256 < /广告> < > 6 64 00:00:10.00 00:00.00 00:00:05.77 00:00:06.08 7 128 00:00:10.00 00:00.00 00:00:05.93 00:00:07.29 8 256 00:00:10.00 00:00:00.01 00:00:05.95 00:00:07.59 9 512 00:00:10.00 00:00.02 00:00:05.97 00:00:07.47 10 1024 00:00:10.00 00:00.04 00:00:05.69 00:00:07.64 11 2048年 南部 00:00.09 00:00:05.60 00:00:07.83 12 4096 南部 00:00:00.19 00:00:06.26 00:00:07.90 13 8192 南部 00:00:00.41 00:00:06.29 00:00:07.73 14 16384 南部 00:00:00.99 00:00:06.24 00:00:08.18 15 32768 南部 00:00:02.39 00:00:06.48 00:00:08.29 16 65536 南部 00:00:06.42 00:00:07.33 00:00:09.01 17 131072 00:00:10.00 00:00:19.52 00:00:09.75 00:00:10.53 18 262144 00:00:18.00 00:01:08.44 00:00:33.38 00:00:24.07 19 524288 00:00:46.00 00:03:56.82 00:01:35.27 00:03:43.66 20 1048576 00:02:30.00 00:19:54.75 00:04:37.15 00:03:01.16 21 2097152 00:09:15.00 03:05:07.64 00:13:36.51 00:08:47.47 22 4194304 南部 10:37:51.21 00:55:44.43 00:32:06.70 23 8388608 南部 38:42:51.42 03:33:30.53 02:00:49.37 24 16777216 南部 南部 13:03:43.86 07:13:47.12 nan 17729800 09:16.00 南部 南部 07:18:42.54 25 33554432 南部 南部 南部 26:27:41.29 26 67108864 南部 南部 南部 106:40:17.17 nan 1000000 291:07:12.00 南部 南部 234:51:35.39 27 134217728 南部 南部 南部 南部 <表>gpu-stomp:结果从原始的矩阵概要文件ii中复制出来纸张-nvidia tesla k80(包含2个gpu)
stump.16:总共16个CPU—16x Intel(R)Xeon(R)CPU E5—2650 v4@2.20GHz处理器,在没有DASK的单个服务器上与numba并行。
stumped.128:总共128个CPU—8个Intel(R)Xeon(R)CPU E5—2650 v4@2.20GHz处理器x 16台服务器,与Numba并行,并与分布式DASK一起分发。
Stumped.256:256个CPU,共8个Intel(R)Xeon(R)CPU E5-2650 v4@2.20GHz处理器x 32个服务器,与Numba并行,并与分布式DASK一起分发。
python版本
Stumpy支持Python3.6+,并且由于使用了Unicode变量名/标识符,因此与Python2.x不兼容。由于依赖关系很小,Stumpy可能可以在旧版本的Python上工作,但这超出了我们的支持范围,我们强烈建议您升级到最近的python版本。
获取帮助
首先,请检查github上的问题,看看您的问题是否已经在那里得到了回答。如果没有可用的解决方案,请随意打开新问题,作者将尝试以合理及时的方式作出回应。
贡献
我们欢迎任何形式的贡献!文档方面的帮助,特别是扩展教程,总是受欢迎的。若要投稿,请从项目中投稿,进行更改并提交请求。我们将尽力解决您的任何问题,并将您的代码合并到主分支中。
参考文献
是的,Chin Chia Michael等人。(2016)矩阵概要I:时间序列的所有成对相似连接:包含主题、不协调和形状的统一视图。ICDM:1317-1322。 链接
朱、严等。(2016)矩阵轮廓II:利用新算法和GPU突破时间序列模体和连接的1亿障碍。ICDM:739-748。 链接
是的,金嘉美,等。(2017)矩阵剖面六:有意义的多维母题发现。ICDM:565-574。 链接
朱、严等。(2017)矩阵剖面七:时间序列链:时间序列数据挖掘的新原语。ICDM:695-704。 链接
引用
如果您在科学出版物中使用过此代码库,并希望引用它,请使用《开放源码软件期刊》的文章。 < Buff行情> s.m.law, stumpy:一个强大的、可伸缩的时间序列数据挖掘python库 在:开放源码软件杂志,开放期刊,第4卷,第39号。 2019年
@article{law2017stumpy,title={{STUMPY: A Powerful and Scalable Python Library for Time Series Data Mining}},author={Law, Sean M.},journal={{The Journal of Open Source Software}},volume={4},number={39},pages={1504},year={2019}}