adtk(Anomaly Detection Toolkit)是一个专门针对时间序列数据做异常检测的Python工具包。
它提供了丰富的无监督检测算法,能帮我们快速定位设备指标、业务KPI中的异常点,特别适合运维监控和数据分析场景。
🔧 实战:三分钟上手异常检测
准备数据与安装模块
先通过pip安装adtk。我们构造一组简单的温度数据,模拟正常波动中混入的异常值。
pip install adtk
运行结果:
Successfully installed adtk-0.6.2
构造模拟数据集
创建一个包含正常值和异常值的时间序列,异常点设为50和55。
import pandas as pd
from adtk.data import validate_series
data = [20,21,22,20,50,21,22,55,20]
s = pd.Series(data, index=pd.date_range('00:00', periods=9, freq='H'))
s = validate_series(s)
print(s)
运行结果:
2024-01-01 00:00:00 20
2024-01-01 01:00:00 21
2024-01-01 02:00:00 22
2024-01-01 03:00:00 20
2024-01-01 04:00:00 50
2024-01-01 05:00:00 21
2024-01-01 06:00:00 22
2024-01-01 07:00:00 55
2024-01-01 08:00:00 20
使用阈值检测法
设定正常范围为18到25,超出这个区间的数据点会被标记为异常。
from adtk.detector import ThresholdDetector
detector = ThresholdDetector(low=18, high=25)
anomalies = detector.detect(s)
print(anomalies)
运行结果:
2024-01-01 04:00:00 True
2024-01-01 07:00:00 True
Freq: H, dtype: bool
⚖️ 对比分析与使用建议
相比PyOD(通用异常检测),adtk专为时间序列优化,天然支持时间索引和重采样。
但它的算法种类较少,复杂场景建议配合Prophet使用。优点是上手极快,适合日常巡检和快速验证。
📝 结语
adtk把时间序列异常检测的门槛降到了最低,几行代码就能发现数据中的“异类”。
你在处理时序数据时用过哪些好用的工具?欢迎在评论区分享你的经验!