使用 PyCaret 编写和训练自定义 ML 模型
上次更新于
这有帮助吗?
上次更新于
这有帮助吗?
PyCaret 是一个开源、低代码的机器学习库和端到端模型管理工具,用 Python 构建,用于自动化机器学习工作流程。它因其易用性、简洁性以及快速高效地构建和部署端到端 ML 原型的能力而广受欢迎。
PyCaret 是一个替代性的低代码库,只需几行代码即可替代数百行代码。这使得实验周期呈指数级加快并提高效率。
PyCaret 简单且 易于使用。在 PyCaret 中执行的所有操作都按顺序存储在 Pipeline 中,该 Pipeline 可以完全自动化地进行**部署**。无论是缺失值填充、独热编码、转换分类数据、特征工程,甚至是超参数调优,PyCaret 都能将其自动化。
本教程假设你对 PyCaret 有一定的先验知识和经验。如果你之前没用过,没关系——你可以通过这些教程快速上手。
安装 PyCaret 非常简单,只需几分钟。我们强烈建议使用虚拟环境,以避免与其他库发生潜在冲突。
每当你在 PyCaret 中初始化 setup 函数时,它都会对数据集进行剖析并推断所有输入特征的数据类型。如果所有数据类型都正确推断,你可以按 Enter 键继续。
要查看所有可用于训练的模型列表,可以使用名为 models 的函数。它会显示一个表格,包含模型 ID、名称以及实际估计器的引用。
在 PyCaret 中,训练任何模型最常用的函数是 create_model。它接受你想要训练的估计器的 ID。
输出显示了 10 折交叉验证指标的平均值和标准差。该函数的输出是一个训练好的模型对象,本质上是一个 scikit-learn 对象。
要在循环中训练多个模型,你可以编写一个简单的列表推导式。
如果你想训练库中所有可用的模型,而不是只训练选定的几个,你可以使用 PyCaret 的 compare_models 函数,而无需自己编写循环(结果是一样的)。
compare_models 返回的输出显示了所有模型的交叉验证指标。根据这个输出,Gradient Boosting Regressor 是最佳模型,在训练集上使用 10 折交叉验证得到的平均绝对误差 (MAE) 为 2,702 美元。
上表中显示的指标是交叉验证分数,要检查 hold-out 集上 best_model 的分数,请使用:
要在未见数据集上生成预测,你可以使用相同的 predict_model 函数,但只需额外传递一个 data 参数。
到目前为止,我们已经看到了 PyCaret 中所有可用模型的训练和模型选择。然而,PyCaret 处理自定义模型的方式是完全相同的。只要你的估计器与 sklearn API 风格兼容,它就会以相同的方式工作。让我们看几个例子。
在向你展示如何编写自己的自定义类之前,我将首先演示如何使用自定义的非 sklearn 模型(即在 sklearn 或 pycaret 基础库中不可用的模型)。
符号回归是一种机器学习技术,旨在识别最能描述关系的潜在数学表达式。它首先构建一组幼稚的随机公式来表示已知自变量与其因变量目标之间的关系,以预测新数据。然后,通过从总体中选择最适合的个体进行遗传操作,使每一代程序从上一代演变而来。
要使用 gplearn 中的模型,你首先需要安装它
现在你只需导入未经训练的模型并将其传递给 create_model 函数即可
你也可以检查该模型的 hold-out 分数
要使用 ngboost 中的模型,你首先需要安装 ngboost
安装完成后,你可以从 ngboost 库导入未经训练的估计器,并使用 create_model 来训练和评估模型
上面 gplearn 和 ngboost 这两个例子对于 pycaret 来说是自定义模型,因为它们在默认库中不可用,但你可以像使用其他开箱即用模型一样使用它们。然而,可能存在需要编写自己的算法(即算法背后的数学原理)的用例,在这种情况下,你可以继承 sklearn 的基类并编写自己的数学逻辑。
让我们创建一个朴素估计器,它在拟合阶段学习目标变量的平均值,并对所有新数据点预测相同的平均值,无论 X 输入如何(在实际生活中可能没用,但这只是为了演示功能)。
现在让我们使用这个估计器进行训练
注意,Label 列,本质上是预测结果,对于所有行都是相同的数字 13,225 美元,这是因为我们以这种方式创建了这个算法,它从训练集的平均值学习并预测相同的值(只是为了保持简单)。
我希望你能体会到 PyCaret 的易用性和简洁性。只需几行代码,你就可以执行端到端机器学习实验,并编写自己的算法,而无需调整任何底层代码。
使用这个轻量级的 Python 工作流程自动化库,你可以实现无限可能。如果你觉得有用,请不要忘记在我们的 GitHub 仓库上给我们点赞 ⭐️。
点击下方链接查看文档和工作示例。
PyCaret 的默认安装是 pycaret 的精简版本,只安装硬依赖项.
当你安装完整版 pycaret 时,所有可选依赖项,例如也会被安装。
在我们开始讨论自定义模型训练之前,让我们快速演示一下 PyCaret 如何与开箱即用模型配合使用。我将使用在 上可用的“insurance”数据集。。该数据集的目标是根据一些属性预测患者费用。
PyCaret 的所有模块都一样,setup 是在 PyCaret 中进行任何机器学习实验的第一个也是唯一必需的步骤。此函数负责模型训练前所需的所有数据准备工作。除了执行一些基本的默认处理任务外,PyCaret 还提供各种各样的预处理功能。要了解 PyCaret 中所有预处理功能的更多信息,你可以参阅此.
尽管遗传编程 (GP) 可用于执行,gplearn 专门限于解决符号回归问题。
ngboost 是一个 Python 库,实现了自然梯度提升,如 中所述。。它构建于 之上并被设计成在适当评分规则、分布和基础学习器选择方面具有可扩展性和模块化特性。在本 文中提供了对 NGBoost 基本方法的教学性介绍。.
下周我将写一篇教程来进一步讲解本教程。我们将编写一个更复杂的算法,而不是仅仅进行均值预测。我将在下一篇教程中介绍一些复杂概念。请在 上关注我,, ,以及获取更多更新。
要了解更多关于 PyCaret 的信息,请在 上关注我们和.
加入我们的 Slack 频道。邀请链接:.