tpot

GitHub
10k 1.6k 简单 1 次阅读 今天LGPL-3.0开发框架其他数据工具Agent
AI 解读 由 AI 自动生成,仅供参考

TPOT(Tree-based Pipeline Optimization Tool)是一款基于 Python 的自动化机器学习工具,旨在充当数据科学家的智能助手。它利用遗传编程算法,自动搜索并优化从数据预处理、特征选择到模型构建与参数调优的完整机器学习流程,最终输出性能最佳的代码管道。

在传统机器学习中,构建高效模型往往需要专家耗费大量时间尝试不同的算法组合与参数配置。TPOT 有效解决了这一痛点,将繁琐的试错过程自动化,帮助用户快速获得高质量的预测模型,显著降低了对深厚领域经验的依赖。

这款工具特别适合数据科学家、机器学习研究人员以及希望提升建模效率的开发者使用。无论是处理复杂的科研数据还是构建商业预测系统,TPOT 都能提供强有力的支持。

近期,TPOT 经历了重大重构,融合了原"TPOT2"的核心特性。其技术亮点包括:采用基于图的新架构以提升效率,支持多目标优化,具备更灵活的搜索空间定义能力,以及引入了遗传特征选择机制。这些升级使得 TPOT 在保持易用性的同时,能够应对更复杂的数据挑战,为用户提供更加模块化且可定制的自动化解决方案。

使用场景

某电商公司的数据科学团队正面临紧急任务,需要在两天内基于用户历史行为数据构建一个高精度的流失预测模型,以配合即将到来的促销活动。

没有 tpot 时

  • 人工试错效率低:数据科学家需手动编写代码逐一测试随机森林、XGBoost、SVM 等数十种算法及其参数组合,耗时数天仍难穷尽所有可能。
  • 特征工程依赖经验:预处理和特征选择高度依赖个人经验,容易遗漏关键的非线性特征交互,导致模型上限受限。
  • 流程固化难优化:一旦确定初步方案,很难快速验证“如果换一种降维方式或分类器”是否会带来显著提升,迭代成本极高。
  • 结果可复现性差:手动调整的记录分散在多个笔记中,难以完整还原最优模型的构建路径,不利于团队协作与部署。

使用 tpot 后

  • 自动搜索最优管线:tpot 利用遗传编程自动探索数千种机器学习流水线组合,几小时内即可找到比人工经验更优的模型架构与参数配置。
  • 智能特征处理:内置的遗传特征选择机制能自动发现并保留最具预测力的特征子集,甚至挖掘出人工难以察觉的特征转换方式。
  • 高效多方案对比:只需修改一行配置,tpot 即可并行评估多目标优化策略,快速输出不同复杂度下的最佳模型供业务抉择。
  • 生成可读代码:任务完成后,tpot 直接导出完整的 Python 脚本,清晰呈现从数据预处理到模型训练的全部步骤,确保无缝交付生产环境。

tpot 将原本需要数天的人工调参工作压缩至小时级,不仅大幅提升了模型性能,更让数据科学家从繁琐的试错中解放出来,专注于业务逻辑与策略分析。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes建议使用 conda 管理环境。M1 Mac 或其他 Arm 架构 CPU 用户需先通过 conda 单独安装 lightgbm (>=3.3.3) 以确保兼容性。若使用并行处理(基于 dask),在脚本中运行时必须将代码包裹在 `if __name__ == "__main__":` 块中,但在 Jupyter Notebook 中不需要。若数据包含缺失值或类别特征,需配置相应算子或设置 `preprocessing=True`。
python>=3.10, <3.14 (安装 sklearnex 扩展建议用 3.9)
numpy
scipy
scikit-learn
pandas
xgboost
lightgbm
optuna
dask
distributed
networkx
tpot hero image

快速开始

TPOT


Tests PyPI Downloads Conda Downloads

TPOT 是“基于树的管道优化工具”的缩写。TPOT 是一个 Python 自动化机器学习工具,它使用遗传编程来优化机器学习管道。您可以将 TPOT 视为您数据科学领域的助手。

贡献者

