如何在Python/Pandas列中以向量化方式检测特征漂移?
我正在处理非常大的pandas数据框,这些数据框中包含时间序列,并且特征变化很明显。这种变化通常是突然的,比如某些特征的值会比之前的几期大1.5到2倍。
我找到了一些检测“概念漂移”的方法。其中一个比较方便的选择是river库。不过,这个方法并不是向量化的。
显然,向量化的方法要快得多。例如,使用pandas自带的功能来计算移动平均值,看看这些值是否发生了变化或跳跃,代码是df.groupby().mean().rolling()
。
那么,有哪些向量化的方法可以处理上述任务呢?
1 个回答
0
一种快速检测连续行之间差异的方法是使用 df[col].diff()
。你可以查看这个链接了解更多信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.diff.html
如果你想在特定的窗口内查看这些差异,可以考虑将这个方法和滚动平均值以及阈值结合起来使用:
df[col].diff().rolling(window=5).mean() > threshold