如何调整Python Stumpy库match函数的最大距离阈值至3标准差?
使用stumpy.match自定义3倍标准差阈值的方法
先明确参数D的含义
- D不是移除Q后的时间序列,它是时间序列T中所有长度与Q相同的子序列,和Q计算得到的距离值组成的一维数组
- 长度为
n - m + 1的原因:T总长度为n,Q的长度为m,滑动窗口每次移动1步,总共能生成n - m + 1个和Q等长的子序列,每个子序列对应一个到Q的距离,所以D的长度就是这个数值
实现3倍标准差的自定义阈值函数
stumpy.match的max_distance参数支持传入自定义函数,这个函数仅需接收D作为唯一参数,返回你计算的最大允许距离。直接把默认逻辑里的2替换成3即可:
代码示例
import stumpy import numpy as np # 自定义3倍标准差的阈值计算函数 def custom_max_distance(D): return np.nanmax([np.nanmean(D) - 3 * np.nanstd(D), np.nanmin(D)]) # 假设T是目标时间序列,Q是待匹配的模式 matches = stumpy.match(Q, T, max_distance=custom_max_distance)
这个函数逻辑和默认逻辑完全对齐,只是将标准差的倍数从2改为3,同时保留了np.nanmin(D)作为下限的处理(防止均值减3倍标准差的结果比实际最小距离还小的情况)。
内容的提问来源于stack exchange,提问作者doog_math
相关产品推荐
相关产品推荐

