功能时间
生产就绪的时间序列模型
functime 是一个用于时间序列预测的机器学习库,仅需使用。
- 功能齐全: 强大且易于使用的API,用于预测和特征工程(tsfresh, Catch22)。
- 快速: 在您的笔记本电脑上在几秒钟内预测 100,000 个时间序列 。
- 高效: 使用 Polars 并行提取数百个时间序列特征
- 经过战斗考验: 提供真实商业影响并赢得竞争的算法
安装
查看这个指南以安装functime。需要Python 3.8及以上版本。
支持的数据架构
面板数据
预测者、预处理器和拆分器使用面板数据集,其中前两列表示实体(例如:商品名称)和时间(例如:日期)。后续列表示观察值(例如:价格)。面板数据框必须按实体、时间排序。
>>> y_panel
shape: (47_583, 3)
commodity_type time price
------------------------------------
Aluminum 1960-01-01 511.47
1960-02-01 511.47
1960-03-01 511.47
1960-04-01 511.47
1960-05-01 511.47
... ... ...
Zinc 2022-11-01 2938.92
2022-12-01 3129.48
2023-01-01 3309.81
2023-02-01 3133.84
2023-03-01 2967.46
时间序列
特征提取器支持面板和时间序列数据框。时间序列数据框代表单个实体的测量:
特点
预测
使用机器学习的点预测和概率预测。 包括支持完整预测生命周期的工具:预处理、特征提取、时间序列交叉验证/拆分器、回测、自动超参数调整和评分。
- 每个预报员都支持 外生特征
- 季节性 效果使用 日历、傅里叶和节日特征
- 回测 使用 扩展窗口和滑动窗口分割器
- 使用
FLAML
进行自动滞后和超参数调整 - 通过分位数回归和保形预测的概率预测
- 预测指标(例如 MASE、SMAPE、CRPS)用于并行评分
- 支持递归和直接预测策略
- 删节模型 用于零膨胀预测
查看完整的演练,了解如何使用functime
进行预测。
特征提取
functime
有超过 100 个时间序列特征提取器(例如 binned_entropy
, longest_streak_above_mean
),适用于任何 Polars
Series。大约 85% 的实现是优化的延迟查询,并且适用于 polars.Series
和 polars.Expr
。
- 超过100+个时间序列特征
- 所有功能都注册在自定义
ts
Polars 命名空间下 - ~85% 优化的延迟查询,适用于
polars.Series
和polars.Expr
- 与
tsfresh
相比,速度提高了 2x-200x -
与
tsfresh
比较,分组操作速度提升 200 倍 - 支持单变量特征提取
- 支持通过
group_by
在多个时间序列中进行特征提取 - 支持跨窗口的特征提取(通过
group_by_dynamic
)
查看完整的指南关于使用functime
进行预测。
预处理
查看functime.preprocessing
的API参考。预处理器以polars.DataFrame
或polars.LazyFrame
作为输入,并始终返回polars.LazyFrame
。在调用LazyFrame上的.collect()
方法之前,不会运行任何计算。这允许Polars在执行之前优化整个查询。
from functime.preprocessing import boxcox, impute
# Use df.pipe to chain operations together
X_new: pl.LazyFrame = (
X.pipe(boxcox(method="mle"))
.pipe(detrend(method="linear"))
)
# Call .collect to execute query
X_new: pl.DataFrame = X_new.collect(streaming=True)
查看快速示例的时间序列预处理与functime
。