STUMPY API#

有问题吗?#

在这里提问

概述

stumpy.stump

计算z标准化的矩阵轮廓

stumpy.stumped

使用 dask/ray 集群计算 z 标准化矩阵配置

stumpy.gpu_stump

使用一个或多个GPU设备计算z标准化矩阵剖面

stumpy.mass

使用MASS算法计算距离轮廓

stumpy.scrump

一个用于计算近似z标准化矩阵轮廓的类

stumpy.stumpi

用于计算流数据增量z标准化矩阵轮廓的类

stumpy.mstump

计算多维z标准化矩阵剖面

stumpy.mstumped

计算多维z标准化矩阵轮廓,使用一个 dask/ray 集群

stumpy.subspace

计算给定子序列索引及其最近邻索引的k维矩阵剖面子空间

stumpy.mdl

计算使用最小描述长度 (MDL) 压缩一个多维子序列与另一个子序列所需的多维位数

stumpy.atsc

计算锚定时间序列链(ATSC)

stumpy.allc

计算所有链集合(ALLC)

stumpy.fluss

计算快速低成本单一语义分割(FLUSS)用于静态数据(即批处理)

stumpy.floss

一个计算快速低成本在线语义分割(FLOSS)以进行流数据处理的类

stumpy.ostinato

查找多个时间序列的z标准化共识特征

stumpy.ostinatoed

在一个 dask/ray 集群上找到多个时间序列的 z 归一化共识模式

stumpy.gpu_ostinato

找到多个时间序列的z标准化共识模式,使用一个或多个GPU设备

stumpy.mpdist

计算任意两个时间序列之间的z标准化矩阵轮廓距离(MPdist)度量

stumpy.mpdisted

计算任意两个时间序列之间的z标准化矩阵轮廓距离(MPdist)度量,使用dask/ray集群

stumpy.gpu_mpdist

计算任意两个时间序列之间的z标准化矩阵剖面距离(MPdist)测量,使用一个或多个GPU设备

stumpy.motifs

发现时间序列的顶级模式 T

stumpy.match

在时间序列 T 中找到查询 Q 的所有匹配项

stumpy.mmotifs

发现多维时间序列 T 的最佳模式。

stumpy.snippets

识别最佳代表时间序列的前 kT 片段

stumpy.stimp

一个用于计算全景矩阵剖面的类

stumpy.stimped

一个用于计算 Pan 矩阵轮廓的类,使用一个 dask/ray 集群

stumpy.gpu_stimp

用于计算潘矩阵轮廓的类,支持一个或多个GPU设备

树桩#

stumpy.stump(T_A, m, T_B=None, ignore_trivial=True, normalize=True, p=2.0, k=1, T_A_subseq_isconstant=None, T_B_subseq_isconstant=None)[源]#

计算z标准化矩阵剖面

这是一个方便的包装,围绕着Numba JIT编译的并行化 _stump 函数,该函数根据STOMPopt和Pearson相关性计算 (top-k) 矩阵轮廓。

Parameters:
T_Anumpy.ndarray

要计算矩阵剖面的时间序列或序列。

mint

窗口大小。

T_Bnumpy.ndarray, default None

将用于注释T_A的时间序列或序列。对于T_A中的每个子序列,将记录其在T_B中的最近邻。默认为None,这对应于自连接。

ignore_trivialbool, default True

如果这是自连接,设置为 True。否则,对于AB连接,将其设置为 False

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

kint, default 1

用于构建矩阵剖面的最小距离的前 k 个数量。请注意,当 k > 1 时,这将增加总计算时间和内存使用。如果您可以使用 GPU 设备,那么您可能能够利用 gpu_stump 来获得更好的性能和可扩展性。

T_A_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_A 中的一个子序列是否是常量 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_A 中的一个子序列是否是常量 (True)。该函数必须仅接受两个参数,a,一个一维数组, 和 w,窗口大小,而额外的参数可以通过使用 functools.partial 对用户定义函数进行柯里化来指定。 任何包含至少一个 np.nan/np.inf 的子序列将自动在此布尔数组中 其对应值设置为 False

T_B_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_B 中的一个子序列是否为常数 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_B 中的一个子序列是否为常数 (True)。该函数必须仅接受两个参数, a,一个一维数组, 和 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定其他参数。 任何具有至少一个 np.nan/np.inf 的子序列将在此布尔数组中自动将 其对应的值设置为 False

Returns:
outnumpy.ndarray

k = 1 (默认情况下),第一列由矩阵配置组成,第二列由矩阵配置索引组成,第三列由左矩阵配置索引组成,第四列由右矩阵配置索引组成。然而,当 k > 1 时,输出数组将包含精确的 2 * k + 2 列。前 k 列(即, out[:, :k])包含前-k 矩阵配置,下一组 k 列(即, out[:, k : 2 * k])包含相应的前-k 矩阵配置索引,最后两列(即, out[:, 2 * k]out[:, 2 * k + 1] 或,等效地, out[:, -2]out[:, -1])分别对应于前-1 左矩阵配置索引和前-1 右矩阵配置索引。


为了方便,可以通过对应的命名数组属性访问矩阵剖面(距离)和矩阵剖面索引,即 .P_.I_。同样,可以通过 .left_I_.right_I_ 数组属性访问对应的左侧矩阵剖面索引和右侧矩阵剖面索引。请参见下面的示例。

另见

stumpy.stumped

使用 dask/ ray 集群计算 z 标准化矩阵轮廓

stumpy.gpu_stump

计算使用一个或多个GPU设备的z标准化矩阵轮廓

stumpy.scrump

计算近似z标准化矩阵剖面

备注

DOI: 10.1007/s10115-017-1138-x

见第4.5节

上述参考概述了一种以对角线方式遍历距离矩阵的一般方法,而不是按行方式进行。

DOI: 10.1145/3357223.3362721

参见第3.1节和第3.3节

上述参考文献概述了通过 Welford 的集中乘积和在距离矩阵的每个对角线上使用 Pearson 相关性,以替代原始 STOMP 方法中找到的滑动窗口点积。

DOI: 10.1109/ICDM.2016.0085

见表 II

时间序列, T_A,将被注释为在另一个时间序列 T_B 中所有其子序列的距离位置(或索引)。

返回:对于每个子序列, Q,在 T_A 中,您将获得与 T_B 中最近子序列的距离和索引。因此,返回的数组长度为 T_A.shape[0] - m + 1。此外,左矩阵和右矩阵的特征也将返回。

注意:与表II不同,在表II中期望 T_A.shape 等于 T_B.shape,该实现是通用的,因此 T_AT_B 的形状可以不同。在 T_A.shape == T_B.shape 的情况下,我们的算法简化为表II中找到的相同算法。

此外,与STAMP不同的是,排除区域是 m/2,STOMP的默认排除区域是 m/4(见定义3和图3)。

对于自连接,设置 ignore_trivial = True 以避免简单匹配。

注意,左矩阵剖面和右矩阵剖面仅在自连接时可用。

示例

>>> import stumpy
>>> import numpy as np
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3)
>>> mp
mparray([[0.11633857113691416, 4, -1, 4],
         [2.694073918063438, 3, -1, 3],
         [3.0000926340485923, 0, 0, 4],
         [2.694073918063438, 1, 1, -1],
         [0.11633857113691416, 0, 0, -1]], dtype=object)
>>>
>>> mp.P_
mparray([0.11633857, 2.69407392, 3.00009263, 2.69407392, 0.11633857])
>>> mp.I_
mparray([4, 3, 0, 1, 0])

困惑#

stumpy.stumped(client, T_A, m, T_B=None, ignore_trivial=True, normalize=True, p=2.0, k=1, T_A_subseq_isconstant=None, T_B_subseq_isconstant=None)[源]#

使用dask/ray集群计算z标准化矩阵轮廓

这是一个高度分布式的实现,围绕着Numba JIT编译的并行化 _stump 函数,该函数根据STOMPopt使用Pearson相关性计算(前k个)矩阵轮廓。

Parameters:
clientclient

A dask/ray 客户端。设置集群超出了该库的范围。请参考 dask/ray 文档。

T_Anumpy.ndarray

要计算矩阵剖面的时间序列或序列。

mint

窗口大小。

T_Bnumpy.ndarray, default None

将用于注释T_A的时间序列或序列。对于T_A中的每个子序列,将记录其在T_B中的最近邻。默认为None,这对应于自连接。

ignore_trivialbool, default True

如果这是自连接,设置为 True。否则,对于AB连接,将其设置为 False

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

kint, default 1

用于构建矩阵剖面的最小距离的前 k 个数量。请注意,当 k > 1 时,这将增加总计算时间和内存使用。如果您可以使用 GPU 设备,那么您可能能够利用 gpu_stump 来获得更好的性能和可扩展性。

T_A_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_A 中的一个子序列是否是常量 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_A 中的一个子序列是否是常量 (True)。该函数必须仅接受两个参数,a,一个一维数组, 和 w,窗口大小,而额外的参数可以通过使用 functools.partial 对用户定义函数进行柯里化来指定。 任何包含至少一个 np.nan/np.inf 的子序列将自动在此布尔数组中 其对应值设置为 False

T_B_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_B 中的一个子序列是否为常数 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_B 中的一个子序列是否为常数 (True)。该函数必须仅接受两个参数, a,一个一维数组, 和 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定其他参数。 任何具有至少一个 np.nan/np.inf 的子序列将在此布尔数组中自动将 其对应的值设置为 False

Returns:
outnumpy.ndarray

k = 1(默认值)时,第一列由矩阵剖面组成,第二列由矩阵剖面索引组成,第三列由左矩阵剖面索引组成,第四列由右矩阵剖面索引用组成。然而,当 k > 1 时,输出数组将包含准确的 2 * k + 2 列。前 k 列(即, out[:, :k])由前-k矩阵剖面组成,接下来的 k 列(即, out[:, k : 2 * k])由相应的前-k矩阵剖面索引组成,最后两列(即, out[:, 2 * k]out[:, 2 * k + 1] 或等效的 out[:, -2]out[:, -1])分别对应于前-1的左矩阵剖面索引和前-1的右矩阵剖面索引。


为了方便,矩阵剖面(距离)和矩阵剖面索引也可以通过其相应的命名数组属性访问,.P_.I_,分别。类似地,相应的左矩阵剖面索引和右矩阵剖面索引也可以通过.left_I_.right_I_数组属性访问。请参见下面的示例。

另见

stumpy.stump

计算z标准化矩阵轮廓聚类

stumpy.gpu_stump

计算使用一个或多个GPU设备的z标准化矩阵轮廓

stumpy.scrump

计算近似z标准化矩阵剖面

备注

DOI: 10.1007/s10115-017-1138-x

见第4.5节

上述参考概述了一种以对角线方式遍历距离矩阵的一般方法,而不是按行方式进行。

DOI: 10.1145/3357223.3362721

参见第3.1节和第3.3节

上述参考文献概述了通过 Welford 的集中乘积和在距离矩阵的每个对角线上使用 Pearson 相关性,以替代原始 STOMP 方法中找到的滑动窗口点积。

DOI: 10.1109/ICDM.2016.0085

见表 II

