使用 PyCaret 构建机器学习分类模型

17 Mar 2025 | 6 分钟阅读

引言

本教程将介绍如何使用 PyCaret 构建机器学习分类模型。在我们日常生活中,决策制定是一个重要的部分。同样的概念可以应用于我们的系统,我们可以使用机器学习算法和模型来创建我们自己的判断和分类模型。大多数机器学习算法的主要任务是识别和分类对象。这个过程称为分类。

分类帮助我们将大量数据分离或区分成离散值或预定义的标签,例如 0 或 1,True 或 False。它们将相同类型的数据分组。分类和回归都是监督学习。除了不同的思想,我们还提供带有正确标签的模型。因此,在训练期间,模型会看到哪些标签与我们的数据匹配,并能看到我们数据中的模式和相应的标签。

我们总是需要一些准确性度量来评估我们分类模型的准确性。偏差和方差等方法可用于根据预测分布的准确性来估计其准确性。

PyCaret 是一个机器学习 (ML) 库。它用 Python 编写。PyCaret 允许开发人员训练和部署机器学习模型。与 scikit-learn 等其他开源机器学习库相比,它是一个低成本库,只需几行代码即可执行复杂的学习任务。

PyCaret 是什么意思?

PyCaret 是一个开源的机器学习库。它用 Python 编程语言编写。PyCaret 训练机器学习模块。它允许数据科学家更快地进行端到端实验。PyCaret 允许我们用几行代码完成复杂的机器学习任务。一个非常简单易用的界面,所有操作都会自动存储在自定义的 PyCaret Pipeline 中,该 Pipeline 完全组织起来用于模型开发。PyCaret 还支持 scikit-learn、XGBoost、Microsoft LightGBM、spaCy 等。

PyCaret 使人们能够轻松简单地分析需要额外技能才能理解和执行的任务。PyCaret 帮助您准备数据,以便在您选择运行它的笔记本环境上以秒为单位导出模型。无论是添加缺失值、替换分类数据、构建现有特征还是优化现有数据的超参数,PyCaret 都可以帮助实现这一切。机器学习功能与 Microsoft Power BI、Tableau 和 KNIME 等其他支持 Python 的资源集成。

为什么我们使用 PyCaret 库?

使用 PyCaret 库构建机器学习分类有多种原因,如下所示:

  1. 首先,它是 Python 中的一个开源库。任何人都可以轻松使用。
  2. 它在 Python 中使用,这比其他编程语言更容易,而且大多数开发人员都了解这种语言。
  3. 开发人员可以在几秒钟内训练和部署模型,因为它是第一个此类库。
  4. 学生也可以轻松使用这个库。
  5. 它是一个低级机器学习库。所以,您需要花费更少的时间来编码。
  6. 它是基于 scikit-learn 等现有库的 Python 包装器。所以,您无需学习其他东西。
  7. 它可以轻松地与其他 Python 资源(如 PyCharm)集成。

PyCaret 库的功能有哪些?

PyCaret 库用于各种数据处理任务,如下所示:

  1. 数据准备
  2. 模型训练
  3. 模型内部的超参数调优
  4. 创建分析和推导可解释性
  5. 模型选择
  6. 记录实验

开始使用 PyCaret 库

在本教程中,我们将创建一个机器学习模型。我们将安装 Pycaret 库并加载一些特殊数据。特别是心脏病数据集,我们从中预测一个人是否患有心血管疾病,以分析二元分类问题。然后,使用 PyCaret 分类器创建自动分类器。现在,我们主要需要导入三种类型的包:PyCaret、Pandas 和 Shap。现在我们来学习这些依赖项 -

a. PyCaret

主要依赖项是 PyCaret。它允许我们使用机器学习管道来构建我们的模型。

b. Pandas

下一个重要依赖项是 Pandas。我们使用 pandas 将 CSV 文件加载到数据库中。我们使用 pandas 库读取、清理和操作数据集中的数据以构建机器学习模型。

c. Shap

最后一个要导入的重要依赖项是 shap。可以使用 Shap 来解释机器学习 (ML) 模型结果。

所以,现在我们开始使用 PyCaret。

1. 安装 PyCaret

