几行代码搞定ML模型,低代码机器学习Python库正式开源

2023-06-18 0 540

电脑之心

电脑之心报导

电脑之心杂志社

PyCaret 库全力支持在「低标识符」自然环境中体能训练和布署有监督管理和无监督管理的电脑学习数学模型,提升电脑学习试验的工作效率。

几行代码搞定ML模型,低代码机器学习Python库正式开源

想提升电脑学习试验的工作效率,把更多心力放到化解销售业务难题而并非写标识符上?低标识符网络平台也许是个极好的优先选择。

前段时间,电脑之心辨认出了两个开放源码低标识符电脑学习 Python 库 PyCaret,它全力支持在「低标识符」自然环境中体能训练和布署有监督管理和无监督管理的电脑学习数学模型。

GitHub 门牌号:https://github.com/pycaret/pycaret

用户文档:https://www.pycaret.org/guide

Notebook 讲义:https://www.pycaret.org/tutorial

PyCaret 库全力支持统计数据生物学家加速高效率地继续执行起新端试验,与其它开放源码电脑学习库较之,PyCaret 库只需录于标识符方可继续执行繁杂的电脑学习各项任务。该库适宜有实战经验的统计数据生物学家、偏激于低标识符电脑学习软件系统的国民统计数据生物学家,和程式设计大背景偏弱即使没的初学者。

PyCaret 库全力支持多种相同 Notebook 自然环境,主要包括 Jupyter Notebook、Azure notebook 和 Google Colab。从其本质上上看,PyCaret 是两个 Python PCB器,PCB了数个电脑学习库和架构,如 sci-kit-learn、XGBoost、Microsoft LightGBM、spaCy 等。

电脑学习试验中大部份关键步骤均可采用 PyCaret 手动合作开发的 pipeline 展开复现。在 Pycaret 中所继续执行的大部份操作方式均按顺序存储在 Pipeline 中,该 Pipeline 特别针对数学模型布署展开了全然实用性。

无论是充填缺位值、切换类型统计数据、继续执行特点建筑设计,却是调参,Pycaret 都能手动继续执行。所以 pipeline 能留存为十进制HTML,全力支持在相同自然环境中展开迁移。

PyCaret 包含一系列函数,用户通过它们完成电脑学习试验。PyCaret 库的函数可分为以下五个大类,涵盖初始化、数学模型体能训练、集成、分析与布署:

几行代码搞定ML模型,低代码机器学习Python库正式开源

此外,PyCaret 提供 6 个模块,全力支持有监督管理和无监督数学模型的体能训练和布署,分别是分类、回归、聚类、异常检测、自然语言处理和关联规则挖掘。每个模块PCB特定的电脑学习算法和相同模块均能采用的函数。用户能根据试验类型,将模块导入自然环境中。

几行代码搞定ML模型,低代码机器学习Python库正式开源

PyCaret 库提供的六个模块。

接下来,我们就来了解一下 PyCaret 库的安装和采用方法吧。

启动 PyCaret

采用 pip 安装 PyCaret。

采用命令行界面或 notebook 自然环境,运行下面的标识符展开安装:

pip install pycaret

Azure notebook 和 Google Colab 用户,能运行下列标识符展开安装:

!pip install pycaret

安装 PyCaret 时会手动安装大部份依赖项,过程非常简单,如下图所示:

几行代码搞定ML模型,低代码机器学习Python库正式开源

PyCaret 分步讲义

该讲义采用「糖尿病」统计数据集,目标是根据血压、胰岛素水平和年龄等多种相同因素预测患者的预后情况(1 或 0)。统计数据集参见 PyCaret 的 GitHub 门牌号。

直接从 PyCaret 库中导入统计数据集的最简单方法是采用 pycaret.datasets 模块中的 get_data 函数。

from *pycaret.datasets* import *get_data*

diabetes = *get_data*(diabetes)

几行代码搞定ML模型,低代码机器学习Python库正式开源

get_data 的输出。

PyCaret 能直接处理 Pandas 统计数据帧。

自然环境实用性

在 PyCaret 中继续执行任意电脑学习试验的第一步都是,通过导入所需模块并初始化 setup() 来设置自然环境。如下示例中采用的模块是 pycaret.classification。

模块导入后,将通过定义统计数据结构「糖尿病」和目标变量「类变量」来初始化 setup()。

