作者:Moez Ali

翻译:陈之炎

校对:阿笛

本文约2500字,建议阅读8分钟

本文概述了PyCaret的创新之处,并提供了使用示例。

标签:机器学习

可以使用pip下载Py Caret2.1,下载网址:

https://www.pycaret.org

我们激动地宣布2020年8月PyCaret2.1 更新版本正式发布!

Py Caret是一个开源的、低代码率的Python机器学习库,它可以使机器学习工作流程自动化,同时,它也是一个端到端的机器学习和模型管理工具,可以缩短机器学习实验周期,将生产力提高10倍。

与其他开源机器学习库相比,Py Caret是低代码量库的一个很好的选择,只利用几个单词,便可以用它来替换数百行代码,从而使得实验快速高效。

如果以前没有听到或使用过PyCaret,请参阅先前发布的指南,以便快速入门。

安装PyCaret

安装Py Caret非常容易,只需要几分钟的时间。建议使用虚拟环境来避免与其他库的潜在冲突。请参阅下面的示例代码,以创建Conda环境并在该Conda环境中安装pycaret:

#创建conda环境

conda create --name yourenvname python=3.6

#激活环境

conda activate yourenvname

#安装pycaret

pip install pycaret

#创建与conda环境链接的notebook内核

python -m ipykernel install --user --name yourenvname --display-name "display-name"

如果你已经安装好了PyCaret,还可以使用pip对它更新:

pip install --upgrade pycaret

PyCaret 2.1特征概述

照片来源:Paweł Czerwiński

GPU上的超参数调优

PyCare t2.0支持某些算法(如:XGBoost、LightGBM和Catboost)的GPU训练。PyCare2.1中添加了新的内容,可以实现在GPU上对这些模型的超参数调优。

#使用GPU 训练xgboost

xgboost = create_model('xgboost', tree_method = 'gpu_hist')

#xgboost 调优

tuned_xgboost = tune_model(xgboost)

由于tune_model函数自动从create_model函数创建的xgboost实例中继承了tree_method,因此在tune_model函数内部不需要其他参数。请参看下图:

包含88个特征的100,000行包含8个类的多类问题。

在GPU上进行XGBoost训练(使用googlecolab)

模型部署

自从PyCaret于2020年4月发布第一个版本以来,只需使用Notebook 中的deploy_model ,就可以在AWS上部署经过训练的模型。在最近的版本中,添加了支持在GCP和Microsoft Azure上部署的功能。

Microsoft Azure

若要在Microsoft Azure上部署模型,必须设置连接字符串的环境变量。可以从Azure中存储帐户的“访问密钥”获取连接字符串。

https:/portal.azure.com — 从账户中获取连接字符串

复制连接字符串后,可以将其设置为环境变量,参见以下示例:

Import os
os.environ['AZURE_STORAGE_CONNECTION_STRING'] = 'your-conn-string'from pycaret.classification import deploy_model
deploy_model(model = model, model_name = 'model-name', platform = 'azure', authentication = {'container' : 'container-name'})

成了,就是这样。只需一行代码,整个机器学习管道都已在Microsoft Azure容器中了,随后可以使用 load_model 函数访问它。

Import os
os.environ['AZURE_STORAGE_CONNECTION_STRING'] = 'your-conn-string'

from pycaret.classification import load_model

loaded_model = load_model(model_name = 'model-name',platform = 'azure', authentication = {'container' : 'container-name'}

from pycaret.classification import predict_model

predictions = predict_model(loaded_model, data = new-dataframe)

谷歌云平台

要在Google云平台(GCP)上部署模型,必须首先使用命令行或GCP控制台创建一个项目。创建项目后,应创建服务帐户并将服务帐户密钥下载为JSON文件,然后使用该文件设置环境变量。

创建新的服务帐户并从GCP控制台下载JSON

要了解关于创建服务帐户的更多信息,请阅读官方文档。创建了服务帐户并从GCP控制台下载了JSON文件之后,就可以部署了。

import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] =
'c:/path-to-json- file.json'from pycaret.classification import deploy_model
deploy_model(model = model, model_name = 'model-name',
platform = 'gcp', authentication = {'project' : 'project-name',
'bucket' : 'bucket-name'})

加载模型之后,可以使用 load_model 函数从GCP bucket中访问模型。

import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] =
'c:/path-to-json- file.json'

from pycaret.classification import load_model

loaded_model = load_model(model_name = 'model-name',platform = 'gcp', authentication ='project-name', 'bucket' :'bucket-name'})

from pycaret.classification import predict_model

predictions = predict_model(loaded_model, data = new-dataframe)

MLFlow部署

除了使用PyCaret的本机部署功能之外,还可以使用所有的MLFlow部署功能。利用setup函数的log_experiment参数登录你的实验。

#初始化设置

exp1 = setup(data, target = 'target-name', log_experiment = True,experiment_name = 'exp-name')

#创建xgboost模型

xgboost = create_model('xgboost')..
..
..
#其余的脚本

