时间序列的正则表达式模式匹配

数据挖掘 时间序列 正则表达式
2021-09-25 19:21:59

这更像是“您将为此使用什么技术/库?” 问题比什么都重要。

我有分类时间序列数据,需要将这些时间序列中的案例与已知模式匹配。例如,A 国,然后是 B 国在六个月内,然后是多个时期的 A 国,然后是可选时期的 B 国,然后是 C 国。

查询例如 SQL 数据库或 pandas 数据帧以获取与这样的模式匹配的行序列是非常困难的。“理论上”你如何做到这一点是构建一个模式匹配的有限状态机,但我不知道一个相关的库。然后我意识到我多年来一直以正则表达式的形式使用模式匹配有限状态机。

所以,我一直在做的是将我的时间序列转换为字符串,将我的模式定义为正则表达式,并以这种方式匹配它们。它工作得非常好。尽管如此,它还是感觉很hacky。当然应该有一些适当的方法来做到这一点。

在那儿?什么技术/数据结构/库可以让我为时间序列定义有限自动机并根据该定义匹配它们?

1个回答

如果您需要模式中的可选部分,那么正则表达式是专门针对这类问题构建的。您可能可以通过在 Cython 中使用循环来加速正则表达式,但是花在编程上的时间并不值得。

如果您的模式是固定的,那么有更快的方法来进行模式匹配。OpenCV 使用 Descrete Fourier Transformation 来匹配模板。它非常快,可用于 Python 和 C++。它经过优化以处理 2D 图像,也可以处理 32 位浮点数。DFT 的工作原理

OpenCV 中的模板匹配文档