跳转到主要内容

使用MLPrimitives进行时间序列预测

项目描述

“DAI-Lab” 麻省理工学院数据到AI实验室的开源项目。

Github Actions Shield Coverage Status

pyteller

使用MLPrimitives进行时间序列预测

概述

pyteller是一个以最终用户为中心构建的时间序列预测库。

排行榜

在此存储库中,我们维护一个最新的排行榜,其中包含了根据基准文档中解释的基准程序对管道当前得分的评分。

基准在许多数据集上运行,我们记录了每个管道相对于基线管道的胜利次数。基准测试期间获得的结果以及以前的版本可以在基准/结果文件夹中找到,作为CSV文件。结果也可以在以下Google 表格中浏览。

管道 超越持久性的百分比

目录

数据格式

输入

pyteller管道预期的输入是以下格式之一的.csv文件

目标表

选项1:单个实体(学术格式)

用户必须指定以下内容

  • timestamp_col:表示包含对应观察时刻的pandas时间戳对象或python datetime对象的列的字符串
  • target_column:包含在指定时间戳处观察到的目标值的整数或浮点列

这是一个此类表的示例,其中值是对应时间戳的纽约市出租车乘客数量。

时间戳
7/1/14 1:00 6210
7/1/14 1:30 4656
7/1/14 2:00 3820
7/1/14 1:30 4656
7/1/14 2:00 3820
7/1/14 2:30 2873
7/1/14 3:00 2369
7/1/14 3:30 2064
7/1/14 4:00 2221
7/1/14 4:30 2158
7/1/14 5:00 2515

选项2:多个实体实例(平台)

用户必须指定以下内容

  • timestamp_col:表示包含对应观察时刻的pandas时间戳对象或python datetime对象的列的字符串
  • entity_col:表示包含你将单独进行预测的实体的列的字符串
  • target:表示包含你想要预测的观察到的目标值的列的字符串
  • dynamic_variable:表示包含有助于预测的其他输入时间序列的列的字符串
  • static_variable:表示静态变量的列的字符串

这是一个此类表的示例,其中timestamp_col是'timestamp',entity_col是'region',target是'demand',dynamic_variable是'Temp'和'Rain'

时间戳 区域 需求 温度
9/27/20 21:20 代顿 1841.6 65.78 0
9/27/20 21:20 德古 2892.5 75.92 0
9/27/20 21:20 多莫 11276 55.29 0
9/27/20 21:20 DPL 2113.7 75.02 0.06
9/27/20 21:25 代顿 1834.1 65.72 0
9/27/20 21:25 德古 2880.2 75.92 0
9/27/20 21:25 多莫 11211.7 55.54 0
9/27/20 21:25 DPL 2086.6 75.02 0.06

选项3:多个实体实例:长格式

用户必须指定以下内容

  • timestamp_col:表示包含对应观察时刻的pandas时间戳对象或python datetime对象的列的字符串
  • entity_col:表示包含你将单独进行预测的实体的列的字符串
  • variable_col:表示包含观察到的变量名称的列的字符串
  • target:表示在variable_col中你想要预测的观察到的目标值的变量名称
  • dynamic_variable:表示在variable_col中你想要预测的其他输入时间序列的变量名称
  • static_variable:表示在variable_col中的静态变量的变量名称
  • value_col:表示包含variable_col中观察值列的字符串

这是一个此类表的示例,其中timestamp_col是'timestamp',entity_col是'region',variable_col是'var_name',target是'demand',dynamic_variable是'Temp'和'Rain',value_col是'value'

时间戳 区域 变量名称
9/27/20 21:20 代顿 需求 1841.6
9/27/20 21:20 代顿 温度 65.78
9/27/20 21:20 代顿 温度 0
9/27/20 21:20 德古 需求 2892.5
9/27/20 21:20 德古 温度 75.92
9/27/20 21:20 德古 0
9/27/20 21:20 多莫 需求 11276
9/27/20 21:20 多莫 温度 55.29
9/27/20 21:20 多莫 0
9/27/20 21:20 DPL 需求 2113.7
9/27/20 21:20 DPL 温度 75.02
9/27/20 21:20 DPL 0.06
9/27/20 21:25 代顿 需求 1834.1
9/27/20 21:25 代顿 温度 65.72
9/27/20 21:25 代顿 温度 0
9/27/20 21:25 德古 需求 2880.2
9/27/20 21:25 德古 温度 75.92
9/27/20 21:25 德古 0
9/27/20 21:25 多莫 需求 11211.7
9/27/20 21:25 多莫 温度 55.54
9/27/20 21:25 多莫 0
9/27/20 21:25 DPL 需求 2086.6
9/27/20 21:25 DPL 温度 75.02
9/27/20 21:25 DPL 0.06

