mcpField
A
AutoTS

AutoTS

本地服务
github.com/winedarksea数据与分析1.4k10 周前更新

关于 AutoTS

AutoTS 是一个面向 Python 的时间序列预测包,用于大规模快速部署高精度预测。它提供数十种以 sklearn 风格调用的预测模型和 30 多种时间序列变换,并通过遗传算法自动搜索模型、预处理与集成方式。

主要功能

  1. 01sklearn 风格的预测模型与变换器
  2. 02遗传算法自动搜索模型与集成
  3. 03水平与马赛克式集成
  4. 04支持多变量与概率性预测
  5. 05提供 MCP 服务与模板导入导出

适用场景

  1. 01为数万条相似时间序列批量生成预测
  2. 02在股票或销量数据上自动比较预测模型
  3. 03在内存受限环境中分批运行预测任务

MCP 相关

该项目提供一个 MCP 服务(autots-mcp),可供 MCP 客户端调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"winedarksea-autots": {
"command": "uvx",
"args": [
"autots-mcp"
]
}
}
}
启动命令uvx autots-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiautots-mcp1.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

AutoTS

AutoTS Logo

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。
    • 值
  • 对于长格式数据,需要将这些列的列名作为 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。

也请参阅production_example.py

提升速度与处理大型数据的技巧:

  • 使用合适的模型列表,尤其是预定义列表:
    • superfast(简单的朴素模型)和 fast(更复杂但速度仍较快、针对多条序列优化的模型)
    • 在 CPU 核心较多时,使用 fast_parallel(fast 与 parallel 的组合)或 parallel
      • n_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' 可以较好地扩展,因为每个模型只会在其所需的序列上运行。
  • 减少 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),因此有了这个徽标。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。