跳转到主要内容

生成时间序列数据的库

项目描述

时间序列生成器

此存储库包含一个Python包,以通用方式生成合成时间序列数据集(位于/time-series_generator下),以及关于如何生成合成时间序列数据的示例笔记本(位于/examples下)。目标是提供非敏感数据,以便演示解决方案并测试这些解决方案和/或算法的有效性。为了测试您的算法,您希望拥有包含不同类型趋势的时间序列。Python包应有助于创建不同类型的时间序列,同时仍易于维护。

time-series-generator

对于此包,假设时间序列由基数乘以许多因子组成。

ts = base_value * factor1 * factor2 * ... * factorN + Noiser

Diagram

这些因子可以是任何东西,随机噪声、线性趋势、季节性等。这些因子可以影响不同的特征。例如,您时间序列中的某些特征可能具有季节性成分,而其他则没有。

不同的因子以不同的类表示,这些类继承自BaseFactor类。因子类是Generator类的输入,该类创建一个包含特征、基数、所有作用于基数的不同因子以及最终因子和值的dataframe。

核心概念

  • 生成器:一个Python类,用于生成时间序列。生成器包含一个因子和噪声的列表。通过叠加因子和噪声,生成器可以生成定制的时序。
  • 因子:一个Python类,用于生成趋势、季节性、假日因子等。因子通过在生成器的基数上乘以而生效。
  • 噪声:一个Python类,用于生成时间序列噪声数据。噪声通过在“因子化”时间序列之上求和而生效。此公式描述了上述概念

内置因子

  • LinearTrend:基于输入的斜率和截距提供线性趋势
  • 国家年度趋势:根据人均GDP给出基于年度的市场资本化因子。
  • 欧盟经济趋势成分:基于欧盟行业产品公共数据给出每月变化因子。
  • 假日趋势成分:模拟假日销售峰值。它根据不同国家的假日天数进行不同调整。
  • 黑色星期五销售成分:模拟黑色星期五销售活动。
  • 周末趋势成分:周末比工作日销售更多。
  • 特征随机因子成分:为不同店铺和不同产品设置不同的销售额。
  • 产品季节趋势成分:模拟季节敏感型产品销售。在此示例代码中,我们有3种不同类型的产品
    • 冬季夹克:与温度成反比,冬季销售更多
    • 篮球衫:与温度成正比,夏季销售更多
    • 瑜伽垫:对温度不敏感

安装

pip install timeseries-generator

用法

from timeseries_generator import LinearTrend, Generator, WhiteNoise, RandomFeatureFactor
import pandas as pd

# setting up a linear tren
lt = LinearTrend(coef=2.0, offset=1., col_name="my_linear_trend")
g = Generator(factors={lt}, features=None, date_range=pd.date_range(start="01-01-2020", end="01-20-2020"))
g.generate()
g.plot()

# update by adding some white noise to the generator
wn = WhiteNoise(stdev_factor=0.05)
g.update_factor(wn)
g.generate()
g.plot()

示例笔记本

目前我们有2个示例笔记本可用

  1. generate_stationary_process:适用于介绍timeseries_generator的基本知识。展示了如何应用简单的线性趋势,以及如何引入特征和标签,以及随机噪声。
  2. use_external_factors:更深入地介绍并展示了如何使用external_factors子模块。展示了如何创建季节性趋势。

基于Web的原型UI

我们还使用Streamlit构建了一个基于Web的UI,以演示如何使用此包在交互式Web UI中生成合成时间序列数据。

streamlit run examples/streamlit/app.py

Web UI

许可

此软件包根据Apache License, Version 2.0发布

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面