这是一个 dask/ray 的 stump 实现,可以跨多台服务器扩展,并且是对并行化的 stump._stump 函数的便利封装

时间序列, T_A,将被注释为在另一个时间序列 T_B 中所有其子序列的距离位置(或索引)。

返回:对于每个子序列, Q,在 T_A 中,您将获得一个距离和最近子序列在 T_B 中的索引。因此,返回的数组长度将为 T_A.shape[0] - m + 1。此外,左矩阵和右矩阵的轮廓也将被返回。

注意:与表 II 中 T_A.shape 被期望等于 T_B.shape 不同,本实现是广义的,因此 T_AT_B 的形状可以不同。在 T_A.shape == T_B.shape 的情况下,我们的算法简化为表 II 中的相同算法。

此外,与STAMP不同的是,排除区域是 m/2,STOMP的默认排除区域是 m/4(见定义3和图3)。

对于自连接,设置 ignore_trivial = True 以避免简单匹配。

注意,左矩阵剖面和右矩阵剖面仅在自连接时可用。

示例

>>> import stumpy
>>> import numpy as np
>>> from dask.distributed import Client
>>> if __name__ == "__main__":
...     with Client() as dask_client:
...         stumpy.stumped(
...             dask_client,
...             np.array([584., -11., 23., 79., 1001., 0., -19.]),
...             m=3)
mparray([[0.11633857113691416, 4, -1, 4],
         [2.694073918063438, 3, -1, 3],
         [3.0000926340485923, 0, 0, 4],
         [2.694073918063438, 1, 1, -1],
         [0.11633857113691416, 0, 0, -1]], dtype=object)
>>>
>>>         mp.P_
mparray([0.11633857, 2.69407392, 3.00009263, 2.69407392, 0.11633857])
>>>         mp.I_
mparray([4, 3, 0, 1, 0])

或者,你也可以使用 ray

>>> import ray
>>> if __name__ == "__main__":
>>>     ray.init()
>>>     stumpy.stumped(
...             ray,
...             np.array([584., -11., 23., 79., 1001., 0., -19.]),
...             m=3)
>>>     ray.shutdown()

gpu_stump#

stumpy.gpu_stump(T_A, m, T_B=None, ignore_trivial=True, device_id=0, normalize=True, p=2.0, k=1, T_A_subseq_isconstant=None, T_B_subseq_isconstant=None)#

计算使用一个或多个GPU设备的z标准化矩阵轮廓

这是一个方便的包装器,围绕着Numba cuda.jit _gpu_stump 函数,按照GPU-STOMP计算矩阵分析。默认的每块线程数设置为 512,可以通过将全局参数 config.STUMPY_THREADS_PER_BLOCK 设置为基于您的GPU硬件的适当数字来更改。

Parameters:
T_Anumpy.ndarray

要计算矩阵剖面的时间序列或序列。

mint

窗口大小。

T_Bnumpy.ndarray, default None

将用于注释 T_A 的时间序列或序列。对于 T_A 中的每个子序列,其在 T_B 中的最近邻将被记录。默认是 None ,这对应于自连接。

ignore_trivialbool, default True

如果这是自连接,设置为 True。否则,对于AB连接,将其设置为 False

device_idint or list, default 0

要使用的 (GPU) 设备编号。默认值为 0。还可以提供有效设备 ID 的列表 (int) 以进行并行 GPU-STUMP 计算。可以通过执行 [device.id for device in numba.cuda.list_devices()] 获得所有有效设备 ID 的列表。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

kint, default 1

用于构建矩阵轮廓的最小距离的前 k 个数量。请注意,当 k > 1 时,这将增加总的计算时间和内存使用。

T_A_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_A 中的一个子序列是否是常量 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_A 中的一个子序列是否是常量 (True)。该函数必须仅接受两个参数,a,一个一维数组, 和 w,窗口大小,而额外的参数可以通过使用 functools.partial 对用户定义函数进行柯里化来指定。 任何包含至少一个 np.nan/np.inf 的子序列将自动在此布尔数组中 其对应值设置为 False

T_B_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_B 中的一个子序列是否为常数 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_B 中的一个子序列是否为常数 (True)。该函数必须仅接受两个参数, a,一个一维数组, 和 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定其他参数。 任何具有至少一个 np.nan/np.inf 的子序列将在此布尔数组中自动将 其对应的值设置为 False

Returns:
outnumpy.ndarray