#在local host:5000上启动mlflow服务器

!mlflow ui

在浏览器上打开:

https://localhost:5000

https://localhost:5000上的MLFlow UI

点击“Run Name” 左侧的“Start Time”查看细节,你能看到经过训练的模型的所有超参数和评分指标,向下滚动,所有的代码也会显示出来(如下所示)。

MLFLow代码

经过训练的模型和所有元数据文件存储在“/model”目录下。MLFlow遵循一种标准格式来打包机器学习模型,以便在各种接下来的工具中使用,例如,通过REST API 或Apache Spark上的批处理推理进行实时服务。如果需要在本地为这个模型提供服务,可以利用MLFlow命令行来实现。

mlflow models serve -m local-path-to-model

然后,可以利用CURL将请求发送给模型以获得预测。

curl http://127.0.0.1:5000/invocations -H 'Content-Type: application/json' -d '{
"columns": ["age", "sex", "bmi", "children",
"smoker", "region"],
"data": [[19, "female", 27.9, 0, "yes", "southwest"]]
}'

(注:MLFlow的这一功能尚不支持Windows操作系统)。

MLFlow还提供与AWS Sagemaker和Azure机器学习服务的集成,你可以在与SageMaker兼容的环境下,在Docker容器中本地训练模型,也可以在SageMaker上远程训练模型。为了远程部署到SageMaker,你需要设置环境和AWS用户帐户。

使用MLflow CLI的示例工作流

mlflow sagemaker build-and-push-container
mlflow sagemaker run-local -m <path-to-model>
mlflow sagemaker deploy <parameters>

要了解有关MLFlow所有部署功能的更多信息,请单击此连接:

https://www.mlflow.org/docs/latest/models.html#

MLFlow模型注册表

MLflow模型注册表组件是一个集模型存储、API集和UI为一体的组件,用于实现MLflow模型整个生命周期内的协同管理。它提供模型沿袭(MLflow实验并运行生成的模型)、模型版本控制、阶段转换(例如从例程到量产)和注释等服务。

如果需要要运行你自己的MLflow服务器,则必须 使用数据库支持的后端存储才能访问模型注册表。但是,如果正在使用 数据包 或任何托管数据包服务,如 Azure Databricks,则无需担心设置的内容。

https://databricks.com/blog/2020/06/25/announcing-mlflow-model-serving-on-databricks.htm

高分辨率绘图

这一功能并不是开创性的,但对于使用PyCaret进行研究和发表文章的人来说,这确实是一个非常有用的补充。plot_ model带有一个名为“scale”的附加参数,通过它可以控制分辨率并为出版物生成高质量的绘图。

#创建线性回归模型

lr = create_model('lr')

#高分辨率绘图

plot_model(lr, scale = 5) # 默认值为 1

PyCaret的高分辨率绘图

用户定义的损失函数

这是自第一个版本发布以来请求最多的特性之一,它允许使用自定义/用户定义函数调整模型的超参数,从而给数据科学家带来了极大的灵活性。现在可以使用 tune_model函数的custom_scorer 参数来自定义损失函数。

#定义损失函数

def my_function(y_true, y_pred):
...
...

#使用sklearn创建记分器

from sklearn.metrics import make_scorer
my_own_scorer = make_scorer(my_function, needs_proba=True)

#训练catboost模型

catboost = create_model('catboost')

#使用自定义记分器调整catboost

tuned_catboost=tune_model(catboost,custom_scorer=my_own_scorer)

特征选择

特征选择是机器学习的基本步骤,在一大堆特征中,你只想选择相关的特征而放弃其他特征,这样可以去除会引入不必要噪声的无用特征,从而使问题得以简化。

在PyCaret2.1中,利用Python实现了Boruta算法(最初是用R实现的)。Boruta是一个非常聪明的算法,可以追溯到2010年,旨在自动对数据集执行特征选择。在setup 函数中运行feature_selection_method方法

exp1 = setup(data, target = 'target-var', feature_selection = True,
feature_selection_method = 'boruta')

其他改变

  • compare_models函数中的blacklist 和whitelist 参数已变更为exclude 和 include,但是功能并没有改变。

  • 在  compare_models函数中设置训练时间的上限,添加了新参数budget_time。

  • PyCaret 可以与Pandas 的数据类型兼容,它们在内部被转换为object,像处理  object 或  bool 一样。

  • 在数值处理部分,在setup 函数 的numeric_imputation参数中添加了zero 方法。当method设置为 zero 时,将其替换为常数0。

  • 为了方便阅读,predict_model 函数返回Label 列的原始值而不是编码值。

要了解pycaret2.1中所有更新的更多信息,请参阅发行说明。

使用Python中的轻量级工作流自动化库可以实现的功能是没有限制的。如果你发现这个有用,请不要忘记在GitHub中给我们。