TPOT 最近经历了一次重大重构。该软件包从头开始重写,以提高效率和性能、支持新功能并修复大量 bug。新增功能包括遗传特征选择、显著扩展且更灵活的搜索空间定义方法、多目标优化、更模块化的框架以便于进化算法的定制等。在开发过程中,这个新版本被称为“TPOT2”,但现在我们已将 TPOT2 合并到主 TPOT 包中。您可以在我们的 GPTP 论文《TPOT2:用于自动化机器学习的基于树的管道优化工具的新图结构实现》中了解更多关于 TPOT 新版本的信息。

Ribeiro, P. 等 (2024)。TPOT2:用于自动化机器学习的基于树的管道优化工具的新图结构实现。载于:Winkler, S., Trujillo, L., Ofria, C., Hu, T.(编)遗传编程理论与实践 XX。遗传与进化计算。新加坡 Springer 出版社。https://doi.org/10.1007/978-981-99-8413-8_1

当前版本的 TPOT 由 Cedars-Sinai 的以下人员开发: - Pedro Henrique Ribeiro(主要开发者 - https://github.com/perib, https://www.linkedin.com/in/pedro-ribeiro/) - Anil Saini (anil.saini@cshs.org) - Jose Hernandez (jgh9094@gmail.com) - Jay Moran (jay.moran@cshs.org) - Nicholas Matsumoto (nicholas.matsumoto@cshs.org) - Hyunjun Choi (hyunjun.choi@cshs.org) - Gabriel Ketron (gabriel.ketron@cshs.org) - Miguel E. Hernandez (miguel.e.hernandez@cshs.org) - Jason Moore (moorejh28@gmail.com)

原始版本的 TPOT 主要由宾夕法尼亚大学的以下人员开发: - Randal S. Olson (rso@randalolson.com) - Weixuan Fu (weixuanf@upenn.edu) - Daniel Angell (dpa34@drexel.edu) - Jason Moore (moorejh28@gmail.com) - 以及众多慷慨的开源贡献者

许可证

请参阅 仓库许可证,了解 TPOT 的许可和使用信息。总体而言,我们对 TPOT 进行了许可,使其尽可能广泛地被使用。

TPOT 是自由软件:您可以根据自由软件基金会发布的 GNU 较宽松通用公共许可证条款重新分发和修改它,无论是该许可证的第 3 版,还是(经您选择)任何后续版本。

TPOT 以“希望它有用”的态度进行分发,但不提供任何担保;甚至不包括对适销性或特定用途适用性的默示担保。有关详细信息,请参阅 GNU 较宽松通用公共许可证。

您应随 TPOT 一起收到一份 GNU 较宽松通用公共许可证副本。如果没有,请访问 http://www.gnu.org/licenses/

文档

文档网页在此。

我们还建议查看教程文件夹中的 Jupyter 笔记本,其中包含示例和指南。

安装

TPOT 需要一个可用的 Python 安装。

创建 conda 环境(可选)

我们建议使用 conda 环境来安装 TPOT,尽管不使用 conda 环境手动安装也同样可行。

有关创建 Anaconda 环境的更多信息请见此处。

conda create --name tpotenv python=3.10
conda activate tpotenv

所需包

python 版本 >=3.10, <3.14 numpy scipy scikit-learn update_checker tqdm stopit pandas joblib xgboost matplotlib traitlets lightgbm optuna jupyter networkx dask distributed dask-ml dask-jobqueue func_timeout configspace

我们配置空间中使用的许多超参数范围均改编自原始 TPOT 包或 AutoSklearn 包。

M1 Mac 或其他基于 Arm 架构 CPU 用户注意事项

在安装 TPOT 之前,您需要使用以下命令直接从 conda 安装 lightgbm 包。

这是为了确保您获得与您的系统兼容的版本。

conda install --yes -c conda-forge 'lightgbm>=3.3.3'

使用 pip 安装附加功能

如果您想利用 TPOT 提供的附加功能以及 scikit-learn 扩展,可以使用 pip 进行安装。安装带有这些附加功能的 TPOT 的命令如下:

pip install tpot[sklearnex]

请注意,虽然这些扩展可以加速 scikit-learn 包,但仍有一些重要考虑事项:

这些扩展可能尚未在基于 Arm 架构的 CPU 上完全开发和测试,例如 M1 Mac。您可能会在这些系统上遇到兼容性问题或性能下降。

我们建议在安装这些附加功能时使用 Python 3.9,因为它提供了更好的兼容性和稳定性。

开发者/最新分支安装

pip install -e /path/to/tpotrepo

如果您通过 git pull 下载,则仓库文件夹将命名为 TPOT。(注意:此文件夹是包含 setup.py 的文件夹,而不是其内部同名文件夹)。 如果您以 zip 文件形式下载,则文件夹可能名为 tpot-main。

使用

更多说明和示例请参阅教程文件夹。

最佳实践

1

TPOT 使用 Dask 进行并行处理。当 Python 被并行化时,每个模块都会在各个进程中被导入。因此,在从脚本运行 TPOT 时,务必将所有代码保护在 if __name__ == "__main__": 块内。而在笔记本中运行 TPOT 时,则不需要这样做。

例如:

#my_analysis.py

import tpot
if __name__ == "__main__":
    X, y = load_my_data()
    est = tpot.TPOTClassifier()
    est.fit(X,y)
    #其余分析代码

2

在设计自定义目标函数时,应避免使用全局变量。

不要这样做:

global_X = [[1,2],[4,5]]
global_y = [0,1]
def foo(est):
    return my_scorer(est, X=global_X, y=global_y)

而应使用 functools.partial

from functools import partial

def foo_scorer(est, X, y):
    return my_scorer(est, X, y)

if __name__=='__main__':
    X = [[1,2],[4,5]]
    y = [0,1]
    final_scorer = partial(foo_scorer, X=X, y=y)

同样地,在使用 lambda 函数时也应如此。

不要这样做:

def new_objective(est, a, b)
    #定义

a = 100
b = 20
bad_function = lambda est :  new_objective(est=est, a=a, b=b)

而应这样做:

def new_objective(est, a, b)
    #定义

a = 100
b = 20
good_function = lambda est, a=a, b=b : new_objective(est=est, a=a, b=b)

小贴士

TPOT 不会检查您的数据是否格式正确。它会假定您已传递能够处理所输入数据类型的算子。例如,如果您传入包含分类特征和缺失值的 Pandas 数据框,那么您的配置中也应包含能够处理这些特征的算子。或者,如果您设置 preprocessing = True,TPOT 将会填充缺失值、对分类特征进行独热编码,并对数据进行标准化。(请注意,目前这一步骤是在拆分用于交叉验证之前,针对整个训练集进行拟合和转换的。未来将提供按折应用的功能,并使参数可学习。)

verbose 设置为 5 在调试过程中会很有帮助,因为它会打印出因管道失败而产生的错误信息。

参与 TPOT 的贡献

我们欢迎您查看现有的问题,寻找可以修复的 bug 或需要改进的功能。如果您对 TPOT 的扩展有想法,请提交一个新的问题,以便我们讨论。

引用 TPOT

如果您在科学出版物中使用了 TPOT,请考虑引用以下论文中的至少一篇:

Hernandez, J. G., Saini, A. K., Ghosh, A., & Moore, J. H. (2025). 基于树的管道优化工具:利用遗传编程和自动化机器学习解决生物医学研究问题. Patterns, 6(7).

BibTeX 条目:

@article{hernandez2025tree,
  title={The tree-based pipeline optimization tool: Tackling biomedical research problems with genetic programming and automated machine learning},
  author={Hernandez, Jose Guadalupe and Saini, Anil Kumar and Ghosh, Attri and Moore, Jason H},
  journal={Patterns},
  volume={6},
  number={7},
  year={2025},
  publisher={Elsevier}
}

Ribeiro, P., Saini, A., Moran, J., Matsumoto, N., Choi, H., Hernandez, M., & Moore, J. H. (2024). TPOT2:一种新的基于图的实现,用于自动化机器学习的树形管道优化工具. In Genetic programming theory and practice XX (pp. 1-17). Singapore: Springer Nature Singapore。

BitTex 条目:

@incollection{ribeiro2024tpot2,
  title={TPOT2: A New Graph-Based Implementation of the Tree-Based Pipeline Optimization Tool for Automated Machine Learning},
  author={Ribeiro, Pedro and Saini, Anil and Moran, Jay and Matsumoto, Nicholas and Choi, Hyunjun and Hernandez, Miguel and Moore, Jason H},
  booktitle={Genetic programming theory and practice XX},
  pages={1--17},
  year={2024},
  publisher={Springer}
}

Randal S. Olson, Ryan J. Urbanowicz, Peter C. Andrews, Nicole A. Lavender, La Creis Kidd, 和 Jason H. Moore (2016). 通过基于树的管道优化自动化的生物医学数据科学. 进化计算的应用, 第 123–137 页。

BibTeX 条目:

@inbook{Olson2016EvoBio,
    author={Olson, Randal S. and Urbanowicz, Ryan J. and Andrews, Peter C. and Lavender, Nicole A. and Kidd, La Creis and Moore, Jason H.},
    editor={Squillero, Giovanni and Burelli, Paolo},
    chapter={Automating Biomedical Data Science Through Tree-Based Pipeline Optimization},
    title={Applications of Evolutionary Computation: 19th European Conference, EvoApplications 2016, Porto, Portugal, March 30 -- April 1, 2016, Proceedings, Part I},
    year={2016},
    publisher={Springer International Publishing},
    pages={123--137},
    isbn={978-3-319-31204-0},
    doi={10.1007/978-3-319-31204-0_9},
    url={http://dx.doi.org/10.1007/978-3-319-31204-0_9}
}

Randal S. Olson, Nathan Bartley, Ryan J. Urbanowicz, 和 Jason H. Moore (2016). 评估用于自动化数据科学的基于树的管道优化工具. GECCO 2016 年会议论文集, 第 485–492 页。

BibTeX 条目:

@inproceedings{OlsonGECCO2016,
    author = {Olson, Randal S. and Bartley, Nathan and Urbanowicz, Ryan J. and Moore, Jason H.},
    title = {Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science},
    booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference 2016},
    series = {GECCO '16},
    year = {2016},
    isbn = {978-1-4503-4206-3},
    location = {Denver, Colorado, USA},
    pages = {485--492},
    numpages = {8},
    url = {http://doi.acm.org/10.1145/2908812.2908918},
    doi = {10.1145/2908812.2908918},
    acmid = {2908918},
    publisher = {ACM},
    address = {New York, NY, USA},
}

相关论文

Trang T. Le, Weixuan Fu 和 Jason H. Moore (2020). 利用特征选择器将基于树的自动化机器学习扩展到生物医学大数据. Bioinformatics.36(1): 250-256。

BibTeX 条目:

@article{le2020scaling,
  title={Scaling tree-based automated machine learning to biomedical big data with a feature set selector},
  author={Le, Trang T and Fu, Weixuan and Moore, Jason H},
  journal={Bioinformatics},
  volume={36},
  number={1},
  pages={250--256},
  year={2020},
  publisher={Oxford University Press}
}

TPOT 的支持

TPOT 是在 Cedars-Sinai 的 人工智能创新实验室 (A2I) 中开发的,并得到了 美国国立卫生研究院 (NIH) 的资助,项目编号为 U01 AG066833 和 R01 LM010098。我们对 NIH 和 Cedars-Sinai 在该项目开发过程中的大力支持表示由衷的感谢。

TPOT 的标志由 Todd Newmuis 设计,他慷慨地为该项目贡献了自己的时间。

版本历史

v1.1.02025/07/03
v1.0.02025/02/25
v0.12.22024/02/23
v0.12.12023/08/15
v0.12.02023/05/25
v0.11.72021/01/06
0.11.6.post32020/12/14
v0.11.6.post22020/11/30
v0.11.6.post12020/11/05
0.11.62020/10/26
v0.11.1-resAdj2020/09/02
v0.11.52020/06/01
v0.11.42020/05/29
v0.11.32020/05/14
v0.11.22020/05/13
v0.11.12020/01/03
v0.11.02019/11/05
v0.10.22019/07/16
v0.10.12019/04/19
v0.10.02019/04/12

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|昨天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

140.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|3天前
开发框架图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|今天
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|昨天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|昨天
图像数据工具视频