关于 AutoTS
AutoTS 是一个面向 Python 的时间序列预测包,用于大规模快速部署高精度预测。它提供数十种以 sklearn 风格调用的预测模型和 30 多种时间序列变换,并通过遗传算法自动搜索模型、预处理与集成方式。
主要功能
- 01sklearn 风格的预测模型与变换器
- 02遗传算法自动搜索模型与集成
- 03水平与马赛克式集成
- 04支持多变量与概率性预测
- 05提供 MCP 服务与模板导入导出
适用场景
- 01为数万条相似时间序列批量生成预测
- 02在股票或销量数据上自动比较预测模型
- 03在内存受限环境中分批运行预测任务
MCP 相关
该项目提供一个 MCP 服务(autots-mcp),可供 MCP 客户端调用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
AutoTS
AutoTS 是一个 Python 时间序列软件包,旨在快速大规模部署高精度预测。欢迎在浏览器中试用官方演示应用。
2023 年,AutoTS 在 M6 预测竞赛中获胜,在为期 12 个月的股市预测中,投资决策表现最佳。
有数十种预测模型可按照 sklearn 风格使用 .fit() 和 .predict()。
这些模型包括朴素模型、统计模型、机器学习模型和深度学习模型。
此外,还有 30 多种专为时间序列设计的变换器,可按照 sklearn 风格使用 .fit()、.transform() 和 .inverse_transform()。
所有这些函数都可直接处理 Pandas Dataframe,无需转换为专有对象。
所有模型都支持预测多变量(多个时间序列)输出,也支持概率预测(上限/下限)。 大多数模型可轻松扩展到数万甚至数十万个输入序列。 许多模型还支持传入用户定义的外生回归变量。
这些模型均专为集成到 AutoML 特征搜索中而设计,该搜索通过遗传算法自动为给定数据集寻找最佳模型、预处理方法和集成方案。
水平式和马赛克式集成是主要的集成类型,既能让每个序列使用尽可能准确的模型,又能保持可扩展性。
可用功能还包括多种指标和交叉验证选项、应用子集和权重的功能、回归变量生成工具、模拟预测模式、事件风险预测、实时数据集、模板导入和导出、绘图,以及一系列数据整形参数。
目录
安装
pip install autots
其中包含基础模型所需的依赖项,但部分模型和方法需要其他软件包。
请注意,其他一些项目也使用了相似的名称,请确认您使用的是正确的 AutoTS 代码、论文和文档。
基本用法
AutoTS 的输入数据应采用长格式或宽格式:
- 宽格式是一个
pandas.DataFrame,具有pandas.DatetimeIndex,且每列代表一个不同的序列。 - 长格式包含三列:
- 日期(最好已采用 pandas 可识别的
datetime格式) - 序列 ID。对于单个时间序列,series_id 可以是
= None。 - 值
- 日期(最好已采用 pandas 可识别的
- 对于长格式数据,需要将这些列的列名作为
date_col、id_col和value_col传递给.fit()。宽格式无需任何参数。
底层函数仅适用于 wide 格式的数据。
# also load: _hourly, _monthly, _weekly, _yearly, or _live_daily
from autots import AutoTS, load_daily
# sample datasets can be used in either of the long or wide import shapes
long = False
df = load_daily(long=long)
model = AutoTS(
forecast_length=21,
frequency="infer",
prediction_interval=0.9,
ensemble=None,
model_list="superfast", # "fast", "default", "fast_parallel"
transformer_list="fast", # "superfast",
drop_most_recent=1,
max_generations=4,
num_validations=2,
validation_method="backwards"
)
model = model.fit(
df,
date_col='datetime' if long else None,
value_col='value' if long else None,
id_col='series_id' if long else None,
)
prediction = model.predict()
# plot a sample
prediction.plot(model.df_wide_numeric,
series=model.df_wide_numeric.columns[0],
start_date="2019-01-01")
# Print the details of the best model
print(model)
# point forecasts dataframe
forecasts_df = prediction.forecast
# upper and lower forecasts
forecasts_up, forecasts_low = prediction.upper_forecast, prediction.lower_forecast
# accuracy of all tried model results
model_results = model.results()
# and aggregated from cross validation
validation_results = model.results("validation")
底层 API,尤其是大量采用 scikit-learn 风格的时间序列变换器,也可以脱离 AutoML 框架独立使用。
如需了解功能的详细指南,请参阅extended_tutorial.md。
提升速度与处理大型数据的技巧:
- 使用合适的模型列表,尤其是预定义列表:
superfast(简单的朴素模型)和fast(更复杂但速度仍较快、针对多条序列优化的模型)- 在 CPU 核心较多时,使用
fast_parallel(fast与parallel的组合)或paralleln_jobs通常设为='auto'就能获得相当不错的效果,但请根据环境进行调整
- 存在大量序列时,
scalable是最适合避免崩溃的列表。另有 transformer_list = 'scalable' - 使用
from autots.models.model_list import model_lists查看预定义列表的字典(其中一些列表仅供内部使用)
- 当存在许多相似序列时,使用
subset参数;对于数万条相似序列,subset=100通常就能很好地泛化。- 如果使用
subset,为序列传入weights会使子集选择倾向于优先级较高的序列。 - 如果受 RAM 限制,可以先导入一个预训练模板作为所有实例的起点,再在不同数据批次上运行多个 AutoTS 实例,以分摊处理任务。
- 如果使用
- 设置
model_interrupt=True,在按下Ctrl+C时仅跳过当前模型。在 1.5 秒内再次按下Ctrl+C可结束整个运行过程;也可以传入类似model_interrupt={"mode": "skip", "double_press_window": 1.2}的参数来缩短或延长此时间窗口。 - 使用
.fit()的result_file方法,它会在每一代后保存进度;长时间训练时,这有助于保存进度。使用import_results恢复结果。 - Transformations 的速度相当快,但将
transformer_max_depth设为较低的值(例如 2)可以提升速度。此外,也可以使用transformer_list== 'fast' 或 'superfast'。 - 查看这个示例,了解如何将 AutoTS 与 pandas UDF 搭配使用。
- 集成模型的预测速度显然较慢,因为它们会运行多个模型;'distance' 模型的速度慢 2 倍,'simple' 模型的速度慢 3 到 5 倍。
- 如果 CPU 核心较多,
ensemble='horizontal-max'搭配model_list='no_shared_fast'可以较好地扩展,因为每个模型只会在其所需的序列上运行。
- 如果 CPU 核心较多,
- 减少
num_validations和models_to_validate会缩短运行时间,但可能导致模型选择效果变差。 - 对于记录数量较多的数据集,如果合适,可以通过升采样(例如,将每日频率的预测改为每月频率)来缩短训练时间。
- 可以通过调整
frequency和aggfunc来实现,但最好在将数据传入 AutoTS 之前完成。
- 可以通过调整
- 如果 NaN 值已填充,运行速度会更快。如果不需要搜索最佳 NaN 填充方法,请在将数据传入类之前,使用合适的方法填充所有 NaN 值。
- 在
metric_weighting中将runtime_weighting设为较高值。这会引导搜索过程偏向速度更快的模型,但可能会牺牲准确性。 - 内存不足是导致进程或内核随机崩溃的最常见原因。如果遇到问题,请尝试测试数据子集并使用其他模型列表。如果发现崩溃与特定的一组模型参数有关(不是 AutoTS 参数,而是底层预测模型的参数),也请报告。此外,底层 linpack/blas 等配置会显著影响崩溃情况,因此不同环境之间出现差异是正常的。
MCP 服务
请参阅 ./autots/mcp 中的 README.md。请注意,若要安装完整依赖项,请使用 pip install autots[mcp],或使用等效命令 pip install autots-mcp。
{
"mcpServers": {
"autots": {
"command": "autots-mcp"
}
}
}
mcp-name: io.github.winedarksea/AutoTS
如何贡献:
- 反馈文档中令人困惑之处
- 使用 AutoTS 并……
- 在 GitHub 上提交 Issues,报告错误并请求新功能
- 发布适用于你的数据的顶级模型模板(以帮助改进初始模板)
- 欢迎为你喜爱的模型推荐不同的搜索网格参数
- 当然,也可以直接在 GitHub 上为代码库做贡献。
AutoTS 流程
flowchart TD
A[Initiate AutoTS Model] --> B[Import Template]
B --> C[Load Data]
C --> D[Split Data Into Initial Train/Test Holdout]
D --> E[Run Initial Template Models]
E --> F[Evaluate Accuracy Metrics on Results]
F --> G[Generate Score from Accuracy Metrics]
G --> H{Max Generations Reached or Timeout?}
H -->|No| I[Evaluate All Previous Templates]
I --> J[Genetic Algorithm Combines Best Results and New Random Parameters into New Template]
J --> K[Run New Template Models and Evaluate]
K --> G
H -->|Yes| L[Select Best Models by Score for Validation Template]
L --> M[Run Validation Template on Additional Holdouts]
M --> N[Evaluate and Score Validation Results]
N --> O{Create Ensembles?}
O -->|Yes| P[Generate Ensembles from Validation Results]
P --> Q[Run Ensembles Through Validation]
Q --> N
O -->|No| R[Export Best Models Template]
R --> S[Select Single Best Model]
S --> T[Generate Future Time Forecast]
T --> U[Visualize Results]
R --> B[Import Best Models Template]
引用
如果您希望在学术著作中引用 AutoTS,可以使用以下论文。
Colin Catlin, 《动态市场中的自适应预测:在 M6 竞赛中评估 AutoTS》, 《国际预测学期刊》, 第 41 卷,第 4 期,2025 年,第 1485-1493 页,ISSN 0169-2070, https://doi.org/10.1016/j.ijforecast.2025.08.004。
也称为 Project CATS(Catlin's Automated Time Series),因此有了这个徽标。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。