我使用 python Stumpy 从时间序列中提取子序列。对于模式 Q 和时间序列 T,我使用函数 Stumpy.match https://stumpy.readthedocs.io/en/latest/api.html#stumpy.match
现在与允许的最大距离相关:默认情况下使用:
np.nanmax([np.nanmean(D) - 2 * np.nanstd(D), np.nanmin(D)])
不知何故,这指的是 2 个标准差以内的值。我想更改此设置以查找最多 3 个标准差;我不清楚如何做到这一点 - 替换为具有单个参数 D 的函数,并且该函数返回如下所示的内容: np.nanmax([np.nanmean(D) - 3 * np.nanstd(D) ), np.nanmin(D)])。我也不清楚 D 应该是什么(我的意思是它的长度为 n - m + 1,假设 n 是整个时间序列 len,m 是窗口大小),所以我可以是没有给定查询模式 Q 的整个时间序列或什么?
对于与 STUMPY 相关的使用问题,我强烈建议将它们发布到他们的 Github 讨论区,因为在那里你会收到更快的回复。
想要更改此设置以查找最多 3 个标准差;我不清楚如何做到这一点 - 替换为具有单个参数 D 的函数,并且该函数返回如下所示的内容:
我认为你只需要做类似的事情:
import numpy as np
import stumpy
def new_max_distance(D):
return np.nanmax([np.nanmean(D) - 3 * np.nanstd(D), np.nanmin(D)])
然后将此函数传递给
max_distance
的
stumpy.match
参数
stumpy.match(
Q=np.array([-11.1, 23.4, 79.5, 1001.0]),
T=np.array([584., -11., 23., 79., 1001., 0., -19.]),
max_distance=new_max_distance
)
在内部,一旦在
D
和 Q
之间计算出距离剖面 T
,它将使用您的自定义函数来计算将 new_max_distance
应用于 D
所允许的最大距离。