PyCaret:简化机器学习模型构建

Python中构建首个机器学习模型时,还记得那是一个相当繁琐的代码块。仍然记得构建集成模型需要多少行代码——那简直是一团乱麻,只有魔法师才能解开!

在构建可解释的机器学习模型时,尤其是在工业界(或者当想要向客户解释黑客马拉松结果时),编写高效的代码是成功的关键。这就是为什么强烈推荐使用PyCaret库。

如果PyCaret在作为机器学习新手的日子里就存在就好了!这是一个超级灵活且有用的库,在最近几个月中经常依赖它。坚信任何有志于成为数据科学或分析专业人士的人都将从使用PyCaret中受益匪浅。

将了解PyCaret到底是什么,如何在机器上安装它,然后将深入使用PyCaret构建可解释的机器学习模型,包括集成模型。有很多学习内容,让开始吧。

目录

  • 概述
  • 介绍
  • PyCaret是什么以及为什么应该使用它?
  • 在机器上安装PyCaret
  • 让熟悉PyCaret
  • 使用PyCaret训练机器学习模型
  • 训练模型
  • 超参数调整
  • 使用PyCaret构建集成模型
  • 比较模型
  • 让分析模型!
  • 绘制模型结果
  • 评估模型
  • 是时候进行预测了!
  • 保存和加载模型
  • 结论
  • 常见问题解答

PyCaret是什么以及为什么应该使用它?

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

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

  • 作为一个低代码库,PyCaret使更有生产力。可以减少编码时间,进行更多实验。
  • 它是一个易于使用的机器学习库,可以帮助执行端到端的机器学习实验,无论是插补缺失值、编码分类数据、特征工程、超参数调整,还是构建集成模型。

在机器上安装PyCaret

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

!pip3 install pycaret

让熟悉PyCaret

问题陈述和数据集

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

数据集有5000行,保留了4000行用于训练模型,剩余的1000行用于测试模型。

可以通过以下链接找到本文中使用的全部代码和数据集:。

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

# 查看代码在Gist上

在开始PyCaret机器学习项目之前,第一步是设置环境。这是一个两步过程:

  • 导入模块:根据问题类型,首先需要导入模块。在PyCaret的第一个版本中,有6个不同的模块可用——回归、分类、聚类、自然语言处理(NLP)、异常检测和关联规则挖掘。在本文中,将解决一个分类问题,因此将导入分类模块。
  • 初始化设置:在此步骤中,PyCaret执行一些基本的预处理任务,例如忽略ID和日期列、插补缺失值、编码分类变量,并将数据集分割为训练-测试分割,以便进行其余的建模步骤。当运行setup函数时,它将首先确认数据类型,然后如果按回车键,它将为创建环境。
# 查看代码在Gist上

使用PyCaret训练机器学习模型

训练模型

在PyCaret中训练模型非常简单。只需要使用create_model函数,它只需要一个参数——模型缩写作为字符串。这里,首先训练一个决策树模型,需要传递“dt”,它将返回一个表格,其中包含用于分类模型的常见评估指标的k折交叉验证分数。

# 查看代码在Gist上

类似地,对于训练XGBoost模型,只需要传递字符串“xgboost”:

# 查看代码在Gist上

超参数调整

可以使用tune_model函数调整机器学习模型的超参数,它只需要一个参数——模型缩写字符串(与在create_model函数中使用的相同)。

PyCaret为提供了很多灵活性。例如,可以使用tune_model函数中的fold参数定义折数。或者可以使用n_iter参数更改迭代次数。增加n_iter参数肯定会增加训练时间,但会获得更好的性能。

让训练一个调整过的CatBoost模型:

# 查看代码在Gist上

使用PyCaret构建集成模型

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

在PyCaret中,可以只用一行代码创建装袋、提升、混合和堆叠集成模型。

如果想深入了解集成模型,强烈推荐这篇文章:。

让在这里训练一个提升集成模型。它也将返回一个表格,其中包含用于分类模型的常见评估指标的k折交叉验证分数:

# 查看代码在Gist上

另一个非常著名的集成技术是混合。只需要将创建的模型传递给blend_models函数的列表即可。

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

# 查看代码在Gist上

比较模型

这是PyCaret库的另一个有用功能。如果不想逐个尝试不同的模型,可以使用compare_models函数,它将训练并比较导入的模块库中所有可用模型的常见评估指标。

这个函数只在pycaret.classificationpycaret.regression模块中可用。

# 查看代码在Gist上

让分析模型!

现在,在训练模型之后,下一步是分析结果。这尤其从业务角度来看是有用的,对吧?在PyCaret中分析模型也非常简单。只需一行代码,就可以做到以下几点:

  • 绘制模型结果:在PyCaret中分析模型性能就像编写plot_model一样简单。可以绘制决策边界、精确度-召回曲线、验证曲线、残差图等。对于聚类模型,可以绘制肘部图和轮廓图。对于文本数据,可以绘制词云、二元和三元频率图等。
  • 解释结果:解释模型结果有助于通过分析重要特征来调试模型。这是工业级机器学习项目中的关键步骤。在PyCaret中,可以使用SHAP值和相关图仅用一行代码来解释模型(这变得越来越像一个主题了,不是吗?)

绘制模型结果

可以通过提供模型对象作为参数和想要的图表类型来绘制模型结果。让绘制AUC-ROC曲线和决策边界:

# 查看代码在Gist上

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

# 查看代码在Gist上

评估模型

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

# 查看代码在Gist上

非常酷!

解释模型

解释复杂模型在大多数机器学习项目中非常重要。它有助于通过分析模型认为重要的内容来调试模型。在PyCaret中,这一步就像编写interpret_model来获得Shapley值一样简单。

可以在这里阅读有关Shapley值的信息:。

# 查看代码在Gist上

让尝试绘制相关图:

# 查看代码在Gist上

是时候进行预测了!

最后,将对未见数据进行预测。为此,只需要传递将用于预测的模型和数据集。确保它与之前设置环境时提供的数据集格式相同。PyCaret构建了一个包含所有步骤的管道,并将未见数据传递到管道中,然后给结果。

让看看如何在未见数据上预测标签:

# 查看代码在Gist上

保存和加载模型

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

# 查看代码在Gist上

可以稍后加载此模型,并在未见数据上预测标签:

# 查看代码在Gist上

使用PyCaret确实这么简单。个人认为PyCaret在处理紧迫的时间线时非常有用。在不同类型的数据集上练习使用它——越是利用它,就越能真正掌握它的实用性!它甚至支持在AWS等云服务上部署模型,也只需要一行代码。

如果对本文有任何建议/反馈,请在下面的评论部分发布。期待听到使用PyCaret的经验。祝学习愉快!

Q1. PyCaret和pandas之间有什么区别?

  • PyCaret:自动化机器学习任务。
  • 用户友好,快速构建模型。
  • 专注于ML工作流自动化。
  • Pandas:管理和分析结构化数据。
  • 数据清理和探索必不可少。
  • 通用数据操作。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485