k = 1(默认值)时,第一列包含矩阵剖面,第二列包含矩阵剖面索引,第三列包含左矩阵剖面索引,第四列包含右矩阵剖面索引。然而,当 k > 1 时,输出数组将包含正好 2 * k + 2 列。前 k 列(即, out[:, :k])包含前 k 个矩阵剖面,接下来的 k 列(即, out[:, k : 2 * k)包含对应的前 k 个矩阵剖面索引,最后两列(即, out[:, 2 * k]out[:, 2 * k + 1],或等效地 out[:, -2]out[:, -1])分别对应于前 1 个左矩阵剖面索引和前 1 个右矩阵剖面索引。


为了方便,矩阵剖面(距离)和矩阵剖面索引也可以通过其相应的命名数组属性访问,.P_.I_,分别。类似地,相应的左矩阵剖面索引和右矩阵剖面索引也可以通过.left_I_.right_I_数组属性访问。请参见下面的示例。

另见

stumpy.stump

计算z标准化矩阵剖面

stumpy.stumped

使用 dask/ ray 集群计算 z 标准化矩阵轮廓

stumpy.scrump

计算近似z标准化矩阵剖面

备注

DOI: 10.1109/ICDM.2016.0085

请参见表 II、图 5 和图 6

时间序列, T_A,将被注释为在另一个时间序列 T_B 中所有其子序列的距离位置(或索引)。

返回:对于每个子序列, Q,在 T_A 中,您将获得与 T_B 中最近子序列的距离和索引。因此,返回的数组长度为 T_A.shape[0] - m + 1。此外,左矩阵和右矩阵的特征也将返回。

注意:与表 II 中 T_A.shape 被期望等于 T_B.shape 不同,本实现是广义的,因此 T_AT_B 的形状可以不同。在 T_A.shape == T_B.shape 的情况下,我们的算法简化为表 II 中的相同算法。

此外,与STAMP不同的是,排除区域是 m/2,STOMP的默认排除区域是 m/4(见定义3和图3)。

对于自连接,设置 ignore_trivial = True 以避免简单匹配。

注意,左矩阵剖面和右矩阵剖面仅在自连接时可用。

示例

>>> import stumpy
>>> import numpy as np
>>> from numba import cuda
>>> if __name__ == "__main__":
...     all_gpu_devices = [device.id for device in cuda.list_devices()]
...     mp = stumpy.gpu_stump(
...         np.array([584., -11., 23., 79., 1001., 0., -19.]),
...         m=3,
...         device_id=all_gpu_devices)
>>>     mp
mparray([[0.11633857113691416, 4, -1, 4],
         [2.694073918063438, 3, -1, 3],
         [3.0000926340485923, 0, 0, 4],
         [2.694073918063438, 1, 1, -1],
         [0.11633857113691416, 0, 0, -1]], dtype=object)
>>>
>>>     mp.P_
mparray([0.11633857, 2.69407392, 3.00009263, 2.69407392, 0.11633857])
>>>     mp.I_
mparray([4, 3, 0, 1, 0])

质量#

stumpy.mass(Q, T, M_T=None, Σ_T=None, normalize=True, p=2.0, T_subseq_isfinite=None, T_subseq_isconstant=None, Q_subseq_isconstant=None, query_idx=None)[源]#

使用MASS算法计算距离概况

这是一个方便的包装器,围绕着Numba JIT编译的_mass函数。

Parameters:
Qnumpy.ndarray

查询数组或子序列。

Tnumpy.ndarray

时间序列或序列。

M_Tnumpy.ndarray, default None

滑动平均值 T.

Σ_Tnumpy.ndarray, default None

滑动标准差 of T.

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的p范数。此参数在 normalize == True 时被忽略。

T_subseq_isfinitenumpy.ndarray, default None

一个布尔数组,指示T中的子序列是否包含np.nan/np.inf值(False)。当normalize == True时,此参数被忽略。

T_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,用于指示 T 中的子序列是否是连续的 (True)。另外,可以使用自定义的用户定义函数返回一个 布尔数组,该数组指示 T 中的子序列是否是连续的 (True)。该函数必须仅接受两个参数,a,一个一维数组, 和 w,窗口大小,而额外的参数可以通过使用 functools.partial 对用户定义函数进行柯里化来指定。 任何包含至少一个 np.nan/np.inf 的子序列将在该布尔数组中对应的值自动设置为 False

Q_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,用于指示Q中的子序列是否是常量 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,用于指示Q中的子序列是否是常量 (True)。该函数仅需接受两个参数,a,一个一维数组, 和w,窗口大小,而额外的参数可以通过使用functools.partial对用户定义的函数进行柯里化来指定。 任何含有至少一个np.nan/np.inf的子序列将自动在此布尔数组中将其对应的值设为False

query_idxint, default None

这是时间序列中的索引位置,T,查询子序列Q的位置。如果Q不是T的子序列,则query_idx应设置为None。如果QT的子序列,则提供此参数是可选的。如果提供了query_idx,则QT[query_idx : query_idx + m]之间的距离将自动设为零。

Returns:
distance_profilenumpy.ndarray

距离剖面。

另见

stumpy.motifs

发现时间序列的主要模式 T

stumpy.match

在时间序列 T 中查找查询 Q 的所有匹配项

备注

DOI: 10.1109/ICDM.2016.0179

见表 II

请注意 Q, T 并不是计算 D 直接所需的

注意:与《Matrix Profile I》论文不同,在这里, M_TΣ_T 可以针对T的所有子序列计算一次并传入,从而消除冗余

示例

>>> import stumpy
>>> import numpy as np
>>> stumpy.mass(
...     np.array([-11.1, 23.4, 79.5, 1001.0]),
...     np.array([584., -11., 23., 79., 1001., 0., -19.]))
array([3.18792463e+00, 1.11297393e-03, 3.23874018e+00, 3.34470195e+00])

敏捷开发#

stumpy.scrump(T_A, m, T_B=None, ignore_trivial=True, percentage=0.01, pre_scrump=False, s=None, normalize=True, p=2.0, k=1, T_A_subseq_isconstant=None, T_B_subseq_isconstant=None)[源]#

用于计算近似z标准化矩阵剖面的类

这是一个关于Numba JIT编译的并行化 _stump 函数的便利封装,该函数根据SCRIMP计算矩阵剖面。

Parameters:
T_Anumpy.ndarray

要计算矩阵剖面的时间序列或序列。

T_Bnumpy.ndarray

将用于注释 T_A 的时间序列或序列。对于 T_A 中的每一个子序列,它在 T_B 中的最近邻将被记录。

mint

窗口大小。

ignore_trivialbool

如果这是自连接,则设置为 True。否则,对于 AB 连接,将其设置为 False

percentagefloat

完成的大致百分比。该值介于 0.01.0 之间。

pre_scrumpbool

一个标志,指示在计算SCRIMP之前是否执行PreSCRIMP计算。如果设置为 True,这相当于计算SCRIMP++,可能会导致更快的收敛

sint

PreSCRIMP 固定间隔的大小。如果 pre_scrump = True 并且 s = None,那么 s 将自动设置为 s = int(np.ceil(m / config.STUMPY_EXCL_ZONE_DENOM)),这是 排除区域的大小。

normalizebool, default True

当设置为 True 时,此操作在计算距离之前对子序列进行z标准化。否则,此类会重新路由到其补充的非标准化等效设置,在 @core.non_normalized 类装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

kint, default 1

用于构建矩阵特征的最小 k 个最小距离的数量。注意,当 k > 1 时,这将增加总的计算时间和内存使用。

T_A_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_A 中的一个子序列是否是常量 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_A 中的一个子序列是否是常量 (True)。该函数必须仅接受两个参数,a,一个一维数组, 和 w,窗口大小,而额外的参数可以通过使用 functools.partial 对用户定义函数进行柯里化来指定。 任何包含至少一个 np.nan/np.inf 的子序列将自动在此布尔数组中 其对应值设置为 False

T_B_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_B 中的一个子序列是否为常数 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_B 中的一个子序列是否为常数 (True)。该函数必须仅接受两个参数, a,一个一维数组, 和 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定其他参数。 任何具有至少一个 np.nan/np.inf 的子序列将在此布尔数组中自动将 其对应的值设置为 False

Attributes:
P_numpy.ndarray

获取更新的(前k个)矩阵剖面。

I_numpy.ndarray

获取更新的(前k个)矩阵剖面索引。

left_I_numpy.ndarray

获取更新的左侧(顶部-1)矩阵剖面索引

right_I_numpy.ndarray

获取更新的右侧(top-1)矩阵轮廓索引

方法

update()

通过计算额外的新距离(受限于 percentage),更新矩阵轮廓和矩阵轮廓索引,以构成完整的距离矩阵。它更新了(top-k)矩阵轮廓、(top-1)左矩阵轮廓、(top-1)右矩阵轮廓、(top-k)矩阵轮廓索引、(top-1)左矩阵轮廓索引和(top-1)右矩阵轮廓索引。

另见

stumpy.stump

计算z标准化矩阵剖面

stumpy.stumped

使用dask/ray集群计算z标准化矩阵轮廓

stumpy.gpu_stump

计算使用一个或多个GPU设备的z标准化矩阵轮廓

备注

DOI: 10.1109/ICDM.2018.00099

请参见算法 1 和算法 2

示例

>>> import stumpy
>>> import numpy as np
>>> approx_mp = stumpy.scrump(
...     np.array([584., -11., 23., 79., 1001., 0., -19.]),
...     m=3)
>>> approx_mp.update()
>>> approx_mp.P_
array([2.982409  , 3.28412702,        inf, 2.982409  , 3.28412702])
>>> approx_mp.I_
array([ 3,  4, -1,  0,  1])

树桩i#

stumpy.stumpi(T, m, egress=True, normalize=True, p=2.0, k=1, mp=None, T_subseq_isconstant_func=None)[源]#

一个用于计算流数据增量z标准化矩阵轮廓的类

这是基于在线STOMPI和STAMPI算法。

Parameters:
Tnumpy.ndarray

将返回矩阵简介和矩阵简介索引的时间序列或序列。

mint

窗口大小。

egressbool, default True

如果设置为 True,时间序列中的最旧数据点将被移除,时间序列的长度将保持不变,而不是永远增加

normalizebool, default True

当设置为 True 时,此 z 标准化子序列在计算距离之前。否则,此类将被重新路由到其在 @core.non_normalized 类装饰器中对应的非标准化等价物。

pfloat, default 2.0

用于计算闵可夫斯基距离的p范数。此参数在 normalize == True 时被忽略。

kint, default 1

用于构建矩阵特征的最小 k 个最小距离的数量。注意,当 k > 1 时,这将增加总的计算时间和内存使用。

mpnumpy.ndarray, default None

预计算的矩阵特征(及其对应的矩阵特征索引)。这是一个形状为 (len(T) - m + 1, 2 * k + 2) 的二维数组,其中前 k 列是前 k 矩阵特征,接下来的 k 列是它们对应的索引。最后两列对应于 top-1 左侧和 top-1 右侧矩阵特征索引。当 None(默认)时,这个数组在内部使用 stumpy.stump 计算。

T_subseq_isconstant_funcfunction, default None

一个自定义的用户定义函数,它返回一个布尔数组,指示在 T 中的子序列是否是常量 (True)。该函数必须只接受两个参数,a,一个一维数组,以及 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定额外的参数。任何具有至少一个 np.nan/np.inf 的子序列,将自动在这个布尔数组中对应的值设置为 False

Attributes:
P_numpy.ndarray

获取 (top-k) 矩阵配置文件。

I_numpy.ndarray

获取(前k个)矩阵轮廓索引。

left_P_numpy.ndarray

获取(top-1)左矩阵概况

left_I_numpy.ndarray

获取(top-1)左侧矩阵轮廓索引

T_numpy.ndarray

获取时间序列

方法

update(t)

将单个新数据点,t,附加到时间序列T中,并更新矩阵剖面。

备注

DOI: 10.1007/s10618-017-0519-9

参见表 V

注意第11行缺少一个重要的 sqrt 操作!

示例

>>> import stumpy
>>> import numpy as np
>>> stream = stumpy.stumpi(
...     np.array([584., -11., 23., 79., 1001., 0.]),
...     m=3)
>>> stream.update(-19.0)
>>> stream.left_P_
array([       inf, 3.00009263, 2.69407392, 3.05656417])
>>> stream.left_I_
array([-1,  0,  1,  2])

mstump#

stumpy.mstump(T, m, include=None, discords=False, normalize=True, p=2.0, T_subseq_isconstant=None)[源]#

计算多维z标准化矩阵轮廓

这是一个便利的包装器,围绕着Numba JIT编译的并行化 _mstump 函数,该函数根据mSTOMP计算多维矩阵轮廓和多维矩阵轮廓索引,mSTOMP是 mSTAMP的一种变体。请注意,仅支持自连接。

Parameters:
Tnumpy.ndarray

用于计算多维矩阵剖面的时间序列或序列。T中的每一行代表来自同一维度的数据,而T中的每一列代表来自不同维度的数据。

mint

窗口大小。

includelist, numpy.ndarray, default None

与必须包含在受限的多维动机搜索中的T的维度对应的(零基)索引列表。有关更多信息,请参见:

DOI: 10.1109/ICDM.2017.66

discordsbool, default False

当设置为 True 时,这将反转距离矩阵,从而产生一个多维矩阵特征,偏向于较大的矩阵特征值(即,离群值),而不是较小的值(即,模式)。请注意,include 中的索引仍然得到维护和尊重。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isconstantnumpy.ndarray, function, or list, default None

一个参数,用于显示时间序列中一个子序列是否为常数(True)。T_subseq_isconstant 可以是一个 2D 布尔 numpy.ndarray,也可以是一个可以应用于 T 中每个时间序列的函数。或者,为了最大灵活性,也可以使用一个列表(长度等于时间序列的总数)。在这种情况下,T_subseq_isconstant[i] 对应于第 i 个时间序列 T[i],列表中的每个元素可以是一个 1D 布尔 numpy.ndarray、一个函数,或 None

Returns:
Pnumpy.ndarray

多维矩阵剖面。数组的每一行对应于给定维度的每个矩阵剖面(即,第一行是1维矩阵剖面,第二行是2维矩阵剖面)。

Inumpy.ndarray

多维矩阵特征索引,其中数组的每一行对应于给定维度的每个矩阵特征索引。

另见

stumpy.mstumped

计算多维z标准化矩阵轮廓,使用一个 dask/ray 集群

stumpy.subspace

计算给定子序列索引及其最近邻索引的k维矩阵剖面子空间

stumpy.mdl

计算使用最小描述长度(MDL)将一个数组压缩到另一个数组所需的位数

备注

DOI: 10.1109/ICDM.2017.66

查看 mSTAMP 算法

示例

>>> stumpy.mstump(
...     np.array([[584., -11., 23., 79., 1001., 0., -19.],
...               [  1.,   2.,  4.,  8.,   16., 0.,  32.]]),
...     m=3)
(array([[0.        , 1.43947142, 0.        , 2.69407392, 0.11633857],
        [0.777905  , 2.36179922, 1.50004632, 2.92246722, 0.777905  ]]),
 array([[2, 4, 0, 1, 0],
        [4, 4, 0, 1, 0]]))

mstumped#

stumpy.mstumped(client, T, m, include=None, discords=False, p=2.0, normalize=True, T_subseq_isconstant=None)[源]#

计算多维z标准化矩阵剖面的 dask/ray 集群

这是一个高度分布式的实现,围绕着 Numba JIT 编译的 并行化 _mstump 函数,该函数根据 STOMP 计算多维矩阵 轮廓。请注意,仅支持自连接。

Parameters:
clientclient

A dask/ray 客户端。设置集群超出了该库的范围。请参考 dask/ray 文档。

Tnumpy.ndarray

用于计算多维矩阵剖面的时间序列或序列。T中的每一行代表来自同一维度的数据,而T中的每一列代表来自不同维度的数据。

mint

窗口大小。

includelist, numpy.ndarray, default None

与必须包含在受限的多维动机搜索中的T的维度对应的(零基)索引列表。有关更多信息,请参见:

DOI: 10.1109/ICDM.2017.66

discordsbool, default False

当设置为 True 时,这会反转距离矩阵,从而产生一个多维矩阵轮廓,该轮廓偏向于较大的矩阵轮廓值(即,离群点),而不是较小的值(即,模式)。请注意,include 中的索引仍然得到维护和尊重。

pfloat, default 2.0

用于计算闵可夫斯基距离的p范数。闵可夫斯基距离通常与 p12,分别对应于曼哈顿距离和欧几里得距离。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

T_subseq_isconstantnumpy.ndarray, function, or list, default None

一个参数,用于显示时间序列中的一个子序列在 T 中是否为常数 (True)。 T_subseq_isconstant 可以是一个 2D 布尔 numpy.ndarray 或可应用于每个时间序列的函数在 T 中。或者,为了最大灵活性,也可以使用一个列表(长度等于时间序列的总数)。在这种情况下, T_subseq_isconstant[i] 对应于第 i 个时间序列 T[i],列表中的每个元素可以是一个 1D 布尔 numpy.ndarray,一个函数,或者 None

Returns:
Pnumpy.ndarray

多维矩阵剖面。数组的每一行对应于给定维度的每个矩阵剖面(即,第一行是1维矩阵剖面,第二行是2维矩阵剖面)。

Inumpy.ndarray

多维矩阵特征索引,其中数组的每一行对应于给定维度的每个矩阵特征索引。

另见

stumpy.mstump

计算多维z标准化矩阵轮廓

stumpy.subspace

计算给定子序列索引及其最近邻索引的k维矩阵剖面子空间

stumpy.mdl

计算使用最小描述长度(MDL)将一个数组压缩到另一个数组所需的位数

备注

DOI: 10.1109/ICDM.2017.66

查看 mSTAMP 算法

示例

>>> import stumpy
>>> import numpy as np
>>> from dask.distributed import Client
>>> if __name__ == "__main__":
...     with Client() as dask_client:
...         stumpy.mstumped(
...             dask_client,
...             np.array([[584., -11., 23., 79., 1001., 0., -19.],
...                       [  1.,   2.,  4.,  8.,   16., 0.,  32.]]),
...             m=3)
(array([[0.        , 1.43947142, 0.        , 2.69407392, 0.11633857],
        [0.777905  , 2.36179922, 1.50004632, 2.92246722, 0.777905  ]]),
 array([[2, 4, 0, 1, 0],
        [4, 4, 0, 1, 0]]))

或者,你也可以使用 ray

>>> import ray
>>> if __name__ == "__main__":
>>>     ray.init()
>>>     stumpy.mstumped(
...         ray,
...         np.array([[584., -11., 23., 79., 1001., 0., -19.],
...                   [  1.,   2.,  4.,  8.,   16., 0.,  32.]]),
...         m=3)
>>>     ray.shutdown()

子空间#

stumpy.subspace(T, m, subseq_idx, nn_idx, k, include=None, discords=False, discretize_func=None, n_bit=8, normalize=True, p=2.0, T_subseq_isconstant=None)[源]#

计算给定子序列索引的 k 维矩阵配置子空间及其最近邻索引

Parameters:
Tnumpy.ndarray

计算多维矩阵剖面、计算多维矩阵剖面索引的时间序列或序列。

mint

窗口大小。

subseq_idxint

子序列索引在 T 中。

nn_idxint

T 中的最近邻索引。

kint

要返回子空间的维度子集数量,来自于 D = T.shape[0] 维度。请注意使用的是零基索引。

includenumpy.ndarray, default None

与必须包含在受限的多维动机搜索中的T的维度对应的(零基)索引列表。有关更多信息,请参见:

DOI: 10.1109/ICDM.2017.66

discordsbool, default False

当设置为 True 时,这会反转距离轮廓,以偏向不和谐模式而不是模式。 请注意,include 中的索引仍然保持并受到尊重。

discretize_funcfunc, default None

一个用于离散化每个输入数组的函数。当这个是 None 时,将应用一个合适的离散化函数(基于 normalize 参数)。

n_bitint, default 8

用于离散化的位数。有关适当值的更多信息,请参见:

DOI: 10.1109/ICDM.2016.0069

和图2在:

DOI: 10.1109/ICDM.2011.54

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isconstantnumpy.ndarray, function, or list, default None

一个参数,用于显示时间序列的子序列在 T 中是否是常数 (True) 或不是。 T_subseq_isconstant 可以是一个 2D 布尔 numpy.ndarray 或可以应用于 T 中每个时间序列的函数。或者,为了最大灵活性,也可以使用一个列表(长度等于时间序列的总数)。在这种情况下, T_subseq_isconstant[i] 对应于第 i 个时间序列 T[i],列表中的每个元素可以是一个 1D 布尔 numpy.ndarray、一个函数或 None

Returns:
Snumpy.ndarray

一个包含索引等于 subseq_idx 的子序列的(单一的) k 维子空间的数组。注意将返回 k + 1 行。

另见

stumpy.mstump

计算多维z标准化矩阵轮廓

stumpy.mstumped

计算多维z标准化矩阵轮廓,使用一个 dask/ray 集群

stumpy.mdl

计算使用最小描述长度(MDL)将一个数组压缩到另一个数组所需的位数

示例

>>> import stumpy
>>> import numpy as np
>>> mps, indices = stumpy.mstump(
...     np.array([[584., -11., 23., 79., 1001., 0., -19.],
...               [  1.,   2.,  4.,  8.,   16., 0.,  32.]]),
...     m=3)
>>> motifs_idx = np.argsort(mps, axis=1)[:, :2]
>>> k = 1
>>> stumpy.subspace(
...     np.array([[584., -11., 23., 79., 1001., 0., -19.],
...               [  1.,   2.,  4.,  8.,   16., 0.,  32.]]),
...     m=3,
...     subseq_idx=motifs_idx[k][0],
...     nn_idx=indices[k][motifs_idx[k][0]],
...     k=k)
array([0, 1])

mdl#

stumpy.mdl(T, m, subseq_idx, nn_idx, include=None, discords=False, discretize_func=None, n_bit=8, normalize=True, p=2.0, T_subseq_isconstant=None)[源]#

计算在每个k维度上使用最小描述长度(MDL)将一个多维子序列与另一个多维子序列压缩所需的位数

Parameters:
Tnumpy.ndarray

计算多维矩阵剖面、计算多维矩阵剖面索引的时间序列或序列。

mint

窗口大小。

subseq_idxnumpy.ndarray

T中的多维子序列索引

nn_idxnumpy.ndarray

多维最近邻索引在 T

includenumpy.ndarray, default None

与必须包含在受限的多维动机搜索中的T的维度对应的(零基)索引列表。有关更多信息,请参见:

DOI: 10.1109/ICDM.2017.66

discordsbool, default False

当设置为 True 时,距离轮廓会反转,以优先考虑不和谐而不是模式。请注意,include 中的索引仍然被维护和尊重。

discretize_funcfunc, default None

一个用于离散化每个输入数组的函数。当这个是 None 时,将应用一个适当的离散化函数(基于 normalization 参数)。

n_bitint, default 8

用于离散化和计算位大小的位数。有关适当值的更多信息,请参见:

DOI: 10.1109/ICDM.2016.0069

和图2在:

DOI: 10.1109/ICDM.2011.54

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isconstantnumpy.ndarray, function, or list, default None

一个参数,用于显示时间序列中的一个子序列在 T 中是否为常数 (True)。 T_subseq_isconstant 可以是一个 2D 布尔 numpy.ndarray 或可应用于每个时间序列的函数在 T 中。或者,为了最大灵活性,也可以使用一个列表(长度等于时间序列的总数)。在这种情况下, T_subseq_isconstant[i] 对应于第 i 个时间序列 T[i],列表中的每个元素可以是一个 1D 布尔 numpy.ndarray,一个函数,或者 None

Returns:
bit_sizesnumpy.ndarray

用于表示每对多维子序列的从MDL计算出的总比特数。

Slist

包含k维子空间的numpy.ndarrays列表。

另见

stumpy.mstump

计算多维z标准化矩阵轮廓

stumpy.mstumped

计算多维z标准化矩阵轮廓,使用一个 dask/ray 集群

stumpy.subspace

计算给定子序列索引及其最近邻索引的k维矩阵剖面子空间

示例

>>> import stumpy
>>> import numpy as np
>>> mps, indices = stumpy.mstump(
...     np.array([[584., -11., 23., 79., 1001., 0., -19.],
...               [  1.,   2.,  4.,  8.,   16., 0.,  32.]]),
...     m=3)
>>> motifs_idx = np.argsort(mps, axis=1)[:, 0]
>>> stumpy.mdl(
...     np.array([[584., -11., 23., 79., 1001., 0., -19.],
...               [  1.,   2.,  4.,  8.,   16., 0.,  32.]]),
...     m=3,
...     subseq_idx=motifs_idx,
...     nn_idx=indices[np.arange(motifs_idx.shape[0]), motifs_idx])
(array([ 80.      , 111.509775]), [array([1]), array([0, 1])])

atsc#

stumpy.atsc(IL, IR, j)[源]#

计算锚定时间序列链(ATSC)

请注意,由于矩阵轮廓索引 ILIR 是预先计算的,这个函数与子序列归一化无关。

Parameters:
ILnumpy.ndarray

左矩阵轮廓索引。

IRnumpy.ndarray

右侧矩阵轮廓索引。

jint

用于计算ATSC的索引值。

Returns:
outnumpy.ndarray

索引的锚定时间序列链, j

另见

stumpy.allc

计算所有链集合 (ALLC)

备注

DOI: 10.1109/ICDM.2017.79

请参见表 I

这是锚定时间序列链(ATSC)的实现。

与原论文不同,我们用一个更稳定的 for 循环替换了 while 循环。

示例

>>> import stumpy
>>> import numpy as np
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3)
>>> stumpy.atsc(mp[:, 2], mp[:, 3], 1)
array([1, 3])
>>> # Alternative example using named attributes
>>>
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3)
>>> stumpy.atsc(mp.left_I_, mp.right_I_, 1)
array([1, 3])