from *pycaret.classification* import ***exp1 = *setup*(diabetes, target = Class variable)

几行代码搞定ML模型,低代码机器学习Python库正式开源

大部份预处理的关键步骤都会应用至 setup() 中,PyCaret 拥有 20 余项功能可运用于 ML 相关的统计数据准备,例如根据 setup 函数中定义的参数来创建 Transformation pipeline,同时也会手动协调 Pipeline 中大部份的相关性及依赖关系。这样面对测试或者未见过的统计数据集,用户无需再手动管理或是调整继续执行的顺序。

PyCaret 的 Pipeline 可轻松地在各自然环境之间相互迁移,比如大规模运行或是轻松布署到生产自然环境中。下图展示了 PyCaret 首次发布时可用的预处理功能:

几行代码搞定ML模型,低代码机器学习Python库正式开源

PyCaret 的预处理功能。

统计数据预处理是电脑学习的必要关键步骤,比如当初始化 setup() 时,缺位值充填、分类变量编码、标签编码(将 yes or no 转化为 1 or 0)和 train-test-split 会手动继续执行。

数学模型比较

这是监督管理电脑学习试验(分类或回归模块)应该展开的第一步。compare_models 函数体能训练数学模型库中的大部份数学模型,并采用 k 折交叉验证(默认 k=10)来比较常见的评估指标。所采用的评估指标如下所示:

分类模块:准确度、AUC、Recall、精度、F1 和 Kappa;

回归模块:MAE、MSE、RMSE、R2、RMSLE 和 MAPE。

*compare_models*()

几行代码搞定ML模型,低代码机器学习Python库正式开源

compare_models() 函数的输出。Output from compare_models( ) function

默认采用 10 折交叉验证来评估指标,能通过改变 fold 参数值来改变评估结果。默认采用精度值(由高到低)来分类 table,同样能通过改变 sort 参数值来改变分类结果。

数学模型创建

在 PyCaret 的任何模块中,创建数学模型就像编写 create_model 一样简单,它只需要两个参数,即作为字符串输入来传递的数学模型名称。此函数返回具有 k 折交叉验证分数和体能训练好的数学模型对象的表格。

adaboost = *create_model*(adaboost)

几行代码搞定ML模型,低代码机器学习Python库正式开源

变量「adaboost」存储两个由*create_model*函数返回的体能训练数学模型对象,该对象是 scikit 学习估计器。能通过在变量后采用标点(.)来访问体能训练对象的原始属性。参见下面的示例:

几行代码搞定ML模型,低代码机器学习Python库正式开源

体能训练好的数学模型对象的属性。

PyCaret 有 60 数个开放源码即用型算法。

数学模型调优

tune_model 函数用于手动调优电脑学习数学模型的超参数。PyCaret 在预定义的搜索空间上采用随机网格搜索。此函数返回具有 k 折交叉验证分数和体能训练好的数学模型对象的表格。

tuned_adaboost = tune_model(ada)

几行代码搞定ML模型,低代码机器学习Python库正式开源

在无监督管理模块中的 tune_model 函数,比如 pycaret.nlp,pycaret.clustering 和 pycaret.anomaly 能和监督管理模块结合采用。举例而言,通过评估监督管理 ML 数学模型中的目标或者损失函数,PyCaret 的 NLP 模块能用来调整准确度或 R2 等指标的数值。

数学模型集成

ensemble_model 函数用于集成体能训练好的数学模型。它只需要两个参数,即体能训练好的数学模型对象。此函数返回具有 k 折交叉验证分数和体能训练好的数学模型对象的表格。

# creating a decision tree model

dt = *create_model*(dt)# ensembling a trained dt model

dt_bagged = *ensemble_model*(dt)

几行代码搞定ML模型,低代码机器学习Python库正式开源

该库默认采用 Bagging 方法用于数学模型集成,用户也可使用 ensemble_model 函数中的 method 参数将其切换为 Boosting。

PyCaret 还提供了 blend_models 和 stack_models 功能,来集成数个体能训练好的模型。

数学模型绘制

体能训练好的电脑学习数学模型的性能评估和诊断能通过 plot_model 函数来完成,具体而言,将体能训练数学模型对象和 plot 类型作为 plot_model 函数中的字符串输入(string input)。

