Moez Ali作者阿笛校对陈之炎翻译

PyCaret 2.1横空出世-有什么新的内容?

本文概述了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ńskiGPU上的参数调优

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_modeldeploy_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

编辑:于腾凯

校对:林亦霖

THU数据派
THU数据派

THU数据派"基于清华,放眼世界",以扎实的理工功底闯荡“数据江湖”。发布全球大数据资讯,定期组织线下活动,分享前沿产业动态。了解清华大数据,敬请关注姐妹号“数据派THU”。

理论PyCaret 2.1机器学习
1
相关数据
Microsoft机构

微软是美国一家跨国计算机科技公司,以研发、制造、授权和提供广泛的计算机软件服务为主。总部位于美国华盛顿州的雷德蒙德,最为著名和畅销的产品为Microsoft Windows操作系统和Microsoft Office办公室软件,以及Xbox的游戏业务。微软是美国《财富》杂志2015年评选的世界500强企业排行榜中的第95名。

https://www.microsoft.com/en-us/about
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

Apache Spark技术

Apache Spark是一款快速、灵活且对开发者友好的工具,也是大型SQL、批处理、流处理和机器学习的领先平台。它是一个围绕速度、易用性和复杂分析构建的大数据处理框架,提供了一个全面、统一的框架用于管理各种不同性质(文本数据、图表数据等)数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

线性回归技术

在现实世界中,存在着大量这样的情况:两个变量例如X和Y有一些依赖关系。由X可以部分地决定Y的值,但这种决定往往不很确切。常常用来说明这种依赖关系的最简单、直观的例子是体重与身高,用Y表示他的体重。众所周知,一般说来,当X大时,Y也倾向于大,但由X不能严格地决定Y。又如,城市生活用电量Y与气温X有很大的关系。在夏天气温很高或冬天气温很低时,由于室内空调、冰箱等家用电器的使用,可能用电就高,相反,在春秋季节气温不高也不低,用电量就可能少。但我们不能由气温X准确地决定用电量Y。类似的例子还很多,变量之间的这种关系称为“相关关系”,回归模型就是研究相关关系的一个有力工具。

操作系统技术

操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

特征选择技术

在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择、属性选择或变量子集选择。 它是指:为了构建模型而选择相关特征(即属性、指标)子集的过程。

XGBoost技术

XGBoost是一个开源软件库,为C ++,Java,Python,R,和Julia提供了渐变增强框架。 它适用于Linux,Windows,MacOS。从项目描述来看,它旨在提供一个“可扩展,便携式和分布式的梯度提升(GBM,GBRT,GBDT)库”。 除了在一台机器上运行,它还支持分布式处理框架Apache Hadoop,Apache Spark和Apache Flink。 由于它是许多机器学习大赛中获胜团队的首选算法,因此它已经赢得了很多人的关注。

暂无评论
暂无评论~