所有c#

stumpy.allc(IL, IR)[源]#

计算所有链集合 (ALLC)

请注意,由于矩阵轮廓索引 ILIR 是预先计算的,这个函数与子序列归一化无关。

Parameters:
ILnumpy.ndarray

左矩阵轮廓索引。

IRnumpy.ndarray

右矩阵轮廓索引。

Returns:
Slist(numpy.ndarray)

全链集合。

Cnumpy.ndarray

锚定时间序列链用于最长链(也称为未锚定链)。注意,当存在多个不同的链,其长度等于len(C)时,仅返回这组中的一个链。您可以迭代所有链集合S,以查找所有其他可能的链,长度为len(C)

另见

stumpy.atsc

计算锚定时间序列链(ATSC)

备注

DOI: 10.1109/ICDM.2017.79

见表 II

与原始论文不同,我们用一个更稳定的 for 循环替换了 while 循环。

这是所有链集合(ALLC)的实现,未固定链仅仅是所有链集合中最长的一个。所有链集合和未固定链都会被返回。

所有链集, S,作为唯一的 numpy 数组列表返回。

示例

>>> import stumpy
>>> import numpy as np
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3)
>>> stumpy.allc(mp[:, 2], mp[:, 3])
([array([1, 3]), array([2]), array([0, 4])], array([0, 4]))
>>> # Alternative example using named attributes
>>>
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3)
>>> stumpy.allc(mp.left_I_, mp.right_I_)
([array([1, 3]), array([2]), array([0, 4])], array([0, 4]))

流动#

stumpy.fluss(I, L, n_regimes, excl_factor=5, custom_iac=None)[源]#

计算快速低成本单元语义分割(FLUSS)用于静态数据(即批处理)

本质上,这是一个封装器,用于计算修正的弧曲线和状态位置。请注意,由于矩阵轮廓索引,I,是预先计算的,因此此函数与子序列归一化无关。

Parameters:
Inumpy.ndarray

感兴趣的时间序列的矩阵剖面索引。

Lint

子序列长度设置大致为一个周期长度。 这很可能与用于计算矩阵概况和矩阵概况索引的窗口大小 m 相同,但它可以不同,因为这仅用于管理边缘效应,并且与任何 IAC 或 CAC 核心计算无关。

n_regimesint

要搜索的状态数量。这比原始论文中所示的状态变化数量多一个。

excl_factorint, default 5

政权排除区的乘数因子。

custom_iacnumpy.ndarray, default None

一个用于修正弧线的自定义理想化弧线曲线 (IAC)。

Returns:
cacnumpy.ndarray

一个修正的弧线(CAC)。

regime_locsnumpy.ndarray

政权的位置。

另见

stumpy.floss

计算流数据的快速低成本在线语义分割(FLOSS)

备注

DOI: 10.1109/ICDM.2017.21

