You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:如何在Shapelets DataApp中运用Matrix Profile进行时间序列模式识别

在Shapelets DataApp中使用Matrix Profile进行时间序列模式识别

前置准备

  • 确保Shapelets DataApp环境已安装shapelets-studio及配套依赖,Matrix Profile功能是Shapelets时间序列工具集的内置能力,无需额外安装第三方库。
  • 准备好自有时间序列数据,推荐CSV格式(含时间戳列与数值列),也可直接通过DataApp的数据源连接导入数据库、云存储中的数据。

具体实现步骤

1. 导入数据到DataApp

在DataApp代码编辑器中,用Shapelets内置的dataframe模块读取数据:

from shapelets.dataframes import read_csv

# 读取本地CSV文件(连接数据源时用对应read_*方法)
df = read_csv("your_time_series_data.csv")
# 将时间列转为datetime类型
df['timestamp'] = df['timestamp'].to_datetime()

2. 计算Matrix Profile

调用Shapelets的matrix_profile模块完成核心计算,需指定滑动窗口大小(根据业务关注的模式长度或时间序列周期调整):

from shapelets.ts import matrix_profile

# 设置滑动窗口大小,示例值为30,可按需调整
window_size = 30
# 基于数值列计算Matrix Profile
mp_result = matrix_profile(df['value'], window_size=window_size)

3. 识别目标模式

Matrix Profile结果包含mp(最小匹配距离)、indices(匹配模式索引)、segments(自动识别的重复/异常段)等核心字段,可针对性提取模式:

  • 提取重复模式:
# 筛选距离小于阈值的匹配项(阈值根据数据波动调整)
repeat_indices = mp_result[mp_result['mp'] < 0.1]['indices']
# 根据索引提取对应时间序列片段
repeat_segments = df.iloc[repeat_indices:repeat_indices+window_size]
  • 提取异常值:
# 取Matrix Profile值处于99分位数以上的点作为异常值
outlier_indices = mp_result[mp_result['mp'] > mp_result['mp'].quantile(0.99)].index
outlier_data = df.iloc[outlier_indices]

4. 可视化结果

用Shapelets的visualization模块将分析结果展示在DataApp界面:

from shapelets.visualization import line_plot, scatter_plot

# 绘制原始时间序列并标记异常点
line_plot(df, x='timestamp', y='value', title="原始时间序列")
scatter_plot(outlier_data, x='timestamp', y='value', color='red', title="识别出的异常点")

# 绘制Matrix Profile曲线
line_plot(mp_result, x='index', y='mp', title="Matrix Profile 曲线")

5. 封装为交互组件

将逻辑封装成可交互的DataApp控件,比如添加调整窗口大小的滑块:

from shapelets.widgets import slider

# 创建滑块控件,范围10-100,初始值30
window_slider = slider(min_value=10, max_value=100, value=30, label="滑动窗口大小")

# 定义滑块值变更时的回调函数,重新计算并更新图表
def on_window_change(value):
    updated_mp = matrix_profile(df['value'], window_size=value)
    line_plot(updated_mp, x='index', y='mp', title=f"Matrix Profile (窗口大小: {value})")

window_slider.on_change(on_window_change)

注意事项

  • 窗口大小需合理设置:过小会引入过多噪声,过大则会忽略小型模式,建议先根据时间序列周期设初始值,再通过交互调整。
  • 百万级以上数据量时,Shapelets会自动启用并行计算加速Matrix Profile运算,无需额外配置。
  • 若需自定义模式匹配(比如指定参考模式查找),可使用matrix_profile.match_pattern()方法,传入参考模式序列即可。

内容的提问来源于stack exchange,提问作者Amelia Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:47:23