使用MLPrimitives进行时间序列预测
项目描述
麻省理工学院数据到AI实验室的开源项目。
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 的输出是另一个表格,其中包含时间戳和预测值,与输入目标表格的格式相同。
库中的数据集
为了开发和评估管道,我们包含了以下数据集
纽约市出租车数据
风速数据
- 可在 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 版本进行修改
能源数据
当前可用的管道
管道作为 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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ba50408b58b2ed2ddd0b7445ba4d9400a30d61ca87395f6481755bf715b4d029 |
|
MD5 | 3c9ff027e10d74e364e146fff1df2651 |
|
BLAKE2b-256 | b51a11c653b55731977596451a3ff88f699076f1c9d2997be6fc574aaf95cd7c |
pyteller-0.1.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4d01e900a2f92697bb1d441d87a6f7ff7442342ae31b4955e9b364505fa877ce |
|
MD5 | 986c2c387993b76fce47bc4c9fc5e3dd |
|
BLAKE2b-256 | 232e07a4e5c217e61f65a81eeaad97913ff5d04813b7b9ea2a7c7135e74810f4 |