# create a model

adaboost = *create_model*(ada)# AUC plot

*plot_model*(adaboost, plot = auc)# Decision Boundary

*plot_model*(adaboost, plot = boundary)# Precision Recall Curve

*plot_model*(adaboost, plot = pr)# Validation Curve

*plot_model*(adaboost, plot = vc)

几行代码搞定ML模型,低代码机器学习Python库正式开源

此外,用户还能采用 evaluate_model 函数在 notebook 的用户界面上看到可视化图。

*evaluate_model*(adaboost)

几行代码搞定ML模型,低代码机器学习Python库正式开源

pycaret.nlp 模块中的 plot_model 函数可用于可视化文本语料库和语义主题数学模型。

数学模型解释

统计数据中的关系呈非线性是实践中常常出现的情况。这时总会看到基于树的数学模型要比简单的高斯数学模型的表现好得多。但这是以牺牲可解释性为代价的,因为基于树的数学模型无法像线性数学模型那样提供简单的系数。

PyCaret 通过 interpret_model 函数实现了 SHAP(SHapley Additive exPlanations)。

# create a model

xgboost = *create_model*(xgboost)# summary plot

*interpret_model*(xgboost)# correlation plot

*interpret_model*(xgboost, plot = correlation)

几行代码搞定ML模型,低代码机器学习Python库正式开源

测试统计数据集上特定统计数据点的解释能通过『reason』图来评估。如下图所示:在测试统计数据集上检查首个实例。

*interpret_model*(xgboost, plot = reason, observation = 0)

几行代码搞定ML模型,低代码机器学习Python库正式开源

数学模型预测

到目前为止,所看到的结果仅基于体能训练统计数据集上 k 折交叉验证(默认 70%)。所以为了得到数学模型在测试或者 hold-out 统计数据集上的预测结果和性能,用户能采用 predict_model 函数。如下所示:

# create a model

rf = *create_model*(rf)# predict test / hold-out dataset

rf_holdout_pred* = predict_model*(rf)

几行代码搞定ML模型,低代码机器学习Python库正式开源

predict_model 函数还能用来预测未见过的统计数据集。那时,将体能训练时所采用的统计数据集用作新的未见过统计数据集的代理(proxy)。在实践中,predict_model 函数会被迭代地采用,每次采用都会有两个新的未见过的统计数据集。

predictions = *predict_model*(rf, data = diabetes)

几行代码搞定ML模型,低代码机器学习Python库正式开源

此外,对于采用 stack_models 和 create_stacknet 函数创建的数学模型,predict_model 函数能预测它们的序列链。不仅如此,借助于 deploy_model 函数,predict_model 函数还能直接基于托管在 AWS S3 上的数学模型展开预测。

数学模型布署

我们能采用以下方法让体能训练好的数学模型在未见过的统计数据集上生成预测:在体能训练数学模型的同两个 notebook 或 IDE 中采用 predict_model 函数。但是,在未见过的统计数据集上继续执行预测是两个迭代的过程。其中,基于用例的相同,预测能分为实时预测和批量预测。

PyCaret 的 deploy_model 函数允许布署整个 pipeline,主要包括云端体能训练的数学模型。

*deploy_model*(model = rf, model_name = rf_aws, platform = aws,

authentication = {bucket : pycaret-test})

数学模型/试验留存

体能训练完成后,包含大部份预处理切换和体能训练数学模型对象在内的整个 pipeline 能以十进制 pickle 文件的格式留存。

# creating model

adaboost = *create_model*(ada)# saving model*

save_model*(adaboost, model_name = ada_for_deployment)

用户也能以十进制文件的格式留存整个试验,主要包括大部份中间输出(intermediary output)。

*save_experiment*(experiment_name = my_first_experiment)

最后,通过 PyCaret 大部份模块中可用的 load_model 和 load_experiment 函数,用户还能下载留存的数学模型和试验。

电脑之心 CVPR 2020 线上分享的第一期,我们邀请到北京大学智能科学系陈汉亭(论文一作)为我们分享主题《加法神经网络:在深度学习中我们是否真的需要乘法?》,欢迎读者报名学习。

几行代码搞定ML模型,低代码机器学习Python库正式开源

原标题:《录于标识符搞掂ML数学模型,低标识符电脑学习Python库正式宣布开放源码》

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务