输出

pyteller Pipelines 的输出是另一个表格,其中包含时间戳和预测值,与输入目标表格的格式相同。

库中的数据集

为了开发和评估管道,我们包含了以下数据集

纽约市出租车数据

  • 可在 纽约市网站 上找到,或在此处由 Numenta 维护的版本 此处
  • 未对 Numenta 版本进行修改

风速数据

  • 可在 kaggle 上找到
  • 下载 FasTrak 5-Minute .txt 文件后,将 2013 年 1 月 1 日至 2018 年 1 月 8 日每天的 .txt 文件合并成一个 .csv 文件

天气数据

  • 由爱荷华州立大学 IEM 维护
  • 下载的数据来自选择的网络 8A0 Albertville 和选择的日期范围是 2016 年 1 月 1 日 0:15 - 2016 年 2 月 16 日 0:55

交通数据

  • 可在 Caltrans PeMS 上找到
  • 未对 Numenta 版本进行修改

能源数据

  • 可在 kaggle 上找到
  • 下载 pjm_hourly_est.csv 后未进行任何修改。我们还使用了在此处找到的 PJM 电力需求数据 此处

当前可用的管道

管道作为 JSON 文件包含,可在 pyteller/pipelines 文件夹内的子目录中找到。

这是目前可用的管道列表,随着时间的推移将会增长

名称 位置 描述
持久性 pyteller/pipelines/sandbox/persistence 使用模型的最新的输入作为下一个输出

安装

需求

pyteller 已在 Python 3.5、3.6、3.7 和 3.8 上开发和测试

此外,尽管不是严格要求的,但强烈建议使用 virtualenv,以避免干扰在运行 pyteller 的系统上安装的其他软件。

以下是使用 python3.6 为 pyteller 创建虚拟环境的最低命令

pip install virtualenv
virtualenv -p $(which python3.6) pyteller-venv

之后,您必须执行此命令来激活虚拟环境

source pyteller-venv/bin/activate

请记住,每次您开始一个新控制台来处理 pyteller 时,都要执行它!

从源安装

激活虚拟环境后,您可以通过在 stable 分支上运行 make install 来克隆存储库并从源安装它

git clone git@github.com:signals-dev/pyteller.git
cd pyteller
git checkout stable
make install

为开发安装

如果您想为项目做出贡献,还需要执行几个步骤来使项目准备就绪以供开发。

请参阅 贡献指南 以获取有关此过程的更多详细信息。

快速入门

在本简短教程中,我们将引导您完成一系列步骤,以帮助您开始使用 pyteller

1. 加载数据

在第一步中,我们将从 演示数据集 中加载 electricity_demand 数据。

导入 pyteller.data.load_signal 函数并调用它

from pyteller.data import load_signal

train,test  = load_signal(
    data=dataset,
    timestamp_col = 'timestamp',
    targets='Total Flow',
    static_variables=None,
    entity_cols='Location Identifier',
    train_size=.75
)

2. 预测

一旦我们有数据,我们将尝试使用 pyteller 管道进行预测。

创建 pyteller.Pyteller 类的实例,并传入帮助描述您的预测问题的参数

from pyteller import Pyteller

pyteller = Pyteller (
hyperparameters = hyperparameters,
    pipeline = 'persistence',
    pred_length = 3,
    goal = None,
    goal_window = None
)

现在,由于持久性管道不需要 fit 方法,我们可以开始预测了

forecast = pyteller.predict(test_data=test)

3. 评估

现在,我们可以评估预测了

scores = pyteller.evaluate(train_data= train,test_data=test,forecast=forecast,metrics=['MAPE','MSE'])

接下来是什么?

有关 pyteller 及其所有可能性和功能的更多详细信息,请参阅 文档网站

历史

0.1.0 - 2020-11-02

pyteller 的第一个 PyPI 发布版

项目详细信息


下载文件

下载适用于您平台的文件。如果您不确定该选择哪一个,请了解有关安装包的更多信息。

源代码发行版

pyteller-0.1.0.tar.gz (65.0 kB 查看哈希值)

上传时间 源代码

构建发行版

pyteller-0.1.0-py2.py3-none-any.whl (17.4 kB 查看哈希值)

上传时间 Python 2 Python 3

支持