Skip to content

TPOT2

测试 PyPI 下载量 Conda 下载量

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

贡献者

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

Ribeiro, P. et al. (2024). TPOT2: A New Graph-Based Implementation of the Tree-Based Pipeline Optimization Tool for Automated Machine Learning. In: Winkler, S., Trujillo, L., Ofria, C., Hu, T. (eds) Genetic Programming Theory and Practice XX. Genetic and Evolutionary Computation. Springer, Singapore. 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) - 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) - 以及许多慷慨的开源贡献者

许可证

请参阅存储库许可证以获取TPOT2的许可和使用信息。 通常,我们已经许可TPOT2,以使其尽可能广泛地可用。

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

TPOT 的发布是希望它能够有用, 但没有任何保证;甚至没有适销性或特定用途适用性的暗示保证。更多详情请参阅 GNU 较宽松通用公共许可证。

您应该已经收到了一份GNU较宽松通用公共许可证的副本,随TPOT一起提供。如果没有,请参见http://www.gnu.org/licenses/

文档

文档网页可以在这里找到。

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

安装

TPOT2 需要一个正常运行的 Python 安装。

创建 conda 环境(可选)

我们建议使用conda环境来安装TPOT2,尽管手动安装不使用它也同样有效。

更多关于创建anaconda环境的信息可以在这里找到。

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

使用的包

Python 版本 <3.12 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 用户的注意事项

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

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

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

使用 pip 安装额外功能

如果你想利用TPOT2提供的额外功能以及scikit-learn扩展,你可以使用pip来安装它们。安装带有这些额外功能的TPOT2的命令如下:

pip install tpot2[sklearnex]

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

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

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

开发者/最新分支安装

pip install -e /path/to/tpot2repo

如果您使用 git pull 下载,那么仓库文件夹将被命名为 TPOT2。(注意:此文件夹是包含 setup.py 的文件夹,而不是其中同名的文件夹)。 如果您以 zip 格式下载,文件夹可能被称为 tpot2-main。

用法

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

最佳实践

1

TPOT2 使用 dask 进行并行处理。当 Python 并行化时,每个模块在每个进程中都会被导入。因此,在从脚本运行 TPOT2 时,将所有代码放在 if __name__ == "__main__" 中保护起来非常重要。从笔记本运行 TPOT2 时则不需要这样做。

例如:

#my_analysis.py

import tpot2
if __name__ == "__main__":
    X, y = load_my_data()
    est = tpot2.TPOTClassifier()
    est.fit(X,y)
    #rest of analysis

2

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

不要这样做:

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

改为使用部分

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)
    #definition

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)

提示

TPOT2 不会检查您的数据格式是否正确。它会假设您已经传入了能够处理传入数据类型的操作符。例如,如果您传入一个包含分类特征和缺失数据的 pandas 数据框,那么您还应该在配置中包含能够处理这些数据特征的操作符。或者,如果您传入 preprocessing = True,TPOT2 将会填补缺失值,对分类特征进行独热编码,然后标准化数据。(请注意,目前这是在拆分用于交叉验证之前对整个训练集进行拟合和转换的。稍后将有一个选项可以按折叠应用,并使参数可学习。)

verbose设置为5在调试过程中可能会有所帮助,因为它会打印出失败管道生成的错误。

贡献给TPOT2

我们欢迎您检查现有问题以寻找可以修复的错误或增强功能。如果您对TPOT2的扩展有任何想法,请提交一个新问题,以便我们讨论。

引用TPOT

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

Trang T. Le, Weixuan Fu 和 Jason H. Moore (2020). 使用特征集选择器将基于树的自动化机器学习扩展到生物医学大数据. 生物信息学.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}
}

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},
}

支持 TPOT2

TPOT2 是在 Cedars-Sinai 的 人工智能创新 (A2I) 实验室 开发的,资金来自 NIH 的资助 U01 AG066833 和 R01 LM010098。我们非常感谢 NIH 和 Cedars-Sinai 在这个项目开发过程中的支持。

TPOT的标志由Todd Newmuis设计,他慷慨地为该项目捐赠了他的时间。