首页
/ STUMPY:强大的时间序列分析Python库

STUMPY:强大的时间序列分析Python库

2026-01-30 04:50:44作者:宣聪麟

1. 项目介绍

STUMPY 是一个强大且可扩展的 Python 库,用于现代时间序列分析。它能够高效地计算所谓的矩阵轮廓(matrix profile),这是一种用于自动识别时间序列中每个子序列的最近邻的方法。矩阵轮廓一旦计算出来,就可以用于各种时间序列数据挖掘任务,例如:模式/动机发现、异常/新颖性发现、形状发现、语义分割、流数据、快速近似矩阵轮廓、时间序列链等。

2. 项目快速启动

以下是如何使用 STUMPY 的基本示例:

安装 STUMPY

首先,您需要安装 STUMPY。可以使用 conda 或 pip 来安装:

# 使用 conda 安装(推荐)
conda install -c conda-forge stumpy

# 或者,如果您已经安装了 numpy, scipy 和 numba,可以使用 pip 安装
python -m pip install stumpy

使用 STUMPY

以下是使用 STUMPY 的一个简单示例,它演示了如何为单维时间序列数据计算矩阵轮廓:

import stumpy
import numpy as np

if __name__ == "__main__":
    your_time_series = np.random.rand(10000)  # 生成随机时间序列数据
    window_size = 50  # 子序列的窗口大小
    matrix_profile = stumpy.stump(your_time_series, m=window_size)

3. 应用案例和最佳实践

以下是一些使用 STUMPY 的应用案例和最佳实践:

异常检测

使用 STUMPY 计算矩阵轮廓后,可以轻松地发现时间序列中的异常值或新颖模式。

import stumpy
import numpy as np

# 生成随机时间序列数据
your_time_series = np.random.rand(10000)
window_size = 50

# 计算矩阵轮廓
matrix_profile = stumpy.stump(your_time_series, m=window_size)

# 找出异常值
threshold = 0.5  # 设定阈值
discord_indices = np.where(matrix_profile[:, 1] > threshold)[0]

时间序列链

STUMPY 还可以用于发现时间序列链,这是一系列按时间排序的子序列模式。

import stumpy
import numpy as np

# 生成随机时间序列数据
your_time_series = np.random.rand(10000)
window_size = 50

# 计算矩阵轮廓
matrix_profile = stumpy.stump(your_time_series, m=window_size)

# 获取时间序列链
anchored_chain = stumpy.atsc(matrix_profile[:, 2], matrix_profile[:, 3], idx=10)

4. 典型生态项目

STUMPY 的生态系统包括了多个相关的项目,这些项目扩展了 STUMPY 的功能和性能:

  • GPU-STUMP:利用 GPU 加速 STUMPY 的计算过程。
  • STUMPED:结合 Dask Distributed,实现分布式计算。
  • MSTUMP:用于处理多维时间序列数据。
  • MSTUMPED:结合 Dask Distributed,用于分布式多维时间序列数据分析。
  • ATSC:用于发现时间序列链。
  • FLUSS:用于时间序列数据的语义分割。

以上就是 STUMPY 的介绍、快速启动、应用案例和典型生态项目的概述。希望这些信息能帮助您更好地了解和使用 STUMPY。

登录后查看全文
热门项目推荐
相关项目推荐