参见A节

这是快速低成本单值语义分割(FLUSS)的实现。

示例

>>> import stumpy
>>> import numpy as np
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3)
>>> stumpy.fluss(mp[:, 0], 3, 2)
(array([1., 1., 1., 1., 1.]), array([0]))
>>> # Alternative example using named attributes
>>>
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3)
>>> stumpy.fluss(mp.P_, 3, 2)
(array([1., 1., 1., 1., 1.]), array([0]))

牙线#

stumpy.floss(mp, T, m, L, excl_factor=5, n_iter=1000, n_samples=1000, custom_iac=None, normalize=True, p=2.0, T_subseq_isconstant_func=None)[源]#

一个用于计算快速低成本在线语义分割(FLOSS)的类,适用于流数据

Parameters:
mpnumpy.ndarray

第一列由矩阵轮廓组成,第二列由矩阵轮廓索引组成,第三列由左侧矩阵轮廓索引组成,第四列由右侧矩阵轮廓索引组成。

Tnumpy.ndarray

用于生成矩阵概要和在 mp 中找到的矩阵概要索引的一维时间序列数据。注意,使用的是右侧的矩阵概要索引,并且右侧的矩阵概要是智能地从 T 动态重新计算的,而不是使用双向矩阵概要。

mint

用于计算滑动窗口质量的窗口大小。这与矩阵剖面计算中使用的窗口大小相同。有关管理边缘效应,请参见L参数。

Lint

子序列长度设置大致为一个周期长度。 这很可能与用于计算矩阵概况和矩阵概况索引的窗口大小 m 相同,但它可以不同,因为这仅用于管理边缘效应,并且与任何 IAC 或 CAC 核心计算无关。

excl_factorint, default 5

该制度排除区的乘数因子。请注意,这与用于计算矩阵轮廓的 excl_zone 无关。

n_iterint, default 1000

在确定IAC贝塔分布的参数时,用于平均的迭代次数。

n_samplesint, default 1000

在计算IAC时,每次迭代要抽取的分布样本数量。

custom_iacnumpy.ndarray, default None

一个用于修正弧线的自定义理想化弧线曲线 (IAC)。

normalizebool, default True

当设置为 True 时,这会在计算距离之前对子序列进行z标准化

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isconstant_funcfunction, default None

一个自定义的用户定义函数,它返回一个布尔数组,指示在 T 中的子序列是否是常量 (True)。该函数必须只接受两个参数,a,一个一维数组,以及 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定额外的参数。任何具有至少一个 np.nan/np.inf 的子序列,将自动在这个布尔数组中对应的值设置为 False

Attributes:
cac_1d_numpy.ndarray

获取更新的一维校正弧线 (CAC_1D)

P_numpy.ndarray

获取更新后的矩阵剖面

I_numpy.ndarray

获取更新的(右)矩阵剖面索引

T_numpy.ndarray

获取更新的时间序列,T

方法

update(t)

将一个新的数据点,t,输入到时间序列T中,然后将T中最旧的单个数据点输出。接着,更新一维校正弧曲线(CAC_1D)和矩阵轮廓。

另见

stumpy.fluss

计算快速低成本单元语义分割(FLUSS)用于静态数据(即,批处理)

备注

DOI: 10.1109/ICDM.2017.21

见第C节

这是快速低成本在线语义分割(FLOSS)的实现。

示例

>>> import stumpy
>>> import numpy as np
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0.]), m=3)
>>> stream = stumpy.floss(
...     mp,
...     np.array([584., -11., 23., 79., 1001., 0.]),
...     m=3,
...     L=3)
>>> stream.update(19.)
>>> stream.cac_1d_
array([1., 1., 1., 1.])

重复音#

stumpy.ostinato(Ts, m, normalize=True, p=2.0, Ts_subseq_isconstant=None)[源]#

找到多个时间序列的z标准化共识模式

这是ostinato算法的原生版本的一个包装器,它找到最佳半径和一个辅助函数,该函数找到最中心的保护性模式。

Parameters:
Tslist

要寻找最中心的一致动机的时间序列列表。

mint

窗口大小。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

Ts_subseq_isconstantlist, default None

每个时间序列的滚动窗口列表是常量,位于 Ts 中。

Returns:
central_radiusfloat

最中心共识基序的半径。

central_Ts_idxint

包含最中心共识主题的Ts中的时间序列索引。

central_subseq_idxint

时间序列 Ts[central_motif_Ts_idx] 中包含最中心共识特征的子序列索引。

另见

stumpy.ostinatoed

找到多个时间序列的z标准化共识模式,使用一个 dask/ray 集群

stumpy.gpu_ostinato

找到多个时间序列的z标准化共识图案,使用一个或多个GPU设备

备注

DOI: 10.1109/ICDM.2019.00140

见表2

本文中提出的ostinato算法在 Ts 中找到最佳半径。直观上,半径是一个子序列的最小距离,以包含来自所有其他时间序列的至少一个最近邻子序列。在 Ts 中的最佳半径是所有半径中的最小半径。一些数据集可能包含多个具有相同最佳半径的子序列。贪婪的Ostinato算法仅找到其中一个,这可能不是最中心的主题。在具有最佳半径的子序列中,最中心的主题是与所有其他时间序列的最近邻的平均距离最小的子序列。要找到这个中心主题,有必要通过 stumpy.ostinato._get_central_motif 搜索具有最佳半径的子序列。

示例

>>> import stumpy
>>> import numpy as np
>>> stumpy.ostinato(
...     [np.array([584., -11., 23., 79., 1001., 0., 19.]),
...      np.array([600., -10., 23., 17.]),
...      np.array([  1.,   9.,  6.,  0.])],
...     m=3)
(1.2370237678153826, 0, 4)

持续的#

stumpy.ostinatoed(client, Ts, m, normalize=True, p=2.0, Ts_subseq_isconstant=None)[源]#

找到多个时间序列的z标准化共识模式,使用一个 dask/ray 集群

这是ostinato算法的原生版本的一个包装器,它找到最佳半径和一个辅助函数,该函数找到最中心的保护性模式。

Parameters:
clientclient

一个 dask/ray 客户端。设置 dask/ray 集群超出了本库的范围。请参考 dask/ray 分布式文档。

Tslist

要寻找最中心的一致动机的时间序列列表。

mint

窗口大小。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

Ts_subseq_isconstantlist, default None

每个时间序列的滚动窗口列表是常量,位于 Ts 中。

Returns:
central_radiusfloat

最中心共识基序的半径。

central_Ts_idxint

包含最中心共识主题的Ts中的时间序列索引。

central_subseq_idxint

时间序列 Ts[central_motif_Ts_idx] 中包含最中心共识模式的子序列索引。

另见

stumpy.ostinato

找到多个时间序列的z标准化共识模式

stumpy.gpu_ostinato

找到多个时间序列的z标准化共识图案,使用一个或多个GPU设备

备注

DOI: 10.1109/ICDM.2019.00140

见表2

本文提出的ostinato算法在 Ts 中找到最佳半径。直观上,半径是子序列与所有其他时间序列中的至少一个最近邻子序列之间的最小距离。在 Ts 中最佳半径是所有半径中的最小半径。一些数据集可能包含多个具有相同最佳半径的子序列。贪婪的Ostinato算法只找到其中一个子序列,这可能不是最中心的主题。最佳半径的子序列中最中心的主题是与所有其他时间序列中的最近邻的平均距离最小的那个。为了找到这个中心主题,有必要通过 stumpy.ostinato._get_central_motif 搜索具有最佳半径的子序列。

示例

>>> import stumpy
>>> import numpy as np
>>> from dask.distributed import Client
>>> if __name__ == "__main__":
>>>     with Client() as dask_client:
>>>         stumpy.ostinatoed(
...             dask_client,
...             [np.array([584., -11., 23., 79., 1001., 0., 19.]),
...              np.array([600., -10., 23., 17.]),
...              np.array([  1.,   9.,  6.,  0.])],
...             m=3)
(1.2370237678153826, 0, 4)

或者,你也可以使用 ray

>>> import ray
>>> if __name__ == "__main__":
>>>     ray.init()
>>>     stumpy.ostinatoed(
...         ray,
...         [np.array([584., -11., 23., 79., 1001., 0., 19.]),
...          np.array([600., -10., 23., 17.]),
...          np.array([  1.,   9.,  6.,  0.])],
...         m=3)
>>>     ray.shutdown()

gpu_ostinato#

stumpy.gpu_ostinato(Ts, m, device_id=0, normalize=True, p=2.0, Ts_subseq_isconstant=None)#

使用一个或多个GPU设备找到多个时间序列的z标准化共识模式

这是ostinato算法的原生版本的一个包装器,它找到最佳半径和一个辅助函数,该函数找到最中心的保护性模式。

Parameters:
Tslist

要寻找最中心的一致动机的时间序列列表。

mint

窗口大小。

device_idint or list, default 0

要使用的 (GPU) 设备编号。默认值为 0。还可以提供有效设备 ID 的列表 (int) 以进行并行 GPU-STUMP 计算。可以通过执行 [device.id for device in numba.cuda.list_devices()] 获得所有有效设备 ID 的列表。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

Ts_subseq_isconstantlist, default None

每个时间序列的滚动窗口列表是常量,位于 Ts 中。

Returns:
central_radiusfloat

最中心共识基序的半径。

central_Ts_idxint

包含最中心共识主题的Ts中的时间序列索引。

central_subseq_idxint

时间序列 Ts[central_motif_Ts_idx] 中包含最中心共识特征的子序列索引。

另见

stumpy.ostinato

找到多个时间序列的z标准化共识模式

stumpy.ostinatoed

找到多个时间序列的z标准化共识模式,使用一个 dask/ray 集群

备注

DOI: 10.1109/ICDM.2019.00140

见表2

论文中提出的持续音算法在 Ts 中找出最佳半径。直观上,半径是子序列到所有其他时间序列中至少包含一个最近邻子序列的最小距离。Ts 中的最佳半径是所有半径中的最小半径。有些数据集可能包含多个具有相同最佳半径的子序列。贪婪的持续音算法只能找到其中一个,这可能不是最中心的音型。具有最佳半径的子序列中最中心的音型是与所有其他时间序列中最近邻的平均距离最小的那个。要找到这个中心音型,需要通过 stumpy.ostinato._get_central_motif 查找具有最佳半径的子序列。

示例

>>> import stumpy
>>> import numpy as np
>>> from numba import cuda
>>> if __name__ == "__main__":
...     all_gpu_devices = [device.id for device in cuda.list_devices()]
...     stumpy.gpu_ostinato(
...         [np.array([584., -11., 23., 79., 1001., 0., 19.]),
...          np.array([600., -10., 23., 17.]),
...          np.array([  1.,   9.,  6.,  0.])],
...         m=3,
...         device_id=all_gpu_devices)
(1.2370237678153826, 0, 4)

mpdist#

stumpy.mpdist(T_A, T_B, m, percentage=0.05, k=None, normalize=True, p=2.0, T_A_subseq_isconstant=None, T_B_subseq_isconstant=None)[源]#

计算任意两个时间序列之间的z标准化矩阵特征距离 (MPdist) 测量

