用PyCaret构建机器学习分类模型
PyCaret是一个用Python编写的机器学习(ML)库。它允许开发者训练和部署ML模型。与scikit-learn等其他开源ML库相比,它是一个很好的替代性低代码库,只需几行代码就可以用来执行复杂的机器学习任务。
PyCaret是一个用Python编写的机器学习(ML)库。它允许开发者训练和部署ML模型。与其他开源ML库(如scikit-learn)相比,它是一个很好的替代性低代码库,只需几行代码就可以执行复杂的机器学习任务。
我们将使用PyCaret和来自Kaggle的信用卡客户违约数据集来预测客户是否会拖欠付款。这种预测将基于几个特征,我们将在本教程中看到。
前提条件
读者需要。
- 使用Jupyter笔记本或Google Colab。在我的教程中,我使用Google Colab。
- 熟悉Python编程语言。
- 安装Python 3.x
- 安装最新版本的PyCaret。目前,PyCaret 2.3是最新版本。
什么是PyCaret?
PyCaret是一个用Python编写的机器学习库。它允许开发者以一种简单而快速的方式训练和部署ML模型。
PyCaret在我们的教程中,我们只是将其用于分类。但是,你也可以使用这个库来执行聚类、回归、异常检测和自然语言处理任务。
为什么使用PyCaret?
- 它是一个开源的库。任何有兴趣使用它的人都可以使用。
- 它是用Python构建的。大多数开发人员都熟悉这种编程语言。
- 它很快速。在短短的几分钟内,开发人员可以部署复杂的模型。
- 它是一个低代码的ML库。由于你花在编码上的时间较少,它使开发者的工作效率更高。
- 它是一个基于现有库(如scikit-learn)的Python包装器。因此,不需要单独的学习曲线。
- 它与其他Python环境无缝集成,如PyCharm。开发人员可以轻松地将PyCaret集成到他们现有的ML工作流程中。
- 它是学生和有经验的开发者的理想选择。
PyCaret的功能
- 数据准备。
- 模型训练。
- 超参数调整。
- 分析和可解释性。
- 模型选择。
- 实验记录。
现在让我们开始使用PyCaret。第一步是安装和导入依赖项。
开始使用
我们将导入三个主要的依赖项。PyCaret,Pandas,和Shap。
- PyCaret
PyCaret将是我们的主要依赖。它允许我们利用ML管道来建立我们的模型。
- Pandas
我们正在使用pandas将CSV数据加载到数据框中。我们使用这个库来读取、清理和操作我们的数据集,以便能够建立一个自定义的机器学习模型。
- Shap
Shap帮助我们解释机器学习模型的结果。
现在让我们来安装这些依赖项。
安装依赖关系
使用pip install 命令,安装依赖性是比较直接的。由于你使用的是谷歌Colab,pip 命令应该已经自动安装了。只要键入以下代码即可。
pip install pycaret pandas shap
如果你使用你的本地jupyter笔记本来安装这些依赖项,就不需要在pip 命令前加上感叹号! 。
导入依赖项
现在让我们把这些依赖项导入我们的Google Colab。
import pandas as pd
from pycaret.classification import *
使用Pandas从Kaggle加载自定义数据集
让我们继续从Kaggle下载信用卡客户的默认数据集。从你的电脑上的Downloads文件夹中抓取下载的数据集,并将其复制到你正在处理的Google Colab文件夹中。
然后我们可以使用pandas库在Colab中加载这个数据集。
df = pd.read_csv(UCI_Credit_Card.csv)
要查看它,让我们键入以下内容。
df.head()
另外,还存在一个内置的PyCaret的数据库。使用get_data() 函数,你可以直接将数据加载到你的Colab中。但是,这个选项需要你有一个互联网连接。
from pycaret.datasets import get_data
credit_dataset = get_data('credit')
载入信用卡客户的默认数据集](/engineering-education/building-a-machine-learning-classification-model-with-pycaret/loaded- dataset.png)
训练和评估我们的ML分类模型
为了训练和评估我们的ML模型,我们需要使用setup() 函数。该函数创建了我们的ML转换管道,并在PyCaret中初始化了环境。PyCaret的规则规定,在执行任何其他函数之前,它必须是第一个被调用的函数。
setup() 函数接收两个参数;数据和目标。如果你想让PyCaret在你的数据集中推断数据类型,即把数字数据类型的特征推断为分类中使用的分类类型,可以添加一个额外的参数,称为categorical_features 和numeric_features 。但是,我们今天不会使用这个额外的参数。我将在后续文章中介绍它。
exp_name = setup(data = credit_dataset, target='default', session_id=5041)

如上所示,运行代码会产生有关预处理管道的信息,该管道是在执行setup() 。例如,我们的数据中有14个numeric features ,9个categorical features 。
在我们的实验中,我们也使用了session_id = 5041 参数。我们设置我们的参数是为了达到可重复性。使用它并不是强制性的,但排除它将促使一个随机数被生成。
实验完成后,现在要做的就是继续训练模型。
best_model = compare_models()

上面的代码是用来训练我们的模型的。为了训练它,我们运行compare_models() 函数。这个函数训练模型库中的所有模型,并使用常用的分类指标给它们打分。准确率、AUC、召回率、精确率、F1、Kappa。得到的结果显示了在某个特定时间点上表现最好的模型列表。
在我们的案例中,Ridge分类器是我们表现最好的模型。该列表包含不同的学习算法。但是,我们只对表现最好的学习算法感兴趣。我们放弃其他的。
测试我们的模型
predict_model(best_model)

测试我们的模型后记录的准确率是0.8159 。这与之前记录的准确率(0.8228 )没有太大区别。这可能是由于过度拟合或其他需要调查的因素。
通过采用诸如早期停止和退出等技术,将帮助我们防止我们的模型过度拟合,并将大大减少训练和验证准确性之间的差异。
对我们的数据集进行预测
为了对我们的credit_dataset 数据集进行预测,请输入以下代码。
prediction = predict_model(best_model, data = credit_dataset)
prediction.tail()

请注意,Label 列现在已经被添加到我们数据集的末尾。这个Label 列表示我们的预测。值1 预测为真(客户会违约),而0 预测为假(客户不会违约)。我们使用head() 和tail() 函数分别对前5行和最后5行进行预测。你可以随便玩玩。要对所有的行进行预测,请删除prediction.tail() 代码。
保存我们的模型
我们要做的最后一件事是继续并保存这个模型。我们使用下面的代码来保存我们的模型。
save_model(best_model, model_name='ridge-model')

加载我们保存的模型
要加载我们保存的模型,请键入以下代码。
model = load_model('ridge-model')
通过几行代码,我们的转换管道和模型已经成功地加载了!
收尾工作
简而言之,这就是如何开始使用PyCaret。PyCaret是scikit-learn的一个非常强大的竞争对手,我毫不怀疑它将成为像TensorFlow和pandas这样最常用的库之一。请自由尝试,使用你的自定义数据集建立你的ML分类模型。