使用 pip install 命令可以轻松成功安装。由于您正在使用 Google Colab,因此需要 pip 命令来安装它。所以,现在我们需要使用以下命令安装 PyCaret 库 -

假设您在本地 Jupyter Notebook 目录中使用这些依赖项。在这种情况下,无需在上面部分给出的 pip 命令前添加感叹号 (!)。

2. 导入依赖项

为了进一步深入,我们将使用以下两行来导入和调用创建此机器学习 (ML) 自动分类模型所需的所有依赖项。

3. 使用 Pandas 从 Kaggle 加载自定义数据集

现在,我们将导入数据集。在这里,我们使用心脏病数据集作为分类模型。这里的心脏病数据是 UCI ML 数据存储库的修改版本。有许多分类特征和数值特征可用。还有一个目标列,称为“Target”。我们将预测 1 或 0 的二元结果,其中 1 表示该人患有心脏病,0 表示该人没有心脏病。从计算机的下载文件夹中获取下载的文件并将其复制到您的 Google Colab 工作文件夹中。我们可以使用 pandas 库将此文件加载到 Colab 中。

现在,我们使用以下命令查看心脏病数据集的列和前五行,如下所示 -

输入此命令后,我们将显示以下输出 -

Building a Machine Learning Classification Model with PyCaret

现在,我们使用以下命令查看心脏病数据集的数据类型,如下所示 -

输入此命令后,我们将显示以下输出 -

age           int64
 sex           int64
 cp            int64
 trestbps      int64
 chol          int64
 fbs           int64
 restecg       int64
 thalach       int64
 exang         int64
 oldpeak     float64
 slope         int64
 ca            int64
 thal          int64
 target        int64
 dtype: object

模型评估和训练

现在,我们在 PyCaret 中评估和测试模型。PyCaret 基于测试的概念,因此运行机器学习过程,模型的构建将被称为一个实验。在设置实验之前,我们将分析分类特征以了解数据集模型。

我们将分类特征导入到我们的测试模型中,以更好地控制它们。setup() 函数启动机器学习实验,然后设置训练方法。可以在此函数的设计测试中设置许多其他参数。在执行其他操作之前,也需要调用 setup() 函数;它的两个参数是“data”和“target”,将是此操作的主要列。

为了设置实验,我们需要使用下面给出的命令 -

当模型中设置了分类特征后,输出如下 -

Building a Machine Learning Classification Model with PyCaret

训练 PyCaret 模型

使用 PyCaret,我们可以训练我们的数据集模型。不同的机器学习算法同时用于预测目标模型。排名将表明最适合数据集的最佳算法。要显示最佳模型,我们需要使用以下命令 -

输出如下 -

Building a Machine Learning Classification Model with PyCaret

测试 PyCaret 模型

为了测试 PyCaret 模型,我们使用了以下命令,该命令从下方给出结果 -

Building a Machine Learning Classification Model with PyCaret

使用以下命令保存 pickle 文件 -

输出

Transformation Pipeline and Model Successfully Saved
 (Pipeline(memory=None,
           steps=[('dtypes',
                   DataTypes_Auto_infer(categorical_features=['sex', 'cp', 'fbs',
                                                              'restecg', 'exang',
                                                              'thal'],
                                        display_types=True, features_todrop=[],
                                        id_columns=[],
                                        ml_usecase='classification',
                                        numerical_features=[], target='target',
                                        time_features=[])),
                  ('imputer',
                   Simple_Imputer(categorical_strategy='not_available',
                                  fill_value_categorical=Non...
                  ('fix_perfect', Remove_100(target='target')),
                  ('clean_names', Clean_Colum_Names()),
                  ('feature_select', 'passthrough'), ('fix_multi', 'passthrough'),
                  ('dfs', 'passthrough'), ('pca', 'passthrough'),
                  ['trained_model',
                   RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True,
                                   fit_intercept=True, max_iter=None,
                                   normalize=False, random_state=899,
                                   solver='auto', tol=0.001)]],
           verbose=False), 'ridge-model.pkl')

我们现在再次验证我们的预测,

输出

array([0, 1, 0, 0, 1])

结论

通过本教程,我们学习了如何使用 PyCaret 构建机器学习分类模型。通过使用 PyCaret 模型,任何人都可以理解任何复杂的数据集,并且也可以创建它。