使用PyCaret构建机器学习模型

5次阅读

共计 4776 个字符,预计需要花费 12 分钟才能阅读完成。

作者 |LAKSHAY ARORA
编译 |VK
来源 |Analytics Vidhya

概述

  • PyCaret 是一个超级有用的 Python 库,用于在短时间内执行多个机器学习任务
  • 学习如何依赖 PyCaret 在几行代码中构建复杂的机器学习模型

介绍

我建立的第一个机器学习模型是一个相当麻烦的代码块。我仍然记得构建一个集成模型,它需要许多行代码,它十分需要一个向导来解开这些混乱的代码!

当涉及到构建可解释的机器学习模型时,尤其是在行业中,编写高效的代码是成功的关键。所以我强烈建议使用 PyCaret 库。

我希望 PyCaret 在我的刚学习机器学习的日子里出现!这是一个非常灵活和有用的库,我在最近几个月已经相当依赖。我坚信任何有志成为数据科学或分析专业人士的人都会从使用 PyCaret 中受益匪浅。

我们将看到 PyCaret 到底是什么,包括如何在你的机器上安装它,然后我们将深入研究如何使用 PyCaret 来构建可解释的机器学习模型,包括集成模型。

目录

  1. 什么是 PyCaret?为什么要使用它?
  2. 安装 PyCaret
  3. 熟悉 PyCaret
  4. 使用 PyCaret 训练我们的机器学习模型
  5. 使用 PyCaret 构建集成模型
  6. 分析模型
  7. 做出预测
  8. 保存并加载模型

什么是 PyCaret?为什么要使用它?

PyCaret 是 Python 中一个开源的机器学习库,它可以帮助你从数据准备到模型部署。它很容易使用,你可以用一行代码完成几乎所有的数据科学项目任务。

我发现 PyCaret 非常方便。以下是两个主要原因:

  • PyCaret 是一个代码库,它使你的工作效率更高。你可以在代码上花更少的时间,做更多的实验
  • 它是一个易于使用的机器学习库,将帮助你执行端到端的机器学习实验,无论是输入缺失值、编码分类数据、特征工程、超参数调整,还是构建集成模型

安装 PyCaret

这是最直接的。可以直接使用 pip 安装 PyCaret 的第一个稳定版本 v1.0.0。只需在 Jupyter Notebook 中运行以下命令即可开始:

!pip3 install pycaret

熟悉 PyCaret

问题陈述和数据集

在本文中,我们将解决一个分类问题。我们有一个银行数据集,包括客户年龄、经验、收入、教育程度,以及他 / 她是否有信用卡。该行希望建立一个机器学习模型,帮助他们识别购买个人贷款可能性更高的潜在客户。

数据集有 5000 行,我们保留了 4000 行用于训练模型,剩下的 1000 行用于测试模型。你可以在这里找到本文中使用的完整代码和数据集。

https://github.com/lakshay-ar…

让我们从使用 Pandas 库读取数据集开始:

# 导入 panda 以读取 CSV 文件
import pandas as pd
# 读取数据
data_classification = pd.read_csv('datasets/loan_train_data.csv')
# 查看数据的顶行
data_classification.head()

在 PyCaret 中启动机器学习项目之前的第一步是设置环境。这只是一个两步的过程:

  1. 导入模块:根据要解决的问题类型,首先需要导入模块。在 PyCaret 的第一个版本中,有 6 个不同的模块可用:回归、分类、聚类、自然语言处理(NLP)、异常检测和关联挖掘规则。在本文中,我们将解决一个分类问题,因此我们将导入分类模块
  2. 初始化设置:在这个步骤中,PyCaret 执行一些基本的预处理任务,比如忽略 id 和 Date 列、填充丢失的值、对分类变量进行编码,以及在其余建模步骤中将数据集拆分为 train test。当你运行 setup 函数时,它将首先确认数据类型,然后如果你按 enter,它将创建环境。
# 导入分类模块
from pycaret import classification
# 设置环境
classification_setup = classification.setup(data= data_classification, target='Personal Loan')

我们都准备好探索 PyCaret 了!

使用 PyCaret 训练我们的机器学习模型

训练模型

用 PyCaret 训练一个模型非常简单。你只需要使用 create_model 函数,该函数只接受一个参数(模型缩写为字符串)。

在这里,我们将首先训练一个决策树模型,我们必须通过“dt”,它将返回一个表,其中包含用于分类模型的常用评估指标的 k 倍交叉验证分数。

以下是用于监督学习的评估指标:

  • 分类:Accuracy, AUC, Recall, Precision, F1, Kappa
  • 回归:MAE、MSE、RMSE、R2、RMSLE、MAPE

你可以查看 PyCaret 的文档页以了解更多缩写。

https://pycaret.org/create-mo…

# 建立决策树模型
classification_dt = classification.create_model('dt')

同样,为了训练 XGBoost 模型,只需要传递字符串“XGBoost”:

# 构建 xgboost 模型
classification_xgb = classification.create_model('xgboost')

超参数调整

