作者 |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, ast
import pandas as pd
dataset = 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-slim
WORKDIR /app
ADD . /app
RUN apt-get update && apt-get install -y libgomp1
RUN pip install --trusted-host pypi.python.org -r requirements.txt
ENTRYPOINT ["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/