文章详情

tsmoothie:以向量化方式进行时序平滑和异常检测的Python库

2020-11-09

点击量:

  tsmoothie
 

  一个用于以向量化方式进行时间序列平滑和离群值检测的python库。
 

  总览
 

  tsmoothie以快速有效的方式计算单个或多个时间序列的平滑度。
 

  可用的平滑技术是:
 

  1)指数平滑

  2)具有各种窗口类型(常量,汉宁,汉明,巴特利特,布莱克曼)的卷积平滑

  3)多项式平滑

  4)各种样条平滑(线性,三次,自然三次)

  5)高斯平滑

  6)Binner平滑

  7)低价

  8)各种季节性分解平滑(卷积,最低,自然三次样条)

  9)带有可自定义组件(水平,趋势,季节性,长期季节性)的卡尔曼平滑
 

  tsmoothie提供了平滑处理结果的间隔计算。这对于识别时间序列中的异常值和异常可能很有用。
 

  可用的间隔类型为:
 

  1)sigma间隔

  2)置信区间

  3)预测间隔

  4)卡尔曼区间
 

  采用这种类型的间隔取决于所使用的平滑方法。
 

  tsmoothie还可以执行滑动平滑方法。可以将时间序列分成相等大小的片段,并分别进行平滑处理。与往常一样,此功能通过WindowWrapper类以矢量化方式实现。
 

  安装

  点安装tsmoothie
 

  该模块仅取决于NumPy,SciPy和simdkalman。支持Python 3.6或更高版本。
 

  用法
 

  下面是tsmoothie如何工作的几个示例。笔记本文件夹中提供了完整的示例。
 

  #导入库
 

  将 numpy 导入为 np
 

  import matplotlib。pyplot 如 PLT
 

  从 tsmoothie。utils_func 进口 sim_randomwalk
 

  从 tsmoothie。进口顺畅 LowessSmoother
 

  #产生3次长度为200
 

  np的随机游走。随机的。种子(123)
 

  数据 = sim_randomwalk(n_series = 3,时间步长= 200,
 

  process_noise = 10,measure_noise = 30)
 

  #操作平滑
 

  平滑 = LowessSmoother(smooth_fraction = 0.1,迭代= 1)
 

  更光滑。顺利(数据)
 

  #生成
 

  低间隔,向上 = 更平滑。get_intervals('prediction_interval')
 

  #绘制间隔为
 

  plt的平滑时间序列。图(figsize =(18,5))
 

  对于 我 在 范围(3):
 

  PLT。副区(1,3,我+ 1)
 

  PLT。积(平滑。smooth_data [我],线宽= 3,颜色= '蓝色')
 

  PLT。绘制(更平滑的数据[ i ],' . k ')
 

  plt。标题(f“时间序列{ i + 1 } ”); PLT。xlabel('时间')
 

  PLT。fill_between(范围(len个(更平滑。数据[我])),低[我],向上[我],阿尔法= 0.3)
 

tsmoothie:以向量化方式进行时序平滑和异常检测的Python库
 

  #导入库
 

  将 numpy 导入为 np
 

  import matplotlib。pyplot 如 PLT
 

  从 tsmoothie。utils_func 进口 sim_seasonal_data
 

  从 tsmoothie。导入更顺畅 DecomposeSmoother
 

  #生成3个长度为300
 

  np的周期性时间序列。随机的。种子(123)
 

  数据 = sim_seasonal_data(n_series = 3,时间步长= 300,
 

  频率= 24,measure_noise = 30)
 

  #
 

  更平滑地 进行平滑操作= DecomposeSmoother(smooth_type = 'lowess',周期= 24,
 

  smooth_fraction = 0.3)
 

  更平滑。顺利(数据)
 

  #生成
 

  低间隔,向上 = 更平滑。get_intervals('sigma_interval')
 

  #绘制间隔为
 

  plt的平滑时间序列。图(figsize =(18,5))
 

  对于 我 在 范围(3):
 

  PLT。副区(1,3,我+ 1)
 

  PLT。积(平滑。smooth_data [我],线宽= 3,颜色= '蓝色')
 

  PLT。绘制(更平滑的数据[ i ],' . k ')
 

  plt。标题(f“时间序列{ i + 1 } ”); PLT。xlabel('时间')
 

  PLT。fill_between(范围(len个(更平滑。数据[我])),低[我],向上[我],阿尔法= 0.3)

tsmoothie:以向量化方式进行时序平滑和异常检测的Python库
长按识别二维码,加关注
↓ ↓ ↓ 继续阅读与本文标签相同的文章
tsmoothie
大数据分析
Python