优质的机器学习文章,第一时间呈现!
机器学习编辑团队
使用低代码环境训练和部署有监督及无监督机器学习模型,PyCaret 库能够显著提高机器学习实验的效率。如果你希望将精力集中在解决业务问题而非编写代码上,低代码平台可能是一个不错的选择。
最近,我们发现了一个开源低代码机器学习 Python 库——PyCaret。它能够在「低代码」环境中训练和部署有监督及无监督的机器学习模型。
PyCaret 让数据科学家能够快速高效地执行端到端的实验。与其他开源机器学习库相比,PyCaret 只需几行代码就能完成复杂的机器学习任务。无论是经验丰富的数据科学家,还是新手,甚至是编程基础较弱的人,都能从中受益。
PyCaret 支持多种 Notebook 环境,包括 Jupyter Notebook、Azure notebook 和 Google Colab。从本质上讲,PyCaret 是一个 Python 封装器,封装了多个机器学习库和框架,如 sci-kit-learn、XGBoost、Microsoft LightGBM 和 spaCy 等。
在 PyCaret 中,所有机器学习实验步骤都可以通过自动开发的 pipeline 复现。PyCaret 中的所有操作都按顺序存储在 Pipeline 中,并针对模型部署进行了全面配置。无论是填充缺失值、转换类别数据、执行特征工程,还是调参,PyCaret 都能自动完成。Pipeline 还可以保存为二进制文件格式,以便在不同环境中迁移。
PyCaret 包含一系列函数,用户可以通过它们完成机器学习实验。这些函数主要分为五个大类:初始化、模型训练、集成、分析与部署。此外,PyCaret 提供了六个模块,支持有监督和无监督模型的训练和部署,分别是分类、回归、聚类、异常检测、自然语言处理和关联规则挖掘。用户可以根据实验类型选择合适的模块。
接下来,我们将介绍如何安装和使用 PyCaret。
安装 PyCaret
使用 pip 安装 PyCaret。
在命令行界面或 Notebook 环境中运行以下命令:
shell
pip install pycaret
Azure notebook 和 Google Colab 用户可以运行以下命令:
shell
!pip install pycaret
安装过程中,PyCaret 会自动安装所有依赖项。
分步教程
数据获取
本教程使用「糖尿病」数据集,目标是根据血压、胰岛素水平以及年龄等多种因素预测患者的预后情况(1 或 0)。数据集可以在 PyCaret 的 GitHub 地址找到。
使用 pycaret.datasets 模块中的 get_data 函数可以直接从 PyCaret 库中导入数据集:
python
from pycaret.datasets import get_data
diabetes = get_data('diabetes')
环境配置
在 PyCaret 中执行任何机器学习实验的第一步是通过导入所需模块并初始化 setup 来设置环境。例如,使用 pycaret.classification 模块:
python
from pycaret.classification import *
exp1 = setup(diabetes, target='Class variable')
所有预处理步骤都会在 setup 中应用,PyCaret 拥有 20 多种功能用于机器学习相关的数据准备,如根据 setup 函数中定义的参数创建 Transformation pipeline,并自动协调 Pipeline 中的所有相关性和依赖关系。
模型比较
监督机器学习实验的第一步是模型比较。compare_models 函数会训练模型库中的所有模型,并使用 k 折交叉验证(默认 k=10)来比较常见的评估指标。评估指标包括:
python
compare_models()
默认使用 10 折交叉验证来评估指标,可以改变 fold 参数值来改变评估结果。默认使用精度值(由高到低)来分类 table,也可以改变 sort 参数值来改变分类结果。
模型创建
在 PyCaret 的任何模块中,创建模型只需一行代码。例如,使用 create_model 函数创建 AdaBoost 模型:
python
adaboost = create_model('adaboost')
模型调优
tune_model 函数用于自动调整机器学习模型的超参数。PyCaret 在预定义的搜索空间上使用随机网格搜索。此函数返回具有 k 折交叉验证分数和训练好的模型对象的表格。
python
tuned_adaboost = tune_model('ada')
模型集成
ensemble_model 函数用于集成训练好的模型。它只需要一个参数,即训练好的模型对象。此函数返回具有 k 折交叉验证分数和训练好的模型对象的表格。
python
dt = create_model('dt')
dt_bagged = ensemble_model(dt)
默认使用 Bagging 方法进行模型集成,也可以通过 ensemble_model 函数中的 method 参数将其转换为 Boosting。
模型绘制
plot_model 函数用于可视化训练好的机器学习模型的功能和诊断。例如,绘制 AUC 曲线:
python
plot_model(adaboost, plot='auc')
模型解释
PyCaret 使用 SHAP(SHapley Additive exPlanations)来解释模型。例如:
python
xgboost = create_model('xgboost')
interpret_model(xgboost)
模型预测
为了获得模型在测试或 hold-out 数据集上的预测结果,可以使用 predict_model 函数:
python
rf = create_model('rf')
rf_holdout_pred = predict_model(rf)
模型部署
deploy_model 函数允许部署整个 pipeline,包括云端训练的模型:
python
deploy_model(model=rf, model_name='rf_aws', platform='aws', authentication={'bucket': 'pycaret-test'})
模型/实验保存
训练完成后,可以保存整个 pipeline,包括所有预处理转换和训练模型对象:
python
adaboost = create_model('ada')
save_model(adaboost, model_name='ada_for_deployment')
用户还可以保存整个实验,包括所有中间输入:
python
save_experiment(experiment_name='my_first_experiment')
通过 loadmodel 和 loadexperiment 函数,用户可以下载保存的模型和实验。
关键词
回复关键词「pybook03」,获取《Think Python 2e》电子版。
回复关键词「入门材料」,获取 10 本 Python 入门书籍的电子版。
回复关键词「m」,获取 Python 精选优质文章合集。
回复关键词「0」及以上数字,获取更多资源。