作者|Moez Ali
编译|VK
起源|Towards Data Science

你可能会想晓得,GitHub是从什么时候开始涉足主动机器学习业务的。好吧,它其实没有,但你能够像有一样的应用它。在本教程中,咱们将向你展现如何构建个性化的AutoML软件,并将其托管在GitHub上,以便其他人能够收费应用或付费订阅。

咱们将应用pycaret2.0,一个开源的、少代码行数的Python机器学习库来开发一个简略的AutoML解决方案,并应用GitHub Action将其部署为Docker容器。

如果你以前没有据说过PyCaret,能够在这里浏览pycaret2.0的官网申明:https://towardsdatascience.co...,或者查看这里的具体发行阐明:https://github.com/pycaret/py...。

本教程的学习指标

  • 理解什么是AutoML,以及如何应用pycaret2.0构建一个简略的AutoML软件。
  • 理解什么是容器以及如何将AutoML解决方案部署为Docker容器。
  • 什么是GitHub Action以及如何应用它们来托管AutoML软件。

什么是AutoML?

AutoML是一个将耗时、迭代的机器学习工作自动化的过程。它容许数据科学家和分析员在放弃模型品质的同时高效地构建机器学习模型。任何AutoML软件的最终目标都是依据某些性能规范最终确定最佳模型。

传统的机器学习模型开发过程是资源密集型的,须要大量的畛域常识和工夫来生成和比拟几十个模型。通过自动化机器学习,你将放慢开发生产ML模型所需的工夫,并且实现非常容易和高效。

有很多AutoML软件,付费的和开源的。简直所有的算法都应用雷同的变换和基算法汇合。因而,在软件下训练的模型的品质和性能基本相同。

付费的AutoML软件作为一种服务是十分低廉的。如果你的口袋里如果没有很多钱,至多在财务上是不可行的。托管机器学习作为一种服务平台相对来说老本较低,但它们通常很难应用,并且须要特定平台的常识。

在许多其余开放源码的AutoML库中,PyCaret是一个绝对较新的库,并且具备独特的机器学习办法接口。PyCaret的设计和性能简略、人性化、直观。在很短的工夫内,PyCaret被寰球超过10万名数据科学家采纳,咱们是一个一直增长的开发者社区。

PyCaret是如何工作的

PyCaret是一个用于有监督和无监督机器学习的工作流自动化工具。它被组织成六个模块,每个模块都有一组可用于执行某些特定操作的函数。每个函数承受一个输出并返回一个输入。从第二个版本开始提供的模块包含:

  • Classification:https://www.pycaret.org/class...
  • Regression:https://www.pycaret.org/regre...
  • Clustering:https://www.pycaret.org/clust...
  • Anomaly Detection:https://www.pycaret.org/anoma...
  • Natural Language Processing:https://www.pycaret.org/nlp
  • Association Rule Mining:https://www.pycaret.org/assoc...

PyCaret中的所有模块都反对数据预处理(超过25种以上的根本预处理技术,提供大量未经训练的模型和反对自定义模型、主动超参数调优、模型剖析和可解释性、主动模型抉择、试验日志记录和简略的云部署选项)。

要理解更多对于PyCaret的信息,请单击此处浏览咱们的官网发布公告:https://towardsdatascience.co...

如果你想开始应用Python,请单击此处查看要入门的示例Notebook的库:https://github.com/pycaret/py...

在咱们开始之前

在开始构建AutoML软件之前,让咱们先理解以下术语。在这一点上,你所须要的是一些咱们在本教程中应用的工具/术语的根本理论知识。如果你想理解更多详细信息,本教程开端有一些链接供你稍后摸索。

容器

容器(Containers)提供了一个可移植和统一的环境,能够在不同的环境中疾速部署,以最大限度地进步机器学习应用程序的准确性、性能和效率。环境蕴含运行时语言(例如Python)、所有库和应用程序的依赖项。

Docker

Docker是一家提供软件(也称为Docker)的公司,它容许用户构建、运行和治理容器。尽管Docker的容器是最常见的,但也有其余不太驰名的替代品,如LXD和LXC,也提供了容器解决方案。

github

GitHub是一个基于云的服务,用于托管、治理和控制代码。假如你正在一个大型团队中工作,其中多人(有时数百人)在同一个代码库上进行更改。PyCaret自身就是一个开源我的项目的例子,在这个我的项目中,数百名社区开发人员在一直地为源代码做奉献。如果你以前没有应用过GitHub,你能够注册一个收费帐户。

GitHub Action

GitHub操作(Action)可帮忙你在存储代码和合作解决。实现自动化软件开发工作流。你能够编写单个工作,并将它们组合起来以创立自定义工作流。

工作流是自定义的自动化流程,你能够在存储库中设置这些流程,以便在GitHub上构建、测试、打包、公布或部署任何代码我的项目。

目标

训练和抉择基于数据集中的其余变量(即年龄、性别、bmi、儿童、吸烟者和地区)预测患者费用的最佳回归模型。

步骤1-开发app.py

这是AutoML的主文件,也是Dockerfile的入口点(请参见上面的步骤2)。如果你以前应用过PyCaret,那么这个代码你能够自行解释。

import os, astimport pandas as pddataset = os.environ["INPUT_DATASET"]target = os.environ["INPUT_TARGET"]usecase = os.environ["INPUT_USECASE"]dataset_path = "https://raw.githubusercontent.com/" + os.environ["GITHUB_REPOSITORY"] + "/master/" + os.environ["INPUT_DATASET"] + '.csv'data = pd.read_csv(dataset_path)data.head()if usecase == 'regression':    from pycaret.regression import *elif usecase == 'classification':    from pycaret.classification import *exp1 = setup(data, target = target, session_id=123, silent=True, html=False, log_experiment=True, experiment_name='exp_github')best = compare_models()best_model = finalize_model(best)save_model(best_model, 'model')logs_exp_github = get_logs(save=True)