MPdist 距离测量认为,如果两个时间序列共享许多子序列,则它们是相似的,无论匹配子序列的顺序如何。 MPdist 连接 AB-join 和 BA-join 的输出,并返回 k -th 最小值作为报告的距离。 注意,MPdist 是一种测量,而不是度量。因此,它不遵循三角不等式,但该方法具有高度的可扩展性。

Parameters:
T_Anumpy.ndarray

要计算矩阵概况的第一次时间序列或序列。

T_Bnumpy.ndarray

第二个时间序列或序列,用于计算矩阵简介。

mint

窗口大小。

percentagefloat, default 0.05

将用于报告 mpdist 的距离百分比。该值介于 0.01.0 之间。

kint

指定在连接的矩阵剖面中返回的 k-th 值。当 k 不是 None 时,percentage 参数将被忽略。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_A_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,用于指示在 T_A 中的子序列是否是常量 (True)。或者,一个自定义的用户定义函数,该函数返回一个 布尔数组,用于指示在 T_A 中的子序列是否是常量 (True)。该函数必须仅接受两个参数, a,一个一维数组, 以及 w,窗口大小,而其他参数可以通过使用 functools.partial 对用户定义函数进行柯里化来指定。任何 至少有一个 np.nan/np.inf 的子序列都将自动在此布尔数组中对应的值设为 False

T_B_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_B 中的子序列是否为常数 (True)。或者,一个自定义的用户定义函数,返回一个布尔数组,指示在 T_B 中的子序列是否为常数 (True)。该函数必须只接受两个参数,a,一个一维数组,以及 w,窗口大小,同时可以通过对用户定义函数进行柯里化来指定额外的参数,使用 functools.partial。任何至少有一个 np.nan/np.inf 的子序列将在该布尔数组中自动将其对应值设置为 False

Returns:
MPdistfloat

矩阵轮廓距离。

另见

mpdisted

计算任何两个时间序列之间的z标准化矩阵剖面距离(MPdist)度量,与一个 dask/ray 集群

gpu_mpdist

计算任何两个时间序列之间的z归一化矩阵轮廓距离(MPdist)度量,使用一个或多个GPU设备

备注

数字对象标识符: 10.1109/ICDM.2018.00119

请参见第三部分

示例

>>> import stumpy
>>> import numpy as np
>>> stumpy.mpdist(
...     np.array([-11.1, 23.4, 79.5, 1001.0]),
...     np.array([584., -11., 23., 79., 1001., 0., -19.]),
...     m=3)
0.00019935236191097894

mpdisted#

stumpy.mpdisted(client, T_A, T_B, m, percentage=0.05, k=None, normalize=True, p=2.0, T_A_subseq_isconstant=None, T_B_subseq_isconstant=None)[源]#

计算任何两个时间序列之间的z标准化矩阵轮廓距离(MPdist)度量,使用一个dask/ray 集群

MPdist 距离测量认为,如果两个时间序列共享许多子序列,则它们是相似的,无论匹配子序列的顺序如何。 MPdist 连接 AB-join 和 BA-join 的输出,并返回 k -th 最小值作为报告的距离。 注意,MPdist 是一种测量,而不是度量。因此,它不遵循三角不等式,但该方法具有高度的可扩展性。

Parameters:
clientclient

一个 dask/ray 客户端。设置一个 dask/ray 集群超出了本库的范围。请参考 dask/ray 文档。

T_Anumpy.ndarray

要计算矩阵概况的第一次时间序列或序列。

T_Bnumpy.ndarray

第二个时间序列或序列,用于计算矩阵简介。

mint

窗口大小。

percentagefloat, default 0.05

将用于报告 mpdist 的距离百分比。该值在 0.01.0 之间。当 k 不为 None 时,此参数会被忽略。

kint

指定在连接的矩阵剖面中返回的 k-th 值。当 k 不是 None 时,percentage 参数将被忽略。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_A_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_A 中的子序列是否为常数 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_A 中的子序列是否为常数 (True)。该函数只能接受两个参数,a,一个一维数组, 以及 w,窗口大小,而可以通过柯里化用户定义函数来指定额外的参数 functools.partial。任何包含至少一个 np.nan/np.inf 的 子序列将在此布尔数组中自动将其对应值设置为 False

T_B_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_B 中的一个子序列是否是常数 (True)。或者,一个自定义的用户定义函数,返回一个布尔数组,指示在 T_B 中的一个子序列是否是常数 (True)。该函数必须只接受两个参数,a,一个一维数组, 和 w,窗口大小,而额外的参数可以通过使用 functools.partial 来对用户定义的函数进行柯里化。任何 至少有一个 np.nan/np.inf 的子序列,都会自动在这个布尔数组中对应的位置被设置为 False

Returns:
MPdistfloat

矩阵轮廓距离。

另见

mpdist

计算任意两个时间序列之间的z标准化矩阵轮廓距离(MPdist)度量

gpu_mpdist

计算任何两个时间序列之间的z归一化矩阵轮廓距离(MPdist)度量,使用一个或多个GPU设备

备注

DOI: 10.1109/ICDM.2018.00119

见第三节

示例

>>> import stumpy
>>> import numpy as np
>>> from dask.distributed import Client
>>> if __name__ == "__main__":
>>>     with Client() as dask_client:
>>>         stumpy.mpdisted(
...             dask_client,
...             np.array([-11.1, 23.4, 79.5, 1001.0]),
...             np.array([584., -11., 23., 79., 1001., 0., -19.]),
...             m=3)
0.00019935236191097894

或者,你也可以使用 ray

>>> import ray
>>> if __name__ == "__main__":
>>>     ray.init()
>>>     stumpy.mpdisted(
...         ray,
...         np.array([-11.1, 23.4, 79.5, 1001.0]),
...         np.array([584., -11., 23., 79., 1001., 0., -19.]),
...         m=3)
>>>     ray.shutdown()

gpu_mpdist#

stumpy.gpu_mpdist(T_A, T_B, m, percentage=0.05, k=None, device_id=0, normalize=True, p=2.0, T_A_subseq_isconstant=None, T_B_subseq_isconstant=None)#

计算任意两个时间序列之间的z标准化矩阵轮廓距离(MPdist)度量,使用一个或多个GPU设备

MPdist距离度量考虑两个时间序列是相似的,如果它们共享许多子序列,无论匹配子序列的顺序如何。MPdist连接并排序AB连接和BA连接的输出,并返回第k个最小值作为报告的距离。注意,MPdist是一个度量而不是一个度量标准。因此,它不遵循三角不等式,但该方法具有高度可扩展性。

Parameters:
T_Anumpy.ndarray

要计算矩阵概况的第一次时间序列或序列。

T_Bnumpy.ndarray

第二个时间序列或序列,用于计算矩阵简介。

mint

窗口大小。

percentagefloat, default 0.05

用于报告 mpdist 的距离百分比。该值介于 0.01.0 之间。当 k 不为 None 时,此参数将被忽略。

kint, default None

指定要返回的连接矩阵轮廓中的 k-th 值。当 k 不是 None 时,则忽略 percentage 参数。

device_idint or list, default 0

要使用的 (GPU) 设备编号。默认值为 0。还可以提供有效设备 ID 的列表 (int) 以进行并行 GPU-STUMP 计算。可以通过执行 [device.id for device in numba.cuda.list_devices()] 获得所有有效设备 ID 的列表。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_A_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T_A 中的子序列是否是常量 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示在 T_A 中的子序列是否是常量 (True)。该函数必须仅接受两个参数,a,一个一维数组, 和 w,窗口大小,而通过使用 functools.partial 归并用户定义函数 可以指定其他参数。任何包含至少一个 np.nan/np.inf 的子序列 将在这个布尔数组中自动将其对应值设置为 False

T_B_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,用于指示T_B中的子序列是否为常数 (True)。或者,一个自定义的用户定义函数,返回一个 布尔数组,指示T_B中的子序列是否为常数 (True)。该函数只能接受两个参数,a,一个一维数组, 和w,窗口大小,而额外的参数可以通过使用functools.partial来柯里化用户定义的函数。任何 包含至少一个np.nan/np.inf的子序列将在这个布尔数组中自动将其 相应的值设为False

Returns:
MPdistfloat

矩阵轮廓距离。

备注

数字对象标识符: 10.1109/ICDM.2018.00119

见第三节

示例

>>> import stumpy
>>> import numpy as np
>>> from numba import cuda
>>> if __name__ == "__main__":
...     all_gpu_devices = [device.id for device in cuda.list_devices()]
...     stumpy.gpu_mpdist(
...         np.array([-11.1, 23.4, 79.5, 1001.0]),
...         np.array([584., -11., 23., 79., 1001., 0., -19.]),
...         m=3,
...         device_id=all_gpu_devices)
0.00019935236191097894

模式#

stumpy.motifs(T, P, min_neighbors=1, max_distance=None, cutoff=None, max_matches=10, max_motifs=1, atol=1e-08, normalize=True, p=2.0, T_subseq_isconstant=None)[源]#

发现时间序列的主要模式 T

一个子序列,Q,如果在T中存在至少min_neighbor个其他子序列匹配(在排除区域外),并且距离小于或等于max_distance,则成为候选模式。

请注意,在最佳情况下,返回的数组将具有形状 (max_motifs, max_matches),并包含所有有限值。然而,实际上, 许多条件(见下文)需要满足才能使这一点成立。行数(即,motifs)的任何截断可能是由于 候选motifs不足,其匹配数大于或等于 min_neighbors 或者 候选motif的矩阵剖面值大于 cutoff。 同样,列数(即,matches)的任何截断可能是由于 未找到足够的匹配,其距离(与对应的候选 motif)小于或等于 max_distance。只有满足所有这些约束的 motifs和matches将被返回。

如果您必须返回形状为 (max_motifs, max_matches),那么您可以考虑指定更小的 min_neighbors、更大的 max_distance 和/或更大的 cutoff。例如,虽然这并不建议,但将 min_neighbors=1max_distance = np.infcutoff = np.inf 将确保输出数组的形状为 (max_motifs, max_matches)。然而,由于缺乏约束,每个图案的质量和每个匹配的质量可能会有很大差异。设置适当的条件将有助于确保结果适当约束,可能更容易解释。

Parameters:
Tnumpy.ndarray

时间序列或序列。

Pnumpy.ndarray

矩阵剖面的(1维)T。在矩阵剖面是通过k > 1(即,top-k 最近邻)计算的情况下,您必须总结每个子序列的 top-k 最近邻距离为一个单一值(例如,np.meannp.min 等),然后使用该派生值作为您的 P

min_neighborsint, default 1

子序列被认为是一个模式所需的相似匹配的最小数量。默认为 1,这意味着子序列必须至少有一个相似匹配才能被认为是一个模式。

max_distancefloat or function, default None

对于候选序列 Q 和一个非平凡的子序列 Smax_distance 是允许在 QS 之间的最大距离,以便 S 被视为与 Q 的匹配。如果 max_distance 是一个函数,则它必须是一个接受单个参数 D 的函数,在其函数签名中,它是 QT 之间的距离轮廓。如果 None,这默认为 np.nanmax([np.nanmean(D) - 2.0 * np.nanstd(D), np.nanmin(D)])

