在 PyCaret 中构建自定义模型管道:从数据准备到生产

Building a Custom Model Pipeline in PyCaret: From Data Prep to Production

在 PyCaret 中构建自定义模型管道:从数据准备到生产
图片来源:Editor | Canva

PyCaret 中构建自定义模型管道可以使机器学习更加轻松。PyCaret 能够自动化许多步骤,包括数据准备和模型训练。它还可以让你创建和使用自己的自定义模型。

在本文中,我们将一步一步地使用 PyCaret 构建自定义机器学习管道。

什么是 PyCaret?

PyCaret 是一个自动化机器学习工作流的工具。它处理重复性任务,如数据缩放、变量编码和超参数调优。PyCaret 支持许多机器学习任务,包括

  • 分类(预测类别)
  • 回归(预测数字)
  • 聚类(数据分组)
  • 异常检测(识别离群值)

PyCaret 与 scikit-learn、XGBoostLightGBM 等流行库配合良好。

设置环境

首先,使用 pip 安装 PyCaret

接下来,导入适合你任务的模块

准备数据

在开始机器学习项目之前,你需要准备数据。PyCaret 与 Pandas 配合良好,这种组合可以帮助你进行数据准备。

以下是加载和探索 Iris 数据集的方法

确保你的数据是干净的,并且包含一个目标列——在我们的例子中,这是 iris.target。这是你想预测的变量。

设置 PyCaret 环境

PyCaret 的 setup() 函数可以为你的数据进行训练准备。它会处理诸如以下任务:

  • 填充缺失值:自动用适当的值替换缺失数据
  • 编码分类变量:将非数字类别转换为数字
  • 缩放数值特征:对数据进行归一化以确保一致性

设置方法如下

setup

一些值得提及的重要 setup 参数包括

  • preprocess=True/False:用于控制预处理
  • session_id:允许结果可复现
  • fold:用于描述和使用交叉验证策略
  • fix_imbalance=True:此参数允许处理不平衡数据集

总之,这一步准备了数据并为模型训练奠定了基础。

可用模型

PyCaret 提供了多种机器学习算法。你可以使用 models() 函数查看支持的模型列表

models

此函数生成一个表格,显示每个模型的名称、简短标识符(ID)和简要描述。用户可以快速查看并评估哪些算法适合他们的任务。

模型比较

compare_models() 函数根据性能指标评估和排名多个模型,是 PyCaret 许多有益的工作流函数之一。它通过比较模型(使用准确率、R² 等指标)来帮助识别数据集的最佳模型。

  • 准确率:用于分类任务
  • R-squared:用于回归任务

使用方法如下

compare_models

这将使用默认超参数比较所有可用模型,并打印出基于性能指标的最佳模型的详细信息。best_model 对象将包含性能得分最好的模型。

创建模型

在通过 compare_models() 比较模型后,您可以使用 create_model() 函数来创建最佳模型。

create_model

此函数将在您的数据集上训练选定的模型。

超参数调优

微调模型的参数可以显著提高其性能。PyCaret 通过智能搜索策略自动化了此过程。

PyCaret 在调优期间自动执行交叉验证,并根据您选择的指标选择最佳参数。您还可以指定自定义参数网格以更好地控制调优过程。

tune_model() 还支持不同的调优策略,如网格搜索和贝叶斯优化。

评估模型

评估模型性能以了解其在未见过的数据上的行为非常重要。PyCaret 的 evaluate_model() 函数提供了对模型性能的详细、交互式审查。

以下是 PyCaret 中可用于模型评估的一些常见评估图。

混淆矩阵

混淆矩阵显示了模型在数据集中的每个类别上的分类效果。它比较了预测标签和真实标签。此图有助于您理解分类中的错误。

confusion_matrix

ROC 曲线

ROC 曲线(接收者操作特征曲线)显示了在各种阈值设置下,真正例率(灵敏度)和假正例率(1 – 特异度)之间的权衡。它对于评估分类模型非常有用,尤其是在存在类别不平衡的情况下。

ROC_Curve

学习曲线

学习曲线显示了模型的性能随着训练样本数量的增加而提高。它可以帮助您识别模型是否欠拟合或过拟合。

Learning_Curve

模型解释

理解模型如何做出决策对于调试和建立信任都很重要。PyCaret 提供了几种模型解释工具。

这些可视化有助于解释哪些特征对模型的预测影响最大。对于分类任务,您还可以分析决策边界和混淆矩阵来理解模型行为。

保存和加载自定义模型

在训练和微调模型后,您通常希望将其保存以备将来使用。PyCaret 使此过程变得简单。但是,为了正确保存模型,您还需要保存预处理管道。使用以下代码完成这两个过程。

发生了什么

  • save_model(tuned_model, ‘final_model’, prep_pipeline=True):将您的 tuned_model 和相关的预处理管道一起保存到 final_model.pkl 文件
  • loaded_model = (‘final_model’):将保存的模型加载到 loaded_model
  • predictions = predict_model(loaded_model, new_data):使用模型,并通过保存的管道自动应用预处理

创建生产管道

从实验和模型构建到生产和模型部署需要健壮、可复现的管道。PyCaret 通过内置的管道创建简化了这一过渡。

这些管道确保所有预处理步骤、特征工程和模型推理都按正确的顺序进行,从而使部署更加可靠。

生产部署

将模型部署到生产环境需要小心处理模型构件和预处理步骤。PyCaret 提供了工具来使此过程无缝进行。

这种方法确保了训练和生产环境之间的一致性。保存的管道会自动处理所有必要的数据转换,从而降低了生产中预处理不匹配的风险。

使用自定义模型

在 PyCaret 中创建自定义模型在以下情况下非常有用:

  • 您想实现标准库中没有的新颖算法
  • 您需要修改现有算法以适应您的特定问题
  • 您希望更精细地控制模型的行为或性能

在 PyCaret 中,您可以使用 scikit-learn 创建自己的自定义机器学习模型,这使您能够更精细地控制模型的行为。要在 PyCaret 中使用自定义模型,您需要继承 scikit-learn 的两个类

  • BaseEstimator:此类提供了训练和使用模型的基本功能,例如拟合和预测。
  • ClassifierMixin:此类为分类任务添加了方法,例如预测样本所属的类别。

为了演示如何创建自定义模型,让我们通过实现加权 K-近邻(KNN)分类器来逐步介绍。

创建自定义模型后,您可以使用 create_model() 函数轻松将其集成到 PyCaret 中。此函数将允许 PyCaret 像处理内置模型一样处理自定义模型。

结论

在 PyCaret 中创建自定义模型管道可以使您的整个机器学习工作流更易于实施。PyCaret 可以帮助进行数据准备、模型构建和评估。您甚至可以添加自己的自定义模型,并使用 PyCaret 的工具来改进它们。在调优和测试之后,可以将模型保存并在生产中使用。

暂无评论。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。