Stumpy 1.11.1查找Top-k基元失效:仅返回1个基元而非预期2个
解决Stumpy 1.11.1中
stumpy.motifs()仅返回单个基元的问题 可能原因
Stumpy不同版本的motifs()参数默认值或检测逻辑存在差异,1.11.1版本中默认的匹配数量限制、阈值设置可能过滤掉了第二个预期基元。
具体修复步骤
- 显式指定最大匹配数
默认max_matches参数可能设为1,导致仅返回第一个基元。调用时显式设置该参数为2及以上:
motifs_indices, motifs_dists = stumpy.motifs( T, # 你的时间序列数据 m, # 子序列长度 max_matches=2, # 指定最多检测2个基元 cutoff=None # 关闭自动阈值截断,保留所有符合条件的匹配 )
- 调整阈值参数
cutoff
若默认阈值过高,会过滤掉第二个基元。可基于矩阵剖面计算合理阈值,或直接设为None让函数自动适配:
# 先计算矩阵剖面 mp = stumpy.stump(T, m) # 取剖面中前5个最小值的均值作为阈值 cutoff = np.mean(np.sort(mp[:, 0])[:5]) # 调用motifs并传入自定义阈值 motifs_indices, motifs_dists = stumpy.motifs(T, m, max_matches=2, cutoff=cutoff)
检查数据完整性
确认输入时间序列T与原示例数据完全一致,包括长度、数值细节,数据差异会直接影响基元检测结果。核对版本参数文档
查看1.11.1版本motifs()的参数说明,确认是否有其他参数(如exclude_overlapping)影响结果,若存在重叠基元可将该参数设为False:
help(stumpy.motifs)
结果验证
调整参数后,检查motifs_indices的形状应变为(2, N)(N为每个基元的匹配数量),对应人员进出房间的两个预期基元。
内容的提问来源于stack exchange,提问作者user98568
相关产品推荐
相关产品推荐