cutofffloat, default None

候选模式允许拥有的最大矩阵轮廓值(距离)。如果 None,默认值为 np.nanmax([np.nanmean(P) - 2.0 * np.nanstd(P), np.nanmin(P)])

max_matchesint, default 10

返回的与模式代表相似匹配的最大数量。 结果匹配按距离排序,因此值为 10 意味着返回最相似的 10 个子序列的索引。 如果 None,则将在模式代表的 max_distance 之内返回所有匹配。 请注意,第一个匹配始终是每个模式的自匹配/平凡匹配。

max_motifsint, default 1

返回的最大模式数量。

atolfloat, default 1e-8

绝对容差参数。这个值将在比较子序列之间的距离时添加到 max_distance

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,用于指示T中的子序列是否为恒定 (True)。或者,一个自定义的用户定义函数,该函数返回一个 布尔数组,用于指示T中的子序列是否为恒定 (True)。该函数必须只接受两个参数,a,一个一维数组, 和w,窗口大小,而附加参数可以通过对用户自定义函数进行柯里化 使用functools.partial来指定。任何 包含至少一个np.nan/np.inf的子序列将自动 在此布尔数组中将其对应值设置为False

Returns:
motif_distancesnumpy.ndarray

每个模式的每组子序列匹配对应的距离。 请注意,第一列始终对应于每个模式的自匹配/平凡匹配的距离。

motif_indicesnumpy.ndarray

对应于每个模式的一组子序列匹配的索引。注意,第一列始终对应于每个模式的自匹配/平凡匹配的索引。

另见

stumpy.match

在时间序列 T 中查找查询 Q 的所有匹配项

stumpy.mmotifs

发现多维时间序列 T 的顶级模式

stumpy.stump

计算z标准化矩阵剖面

stumpy.stumped

使用dask/ray集群计算z标准化矩阵轮廓

stumpy.gpu_stump

计算使用一个或多个GPU设备的z标准化矩阵轮廓

stumpy.scrump

计算近似z标准化矩阵剖面

示例

>>> import stumpy
>>> import numpy as np
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3)
>>> stumpy.motifs(
...     np.array([584., -11., 23., 79., 1001., 0., -19.]),
...     mp[:, 0],
...     max_distance=2.0)
(array([[0.        , 0.11633857]]), array([[0, 4]]))
>>> # Alternative example using named attributes
>>>
>>> mp = stumpy.stump(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3)
>>> stumpy.motifs(
...     np.array([584., -11., 23., 79., 1001., 0., -19.]),
...     mp.P_,
...     max_distance=2.0)
(array([[0.        , 0.11633857]]), array([[0, 4]]))

匹配#

stumpy.match(Q, T, M_T=None, Σ_T=None, max_distance=None, max_matches=None, atol=1e-08, query_idx=None, normalize=True, p=2.0, T_subseq_isfinite=None, T_subseq_isconstant=None, Q_subseq_isconstant=None)[源]#

在时间序列 T 中查找查询 Q 的所有匹配项

Q 的距离小于或等于 max_distance 的子序列的索引,按距离排序(从低到高)。在每个出现的周围,在搜索下一个之前施加一个排除区域。

Parameters:
Qnumpy.ndarray

查询序列。 Q 不必是 T 的子序列。

Tnumpy.ndarray

感兴趣的时间序列。

M_Tnumpy.ndarray, default None

时间序列的滑动均值, T.

Σ_Tnumpy.ndarray, default None

时间序列的滑动标准差, T.

max_distancefloat or function, default None

最大距离在 Q 和子序列 S 之间,以便 S 被视为匹配。如果 max_distance 是一个函数,则它必须是一个接受单个参数 D 的函数,其函数签名中的参数是 QT 之间的距离特征(一个大小为 n - m + 1 的一维 numpy 数组)。如果 None,则默认为 np.nanmax([np.nanmean(D) - 2 * np.nanstd(D), np.nanmin(D)])(即至少将返回最近的匹配)。

max_matchesint, default None

返回的相似出现的最大数量。结果出现按距离排序,因此值为 10 意味着返回最相似的 10 个子序列的索引。如果 None,则返回所有出现。

atolfloat, default 1e-8

绝对容差参数。这个值将在比较子序列之间的距离时添加到 max_distance

query_idxint, default None

这是时间序列中的索引位置, T,查询子序列 Q 所在的位置。只有在矩阵轮廓为自连接时,才能使用 query_idx,对于通过 AB 连接计算的矩阵轮廓,应该将其设置为 None。如果 query_idx 设置为特定的整数值,则这将有助于确保自匹配将首先返回。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isfinitenumpy.ndarray

一个布尔数组,指示T中的一个子序列是否包含一个np.nan/np.inf值(False)。当normalize=True时,此参数被忽略。

T_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,指示在 T 中是否存在一个长度等于 len(Q) 的子序列是常量 (True)。或者,一个自定义的用户定义函数,该函数返回一个布尔数组,指示在 T 中的子序列是否是常量 (True)。该函数只能接受两个参数,a,一个一维数组,以及 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定额外的参数。任何包含至少一个 np.nan/np.inf 的子序列将在这个布尔数组中自动将其对应值设置为 False

Q_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组(大小为 1),指示 Q 是否为常数 (True)。或者,一个自定义的用户定义函数,返回一个布尔数组,指示 Q 中的一个子序列是否为常数 (True)。该函数必须仅接受两个参数,a,一个一维数组,以及 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定其他参数。 任何至少包含一个 np.nan/np.inf 的子序列将自动使其对应的值在此布尔数组中设置为 False

Returns:
outnumpy.ndarray

第一列由子序列的距离组成,这些子序列与 Q 的距离小于或等于 max_distance,按距离排序(从低到高)。第二列包含 T 中对应的索引。

另见

stumpy.motifs

发现时间序列的主要模式 T

stumpy.mmotifs

发现多维时间序列 T 的顶级模式

stumpy.stump

计算z标准化矩阵剖面

stumpy.stumped

使用dask/ray集群计算z标准化矩阵轮廓

stumpy.gpu_stump

计算使用一个或多个GPU设备的z标准化矩阵轮廓

stumpy.scrump

计算近似z标准化矩阵剖面

示例

>>> import stumpy
>>> import numpy as np
>>> stumpy.match(
...     np.array([-11.1, 23.4, 79.5, 1001.0]),
...     np.array([584., -11., 23., 79., 1001., 0., -19.])
...     )
array([[0.0011129739290248121, 1]], dtype=object)

mmotifs#

stumpy.mmotifs(T, P, I, min_neighbors=1, max_distance=None, cutoffs=None, max_matches=10, max_motifs=1, atol=1e-08, k=None, include=None, normalize=True, p=2.0, T_subseq_isconstant=None)[源]#

发现多维时间序列 T 的最佳主题。

Parameters:
Tnumpy.ndarray

多维时间序列或序列。

Pnumpy.ndarray

T的多维矩阵剖面。

Inumpy.ndarray

多维矩阵轮廓索引。

min_neighborsint, default 1

一个子序列被认为是一个基序所需的最小相似匹配数量。默认值为 1,这意味着子序列必须至少具有一个相似匹配才能被视为基序。

max_distancefloat, default None

查询子序列(一个候选基序)与T中所有子序列之间允许的最大距离,以便被视为匹配。如果None,默认值为np.nanmax([np.nanmean(D) - 2 * np.nanstd(D), np.nanmin(D)])(即至少会返回最接近的匹配)。

cutoffsnumpy.ndarray or float, default None

多维矩阵轮廓中每个维度允许的最大矩阵轮廓值(距离)。如果 cutoffs 是一个标量值,那么这个值将应用于每个维度。

max_matchesint, default 10

每个模式返回的相似匹配(最近邻居)的最大数量。第一个匹配始终是每个模式的自我/简单匹配。

max_motifsint, default 1

返回的最大模式数量。

atolfloat, default 1e-8

绝对容差参数。这个值将在比较子序列之间的距离时添加到 max_distance

kint, default None

发现所有图案所需的维度数量 (k + 1)。此值可用于进行引导搜索,或者与 include 一起用于约束搜索。如果 k is None,则将自动使用 MDL (无约束搜索)为每个图案计算此值。

includenumpy.ndarray, default None

一个与T中的维度对应的(从零开始的)索引列表,必须包含在受限的多维模式搜索中。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isconstantnumpy.ndarray, function, or list, default None

一个参数,用于显示时间序列的子序列在 T 中是否是常数 (True) 或不是。 T_subseq_isconstant 可以是一个 2D 布尔 numpy.ndarray 或可以应用于 T 中每个时间序列的函数。或者,为了最大灵活性,也可以使用一个列表(长度等于时间序列的总数)。在这种情况下, T_subseq_isconstant[i] 对应于第 i 个时间序列 T[i],列表中的每个元素可以是一个 1D 布尔 numpy.ndarray、一个函数或 None

Returns:
motif_distances: numpy.ndarray

每个主题对应一组子序列匹配的距离。

motif_indices: numpy.ndarray

与每个模式相对应的一组子序列匹配的索引。

motif_subspaces: list

一个由数组组成的列表,包含每个主题的k维子空间。

motif_mdls: list

一个包含数组的列表,这些数组包含用于查找每个模式的维度的mdl结果。

另见

stumpy.motifs

找到时间序列的主要模式 T

stumpy.match

在时间序列 T 中查找查询 Q 的所有匹配项

stumpy.mstump

计算多维z标准化矩阵轮廓

stumpy.mstumped

计算多维z标准化矩阵轮廓,使用一个 dask/ray 集群

stumpy.subspace

计算给定子序列索引及其最近邻索引的k维矩阵轮廓子空间

stumpy.mdl

计算使用最小描述长度(MDL)将一个数组压缩到另一个数组所需的位数

备注

DOI: 10.1109/ICDM.2017.66

有关 include 和搜索类型的更多信息,请参阅第 IV D 和 IV E 节

示例

>>> import stumpy
>>> import numpy as np
>>> mps, indices = stumpy.mstump(
...     np.array([[584., -11., 23., 79., 1001., 0., -19.],
...               [  1.,   2.,  4.,  8.,   16., 0.,  32.]]),
...     m=3)
>>> stumpy.mmotifs(
...     np.array([[584., -11., 23., 79., 1001., 0., -19.],
...               [  1.,   2.,  4.,  8.,   16., 0.,  32.]]),
...     mps,
...     indices)
(array([[4.47034836e-08, 4.47034836e-08]]),  array([[0, 2]]), [array([1])],
 [array([ 80.      , 111.509775])])

片段#

stumpy.snippets(T, m, k, percentage=1.0, s=None, mpdist_percentage=0.05, mpdist_k=None, normalize=True, p=2.0, mpdist_T_subseq_isconstant=None)[源]#

识别最能代表时间序列的前 k 个片段, T

Parameters:
Tnumpy.ndarray

要查找片段的时间序列或序列。

mint

片段窗口大小。

kint

所需的片段数量。

percentagefloat, default 1.0