https://github.com/pycaret/py...

前五行是对于从环境中导入库和变量。接下来的三行用于将数据作为pandas数据帧读取。第12行到第15行是依据环境变量导入相干模块,第17行之后是PyCaret初始化环境、比拟根本模型和在设施上保留性能最好的模型的函数。最初一行将试验日志作为csv文件下载。

步骤2-创立Dockerfile

Dockerfile只是一个蕴含几行指令的文件,它们保留在我的项目的文件夹中,名为“Dockerfile”(辨别大小写,没有扩展名)。

另一种思考Docker文件的办法是,它就像是你在本人的厨房里创造的食谱。当你和其他人分享这样的菜谱时,如果他们依照食谱中完全相同的阐明来做,他们将可能以同样的品质重现同一道菜。

相似地,你能够与其他人共享你的docker文件,而后其他人能够基于该docker文件创建镜像并运行容器。

这个我的项目的Docker文件很简略,只蕴含6行。见下文:

FROM python:3.7-slimWORKDIR /appADD . /appRUN apt-get update && apt-get install -y libgomp1RUN pip install --trusted-host pypi.python.org -r requirements.txtENTRYPOINT ["python"]CMD ["/app/app.py"]

https://github.com/pycaret/py...

Dockerfile中的第一行导入python:3.7-slim。接下来的四行代码创立一个app文件夹,更新libgomp1库,并从requirements.txt在本例中只须要pycaret的文件。最初,最初两行定义应用程序的入口点;这意味着当容器启动时,它将执行咱们后面在步骤1中看到的app.py文件。

步骤3-创立action.yml

Docker操作须要元数据文件。元数据文件名必须是action.yml或者action.yaml. 元数据文件中的数据定义操作的输出、输入和主入口点。操作文件应用YAML语法。

name: "PyCaret AutoML Git Action"description: "A simple example of AutoML created using PyCaret 2.0"author: "Moez Ali"inputs:  DATASET:    description: "Dataset for Training"    required: true    default: "juice"  TARGET:    description: "Name of Target variable"    required: true    default: "Purchase"       USECASE:    description: "Use-case Classification or Regression"    required: true    default: "classification"     outputs:  myOutput:    description: "Output from the action"runs:  using: "docker"  image: "Dockerfile"branding:  icon: 'box'  color: 'blue'

https://github.com/pycaret/py...

环境变量dataset、target和usecase别离在第6、9和14行申明。参见第4-6行。

步骤4-在GitHub上公布

此时,我的项目文件夹应如下所示:

点击“Releases”:

起草新版本:

填写详细信息(标签、公布题目和阐明),而后单击“Publish release”:

公布后,单击“release”,而后单击“Marketplace”:

单击“Use latest version”:

保留此信息,这是软件的装置详细信息。在任何公共GitHub存储库上装置此软件时,你须要这样做:

步骤5-在GitHub存储库上装置软件

为了装置和测试咱们刚刚创立的软件,咱们创立了一个新的存储库pycaret-automl-test:https://github.com/pycaret/py...,并上传了一些用于分类和回归的示例数据集。

要装置咱们在上一步中公布的软件,请单击“Actions”:

单击“set up a workflow yourself”并将你的脚本复制到编辑器中,而后单击“Start commit”。

开始提交后,单击“actions”:

在这里,你能够在生成时监督生成的日志,并且一旦工作流实现,你也能够从此地位收集文件。

你能够下载这些文件并将其解压缩到你的设施上。

文件:model

这是最终模型的.pkl文件以及整个转换管道。你能够应用此文件应用predict_model函数在新数据集上生成预测。要理解更多信息,请单击此处:https://www.pycaret.org/predi...

文件:experiment-logs

这是一个.csv文件,其中蕴含了模型所需的所有详细信息。它蕴含了在app.py中所有承受过训练的模型,它们的性能指标,超参数和其余重要的元数据。

文件:system-logs

这是PyCaret生成的系统日志文件。这可用于审核流程。它蕴含重要的元数据信息,对于解决软件中的谬误十分有用。

本教程中应用的存储库:

https://github.com/pycaret/py...

https://github.com/pycaret/py...

在Python中应用这个轻量级的工作流自动化库能够实现的指标没有限度。如果你感觉这个有用,请别忘了给咱们咱们的github我的项目star⭐️。

想理解更多对于PyCaret的信息,请拜访LinkedIn和Youtube。

LinkedIn:https://www.linkedin.com/comp...

Youtube:https://www.youtube.com/chann...

如果你想理解更多对于PyCaret 2.0的信息,请浏览本布告。如果你以前应用过PyCaret,那么你可能会对以后版本的发行阐明感兴趣。

想理解特定模块吗

单击上面的链接查看文档和工作示例。

  • Classification:https://www.pycaret.org/class...
  • Regression:https://www.pycaret.org/regre...
  • Clustering:https://www.pycaret.org/clust...
  • Anomaly Detection:https://www.pycaret.org/anoma...
  • Natural Language Processing:https://www.pycaret.org/nlp
  • Association Rule Mining:https://www.pycaret.org/assoc...

原文链接:https://towardsdatascience.co...

欢送关注磐创AI博客站:
http://panchuang.net/

sklearn机器学习中文官网文档:
http://sklearn123.com/

欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/