我们可以通过使用 tune_model 函数来调整机器学习模型的超参数,该函数接受一个参数,模型缩写字符串(与我们在 create_model 函数中使用的相同)。

PyCaret 为我们提供了很多灵活性。例如,我们可以使用 tune_model 函数中的 fold 参数定义折叠次数。或者我们可以使用 n_iter 参数更改迭代次数。增加 nòiter 参数将明显增加训练时间,提供更好的性能。

让我们训练一个 CatBoost 模型:

# 构建和调优 catboost 模型
tune_catboost = classification.tune_model('catboost')

使用 PyCaret 构建集成模型

机器学习中的集成模型将来自多个模型的决策结合起来,以提高整体性能。

在 PyCaret 中,我们可以用一行代码创建 bagging、boosting、blending 和 stacking 集成模型。

让我们在这里训练一个集成模型。它还将返回一个表,其中包含常用评估指标的 k 折交叉验证分数:

# boosting
boosting = classification.ensemble_model(classification_dt, method= 'Boosting')

另一个非常著名的合成技术是 blending。你只需要传递在 blend_models 函数列表中创建的模型。

# blending
blender = classification.blend_models(estimator_list=[classification_dt, classification_xgb])

就这样!你只需要用 PyCaret 编写一行代码就可以完成大部分工作。

比较模型

这是 PyCaret 库的另一个有用功能。如果不想逐个尝试不同的模型,可以使用 compare models 函数,它将为所有可用模型训练和比较通用的评估度量。

此函数仅在 pycaret.classification 以及 pycaret.regression 模块中。

# 比较不同分类模型的性能
classification.compare_models()

分析模型

现在,在训练模型之后,下一步是分析结果。从商业角度来看,这特别有用,对吧?分析 PyCaret 中的模型也很简单。只需一行代码,你就可以执行以下操作:

  1. 对模型结果绘图 :分析 PyCaret 中的模型性能与编写plot_model 一样简单。可以绘制决策边界、精确召回曲线、验证曲线、残差图等。此外,对于群集模型,可以绘制肘部图和轮廓图。对于文本数据,可以绘制字云图、bigram 图和 trigram 频率图等。
  2. 解释结果:通过分析重要特性,解释模型结果有助于调试模型。这是工业级机器学习项目中至关重要的一步。在 PyCaret 中,我们可以用一行代码通过 SHAP 值和相关图来解释模型

对模型结果绘图

可以通过提供模型对象作为参数和所需的打印类型来打印模型结果。绘制 AUC-ROC 曲线和决策边界:

# AUC-ROC 图
classification.plot_model(classification_dt, plot = 'auc')

# 决策边界
classification.plot_model(classification_dt, plot = 'boundary')

绘制训练模型的精确召回曲线和验证曲线:

# Precision Recall 曲线
classification.plot_model(classification_dt, plot = 'pr')

# 验证曲线
classification.plot_model(classification_dt, plot = 'vc')

评估我们的模型

如果你不想单独绘制所有这些可视化效果,那么 PyCaret 库还有另一个惊人的功能——evaluate_model。在这个函数中,你只需要传递 model 对象,PyCaret 将创建一个交互式窗口,供你以所有可能的方式查看和分析模型:

# 评估模型
classification.evaluate_model(classification_dt)

解释我们的模型

在大多数机器学习项目中,解释复杂模型是非常重要的。它通过分析模型认为什么是重要的来帮助调试模型。在 PyCaret 中,这一步与编写解释模型以获取 Shapley 值一样简单。

# 解释模型:SHAP
classification.interpret_model(classification_xgb)

让我们尝试绘制相关图:

# 解释模型:相关性
classification.interpret_model(classification_xgb,plot='correlation')

做出预测

最后,我们将对看不见的数据进行预测。为此,我们只需要传递我们将用于预测和数据集的模型。确保它的格式与我们之前设置环境时提供的格式相同。

PyCaret 构建一个包含所有步骤的管道,并将未看到的数据传递到管道中,并给出结果。

让我们看看如何预测数据的标签:

# 读取测试数据
test_data_classification = pd.read_csv('datasets/loan_test_data.csv')
# 做出预测
predictions = classification.predict_model(classification_dt, data=test_data_classification)
# 查看预测
predictions

保存并加载模型

现在,一旦构建并测试了模型,我们就可以使用 save_model 函数将其保存在 pickle 文件中。传递要保存的模型和文件名,即:

# 保存模型
classification.save_model(classification_dt, 'decision_tree_1')

我们可以稍后加载此模型并预测数据上的标签:

# 加载模型
dt_model = classification.load_model(model_name='decision_tree_1')

结尾

它真的很容易使用。我个人发现 PyCaret 对于在时间紧迫的情况下快速生成结果非常有用。

在不同类型的数据集上练习使用它——你会越充分利用它,就越能真正掌握它的实用性!它甚至只需要一行代码就可以在 AWS 等云服务上支持模型部署。

原文链接:https://www.analyticsvidhya.c…

欢迎关注磐创 AI 博客站:
http://panchuang.net/

sklearn 机器学习中文官方文档:
http://sklearn123.com/

欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/

正文完
 0