对于每个不重叠子序列的长度, S[i],设为 m,这是 S[i](即 percentage * m)的百分比,用于设置 s(子子序列长度)。当 percentage == 1.0 时,则使用 S[i] 的全长来计算 mpdist_vect。当 percentage < 1.0 时,则使用较短的子子序列长度 s = min(math.ceil(percentage * m), m) 来计算 mpdist_vect。当 s 不是 None 时,则忽略 percentage 参数。

sint, default None

每个不重叠子序列的长度,S[i],设置为m,这实质上是子子序列的长度(即S[i]的一个较短部分)。当s == m时,使用S[i]的完整长度来计算mpdist_vect。当s < m时,使用来自每个S[i]长度为s的较短子序列来计算mpdist_vect。当s不是None时,percentage参数将被忽略。

mpdist_percentagefloat, default 0.05

将用于报告 mpdist 的距离百分比。该值介于 0.01.0 之间。

mpdist_kint

指定在连接的矩阵剖面中返回的 k -th 值。当 mpdist_k 不为 None 时,mpdist_percentage 参数将被忽略。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

mpdist_T_subseq_isconstantnumpy.ndarray or function, default None

一个布尔数组,用于指示在 T 中的一个子序列(长度等于 len(s))是否是常量 (True)。或者,一个自定义的用户定义函数,返回一个布尔数组,用于指示 T 中的一个子序列是否是常量 (True)。该函数必须仅接受两个参数,a,一个 1-D 数组,以及 w,窗口大小,而其他参数可以通过使用 functools.partial 对用户定义的函数进行柯里化来指定。任何包含至少一个 np.nan/np.inf 的子序列,将自动在此布尔数组中将其对应的值设置为 False

Returns:
snippetsnumpy.ndarray

k 个代码片段。

snippets_indicesnumpy.ndarray

每个前 k 片段的索引位置。

snippets_profilesnumpy.ndarray

每个前 k 片段的 MPdist 轮廓。

snippets_fractionsnumpy.ndarray

每个前 k 片段所代表的数据比例。

snippets_areasnumpy.ndarray

每个顶级 k 片段对应的曲线下的面积。

snippets_regimes: numpy.ndarray

对应于每个主要 k 片段的一组状态的索引切片。第一列是(零基础)片段索引,而第二列和第三列分别对应于(包括)状态开始索引和(不包括)状态停止索引。

备注

DOI: 10.1109/ICBK.2018.00058

请参见表 I

示例

>>> import stumpy
>>> import numpy as np
>>> stumpy.snippets(np.array([584., -11., 23., 79., 1001., 0., -19.]), m=3, k=2)
(array([[ 584.,  -11.,   23.],
        [  79., 1001.,    0.]]),
 array([0, 3]),
 array([[0.        , 3.2452632 , 3.00009263, 2.982409  , 0.11633857],
        [2.982409  , 2.69407392, 3.01719586, 0.        , 2.92154586]]),
array([0.6, 0.4]),
array([9.3441034 , 5.81050512]),
array([[0, 0, 1],
       [0, 2, 3],
       [0, 4, 5],
       [1, 1, 2],
       [1, 3, 4]]))

刺激#

stumpy.stimp(T, min_m=3, max_m=None, step=1, percentage=0.01, pre_scrump=True, normalize=True, p=2.0, T_subseq_isconstant_func=None)[源]#

一个用于计算潘矩阵轮廓的类

这基于SKIMP算法。

Parameters:
Tnumpy.ndarray

用于计算全景矩阵轮廓的时间序列或序列。

min_mint, default 3

可以计算矩阵剖面的起始(或最小)子序列窗口大小。

max_mint, default None

可以计算矩阵分析的停止(或最大)子序列窗口大小。当 max_m = None 时,这个值被设置为最大允许的子序列窗口大小。

stepint, default 1

子序列窗口大小之间的步骤。

percentagefloat, default 0.01

要计算的每个子序列窗口大小的完整矩阵 perfil 的百分比。当 percentage < 1.0 时,将使用 scrump 算法。否则,当请求精确的矩阵 perfil 时,将使用 stump 算法。

pre_scrumpbool, default True

一个标志,用于指示是否在计算 SCRIMP 之前执行 PreSCRIMP 计算。如果设置为 True,这相当于计算 SCRIMP++。当 percentage = 1.0 时,此参数将被忽略。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isconstant_funcfunction, default None

一个自定义的用户定义函数,它返回一个布尔数组,指示在 T 中的子序列是否是常量 (True)。该函数必须只接受两个参数,a,一个一维数组,以及 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定额外的参数。任何具有至少一个 np.nan/np.inf 的子序列,将自动在这个布尔数组中对应的值设置为 False

Attributes:
PAN_numpy.ndarray

变换后的(即,标准化、对比化、二值化和重复的)平面矩阵剖面。

M_numpy.ndarray

子序列窗口大小的完整列表(广度优先搜索(层次)排序).

方法

update():

使用下一个可用的(广度优先搜索(层级)排序的)子序列窗口大小计算下一个矩阵轮廓并更新全盘矩阵轮廓

另见

stumpy.stimped

使用 dask/ray 集群计算潘矩阵轮廓

stumpy.gpu_stimp

使用一个或多个GPU设备计算Pan矩阵剖面

备注

DOI: 10.1109/ICBK.2019.00031

见表2

示例

>>> import stumpy
>>> import numpy as np
>>> pmp = stumpy.stimp(np.array([584., -11., 23., 79., 1001., 0., -19.]))
>>> pmp.update()
>>> pmp.PAN_
array([[0., 1., 1., 1., 1., 1., 1.],
       [0., 1., 1., 1., 1., 1., 1.]])

刺激的#

stumpy.stimped(client, T, min_m=3, max_m=None, step=1, normalize=True, p=2.0, T_subseq_isconstant_func=None)[源]#

一个用于计算Pan矩阵轮廓的类,使用dask/ray集群

这基于SKIMP算法。

Parameters:
clientclient

A dask/ray 客户端。设置一个 dask/ray 集群超出了 本库的范围。请参考 dask/ray 文档。

Tnumpy.ndarray

用于计算全景矩阵轮廓的时间序列或序列。

min_mint, default 3

可以计算矩阵剖面的起始(或最小)子序列窗口大小。

max_mint, default None

可以计算矩阵剖面的停止(或最大)子序列窗口大小。当 max_m = None 时,设置为允许的最大子序列窗口大小

stepint, default 1

子序列窗口大小之间的步骤。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isconstant_funcfunction, default None

一个自定义的用户定义函数,返回一个布尔数组,指示在 T 中的一个子序列是否是常数 (True)。该函数只能接受两个参数,a,一个一维数组,以及 w,窗口大小,同时可以通过使用 functools.partial 对用户定义函数进行柯里化来指定额外的参数。任何包含至少一个 np.nan/np.inf 的子序列将在这个布尔数组中自动将其对应的值设置为 False

Attributes:
PAN_numpy.ndarray

变换后的(即,标准化、对比化、二值化和重复的)平面矩阵剖面。

M_numpy.ndarray

子序列窗口大小的完整列表(广度优先搜索(层次)排序).

方法

update():

使用下一个可用的(广度优先搜索(层次)排序的)子序列窗口大小计算下一个矩阵特征,并更新全局矩阵特征。

另见

stumpy.stimp

计算潘矩阵剖面

stumpy.gpu_stimp

使用一个或多个GPU设备计算Pan矩阵剖面

备注

DOI: 10.1109/ICBK.2019.00031

见表2

示例

>>> import stumpy
>>> import numpy as np
>>> from dask.distributed import Client
>>> if __name__ == "__main__":
...     with Client() as dask_client:
...         pmp = stumpy.stimped(
...             dask_client,
...             np.array([584., -11., 23., 79., 1001., 0., -19.]))
...         pmp.update()
...         pmp.PAN_
array([[0., 1., 1., 1., 1., 1., 1.],
       [0., 1., 1., 1., 1., 1., 1.]])

或者,你也可以使用 ray

>>> import ray
>>> if __name__ == "__main__":
>>>     ray.init()
>>>     pmp = stumpy.stimped(
...         ray,
...         np.array([584., -11., 23., 79., 1001., 0., -19.]))
>>>     ray.shutdown()

gpu_stimp#

stumpy.gpu_stimp(T, min_m=3, max_m=None, step=1, device_id=0, normalize=True, p=2.0, T_subseq_isconstant_func=None)#

一个用于计算潘矩阵配置文件的类,可以使用一个或多个GPU设备

这基于SKIMP算法。

Parameters:
Tnumpy.ndarray

用于计算全景矩阵轮廓的时间序列或序列。

min_mint, default 3

可以计算矩阵剖面的起始(或最小)子序列窗口大小。

max_mint, default None

可以计算矩阵特征的停止(或最大)子序列窗口大小。当 m_stop = None 时,设置为最大允许的子序列窗口大小。

stepint, default 1

子序列窗口大小之间的步骤。

device_idint or list, default 0

要使用的 (GPU) 设备编号。默认值为 0。还可以提供有效设备 ID 的列表 (int) 以进行并行 GPU-STUMP 计算。可以通过执行 [device.id for device in numba.cuda.list_devices()] 获得所有有效设备 ID 的列表。

normalizebool, default True

当设置为 True 时,先对子序列进行z标准化,然后再计算距离。否则,此函数将被重定向到其对应的非标准化等效函数,该函数设置在 @core.non_normalized 函数装饰器中。

pfloat, default 2.0

用于计算闵可夫斯基距离的 p-范数。闵可夫斯基距离通常使用 p12,分别对应于曼哈顿距离和欧几里得距离。当 normalize == True 时,此参数将被忽略。

T_subseq_isconstant_funcfunction, default None

一个自定义的用户定义函数,返回一个布尔数组,该数组指示T中的子序列是否是常数(True)。该函数必须仅接受两个参数,a,一个一维数组,以及w,窗口大小,同时可以通过使用functools.partial对用户定义的函数进行柯里化来指定其他参数。任何包含至少一个np.nan/np.inf的子序列,其对应的值将在此布尔数组中自动设置为False

Attributes:
PAN_numpy.ndarray

变换后的(即,标准化、对比化、二值化和重复的)平面矩阵剖面。

M_numpy.ndarray

子序列窗口大小的完整列表(广度优先搜索(层次)排序).

方法

update():

使用下一个可用的(广度优先搜索(级别)有序)子序列窗口大小计算下一个矩阵轮廓并更新pan矩阵轮廓。

另见

stumpy.stimp

计算潘矩阵剖面

stumpy.stimped

使用 dask/ray 集群计算潘矩阵轮廓

备注

DOI: 10.1109/ICBK.2019.00031

见表2

示例

>>> import stumpy
>>> import numpy as np
>>> from numba import cuda
>>> if __name__ == "__main__":
...     all_gpu_devices = [device.id for device in cuda.list_devices()]
...     pmp = stumpy.gpu_stimp(
...         np.array([584., -11., 23., 79., 1001., 0., -19.]),
...         device_id=all_gpu_devices)
...     pmp.update()
...     pmp.PAN_
array([[0., 1., 1., 1., 1., 1., 1.],
       [0., 1., 1., 1., 1., 1., 1.]])