Project Icon

tpot

基于遗传算法的自动机器学习管道优化工具

TPOT是一个开源的自动机器学习工具,基于Python开发。它采用遗传算法来优化机器学习管道,能够自动探索大量可能的管道组合,为给定数据集找到最佳模型。TPOT构建于scikit-learn之上,可生成易读易修改的Python代码。该工具支持分类和回归任务,适用于多种数据科学场景,能够有效减少数据科学家在模型选择和参数调优上的时间投入。

主分支状态:主分支构建状态 - Mac/Linux 主分支构建状态 - Windows 主分支覆盖率状态

开发分支状态:开发分支构建状态 - Mac/Linux 开发分支构建状态 - Windows 开发分支覆盖率状态

包信息:Python 3.7 许可证:LGPL v3 PyPI 版本


要尝试新! TPOT2(alpha版),请前往此处


TPOT代表树基管道优化工具Tree-based Pipeline Optimization Tool)。将TPOT视为您的数据科学助手。TPOT是一个Python自动机器学习工具,使用遗传编程优化机器学习管道。

TPOT演示

TPOT将自动化机器学习中最繁琐的部分,通过智能探索数千种可能的管道来找到最适合您数据的管道。

机器学习管道示例

机器学习管道示例

一旦TPOT完成搜索(或者您不想再等待),它会为您提供找到的最佳管道的Python代码,以便您可以从那里继续调整管道。

TPOT管道示例

TPOT是基于scikit-learn构建的,所以它生成的所有代码应该看起来很熟悉……如果您熟悉scikit-learn的话。

TPOT仍在积极开发中,我们鼓励您定期查看此存储库以获取更新。

有关TPOT的更多信息,请参阅项目文档

许可证

请查看存储库许可证以了解TPOT的许可和使用信息。

通常,我们为TPOT授予许可,以使其尽可能广泛使用。

安装

我们在文档中维护TPOT安装说明。TPOT需要安装Python。

使用方法

TPOT可以在命令行通过Python代码使用。

点击相应链接可在文档中找到更多关于TPOT使用的信息。

示例

分类

以下是使用手写数字光学识别数据集的最小工作示例。

from tpot import TPOTClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split

digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target,
                                                    train_size=0.75, test_size=0.25, random_state=42)

tpot = TPOTClassifier(generations=5, population_size=50, verbosity=2, random_state=42)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_digits_pipeline.py')

运行此代码应该会发现一个达到约98%测试准确率的管道,相应的Python代码将导出到tpot_digits_pipeline.py文件,看起来类似于以下内容:

import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline, make_union
from sklearn.preprocessing import PolynomialFeatures
from tpot.builtins import StackingEstimator
from tpot.export_utils import set_param_recursive

# 注意:确保在数据文件中将结果列标记为'target'
tpot_data = pd.read_csv('PATH/TO/DATA/FILE', sep='COLUMN_SEPARATOR', dtype=np.float64)
features = tpot_data.drop('target', axis=1)
training_features, testing_features, training_target, testing_target = \
            train_test_split(features, tpot_data['target'], random_state=42)

# 训练集上的平均CV得分为:0.9799428471757372
exported_pipeline = make_pipeline(
    PolynomialFeatures(degree=2, include_bias=False, interaction_only=False),
    StackingEstimator(estimator=LogisticRegression(C=0.1, dual=False, penalty="l1")),
    RandomForestClassifier(bootstrap=True, criterion="entropy", max_features=0.35000000000000003, min_samples_leaf=20, min_samples_split=19, n_estimators=100)
)
# 为导出管道中的所有步骤固定随机状态
set_param_recursive(exported_pipeline.steps, 'random_state', 42)

exported_pipeline.fit(training_features, training_target)
results = exported_pipeline.predict(testing_features)

回归

同样,TPOT也可以优化回归问题的管道。以下是使用波士顿房价实践数据集的最小工作示例。

from tpot import TPOTRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split

housing = load_boston()
X_train, X_test, y_train, y_test = train_test_split(housing.data, housing.target,
                                                    train_size=0.75, test_size=0.25, random_state=42)

tpot = TPOTRegressor(generations=5, population_size=50, verbosity=2, random_state=42)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_boston_pipeline.py')

这应该会得到一个均方误差(MSE)约为12.77的管道,tpot_boston_pipeline.py中的Python代码应该类似于:

import numpy as np
import pandas as pd
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures
from tpot.export_utils import set_param_recursive

# 注意:确保在数据文件中将结果列标记为'target'
tpot_data = pd.read_csv('PATH/TO/DATA/FILE', sep='COLUMN_SEPARATOR', dtype=np.float64)
features = tpot_data.drop('target', axis=1)
training_features, testing_features, training_target, testing_target = \
            train_test_split(features, tpot_data['target'], random_state=42)

# 训练集上的平均CV得分为:-10.812040755234403
exported_pipeline = make_pipeline(
    PolynomialFeatures(degree=2, include_bias=False, interaction_only=False),
    ExtraTreesRegressor(bootstrap=False, max_features=0.5, min_samples_leaf=2, min_samples_split=3, n_estimators=100)
)
# 为导出管道中的所有步骤固定随机状态
set_param_recursive(exported_pipeline.steps, 'random_state', 42)

exported_pipeline.fit(training_features, training_target)
results = exported_pipeline.predict(testing_features)

查看文档获取更多示例和教程

为TPOT贡献

欢迎您查看现有问题以寻找可处理的错误或改进。如果您有关于TPOT扩展的想法,请提交新问题,以便我们讨论。

在提交任何贡献之前,请查看我们的贡献指南

遇到问题或对TPOT有疑问?

查看现有的开放和已关闭的问题,看看您的问题是否已经得到处理。如果没有,请在此存储库上提交新问题,以便我们审查您的问题。

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

或者,您可以直接使用以下DOI引用该存储库:

DOI

TPOT支持

TPOT由宾夕法尼亚大学计算遗传学实验室开发,并得到了美国国立卫生研究院R01 AI117694资助。我们非常感谢美国国立卫生研究院和宾夕法尼亚大学在项目开发过程中提供的支持。

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

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号