(https://github.com/pycaret/pycaret/)

欲了解更多关于PyCaret的信息,请在LinkedIn和Youtube上关注我们。

原文链接:

https://towardsdatascience.com/pycaret-2-1-is-here-whats-new-4aae6a7f636a

编辑:于腾凯

校对:林亦霖

译者简介

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

独家 | PyCaret 2.1横空出世-有什么新的内容?相关推荐

  1. [转载]织梦后台添加新变量-内容模型

    [转载]织梦后台添加新变量-内容模型 收藏 原文地址:织梦后台添加新变量-内容模型作者:吴晓震 织梦网站管理系统以它的使用简便.二次开发能力强而闻名.坐着一直非常喜欢用,虽然IT站长都说他的漏洞非常多 ...

  2. html li 做瀑布流,js实现瀑布流效果(自动生成新的内容)

    当滚动条接近底部会自动生成新的内容(色块) 效果图: 代码如下: Title *{list-style: none;} div{overflow: hidden;} ul{float: left;} ...

  3. phpcmsV9栏目内文章批量移动后,新的内容页模板不生效 -分析篇

    栏目A下面的文章a移动到栏目B下,刷新各种缓存之后,打开栏目B下面文章a之后发现:文章a的内容页UI样式效果竟然还是文章a之前在栏目A时候的模板样式! 为什么不能使用栏目B的show内容页模板样式呢? ...

  4. 新媒体内容运营的7个核心环节

    定期更新新媒体知识,在学习之中,有问题可以留言,大家交流,谢谢! 新媒体内容运营的7个核心环节 新媒体内容运营 工作计划表 小结:选题规划表可以帮助我们梳理内容输出的大致方向,节省团队沟通的成本,提升 ...

  5. Txt、记事本等文本文件怎么批量插入标题?怎么在指定位置插入新的内容?

    概要:在我们日常办公中,经常会碰到需要给一批 Txt.Json 或者记事本等各种文本文件批量插入一段新的内容,或者将指定文本文件批量插入一批文本文件中的需求.「我的ABC软件工具箱」就实现了批量在指定 ...

  6. jquery回弹_jQuery实现移动端下拉展现新的内容回弹动画

    jQuery移动端下拉展现新的内容动画回弹,供大家参考,具体内容如下 jquery的方法,写的比较细,可以改成原生的这里就不做修改了, 话不多说上代码, 也可以改成下拉刷新 顶部回弹 html,bod ...

  7. Kindle Fire:亚马逊新的内容贩卖利器

    一.亚马逊Kindle电纸书阅读器 2007年底,亚马逊公司宣布了一款划时代的产品-Kindle电纸书阅读器.但这款产品真正造成巨大的市场影响,则是在2009年初其第二代产品Kindle 2发布之后. ...

  8. Vista将推新下载内容 DreamScene登场

    Vista将推新下载内容 DreamScene登场[@more@]来自:TECHWEB 微软Windows Vista Ultimate Extras开发小组宣布,将在夏季推出一系列专为Vista U ...

  9. 阿里巴巴新零售内容AI平台创新与实践 | CNCC技术论坛

    中国计算机学会 (CCF) 主办的「2020中国计算机大会」(简称:CNCC)将于10月22-24日在杭州未来科技城学术交流中心举办. 10月23日下午,阿里巴巴淘系技术部将在CNCC2020和大家分 ...

最新文章

  1. cacti中监控squid的方法
  2. 压缩跟踪Compressive Tracking
  3. 列出本机安装的所有硬件设备
  4. sed行文本处理工具
  5. 爬虫python软件准备_工具准备的差不多了,接下来就是python爬虫的封装了
  6. 《需求规格说明书》业务描述活动图
  7. 解析身份证_你需要知道的与身份证相关的7个函数,让你的工作效率快速提升!...
  8. handler 与message的一些理解
  9. 解决 【git checkout -b dev origin/dev】报错的问题
  10. SQL语句基本增删改查操作总结
  11. 鸢尾花(Iris)数据集下载保存到Excel文件
  12. 孩子沉迷网游 呼唤亲子陪伴教育
  13. R语言销售分析计算某商品的连带或连带率指标函数
  14. ps插件 Ultimate Retouch Panel AEX for mac破解版
  15. 第四章 WEB表单(二)
  16. 【MATLAB】一个宝藏博主公开的代码,给它加个速——水晶爱心模块
  17. 舒老师AK的hu测 T2. LX还在迷路(线段树+等差数列)
  18. MYSQL super_read_only 到底有没有必要存在
  19. 在美国OpenSky电商平台上使用MasterCard虚拟信用卡海淘购物攻略教程
  20. 程序人生:扒一扒程序员为什么总在加班?拿生命敲代码?

热门文章

  1. linux计划任务怎么做,做linux计划任务的步骤
  2. iptables使用方法
  3. 一致性哈希算法的理解
  4. Spring Boot Web Error Page处理
  5. 【old】mapX距离工具源码,delphi7+mapx5.0
  6. 观察者模式(Observer)
  7. Velocity Toolbox
  8. 培养积极状态的八个方法
  9. 用C语言解“然后是几点”问题
  10. Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)