文档
  • PyCaret 3.0
  • 入门
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放和转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 宣布 PyCaret 1.0
      • 宣布 PyCaret 2.0
      • 关于 PyCaret 你可能不知道的 5 件事
      • 构建并部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建自己的 AutoML
      • 在 Google Kubernetes 上部署 ML Pipeline
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中实现异常检测器
      • 在 Google Kubernetes 上部署 ML 应用
      • 在 GKE 上部署机器学习 Pipeline
      • 在 AWS Fargate 上部署机器学习 Pipeline
      • 使用 Docker 在云端部署 ML Pipeline
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 ONNX Runtime 在边缘设备上部署 PyCaret 模型
      • GitHub 是你所需要的最佳 AutoML
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 和 MLflow 实现轻松的 MLOps
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 PyCaret 在 Alteryx 中实现机器学习
      • 使用 PyCaret 在 KNIME 中实现机器学习
      • 使用 PyCaret 在 SQL 中实现机器学习 第一部分
      • 使用 PyCaret 在 Power BI 中实现机器学习
      • 使用 PyCaret 在 Tableau 中实现机器学习
      • 使用 PyCaret 进行多时间序列预测
      • 使用 PyCaret 预测客户流失
      • 使用 PyCaret 预测潜在客户得分(正确方式)
      • 使用 PyCaret 在 Python 中进行 NLP 文本分类
      • 使用 PyCaret 预测潜在客户得分(正确方式)
      • 使用 PyCaret 预测黄金价格暴跌
      • 使用机器学习预测黄金价格
      • PyCaret 2.1 功能摘要
      • 使用 PyCaret 将 ML 模型部署到 SQL Server
      • 使用 PyCaret 和 Gradio 加速你的 ML
      • 时间序列 101 - 初学者指南
      • 使用 PyCaret 进行时间序列异常检测
      • 使用 PyCaret 回归进行时间序列预测
      • 使用 PyCaret 在 Power BI 中进行主题建模
      • 使用 PyCaret 编写和训练自定义 ML 模型
      • 使用 PyCaret 和 Streamlit 构建并部署 ML 应用
      • PyCaret 2.3.6 发布了!了解新功能?
    • 📺视频
    • 🛩️速查表
    • ❓常见问题
    • 👩‍💻示例
  • 重要链接
    • 🛠️发布说明
    • ⚙️API 参考
    • 🙋 讨论区
    • 📤问题
    • 👮 许可证
  • 媒体
    • 💻Slack
    • 📺YouTube
    • 🔗领英
    • 😾GitHub
    • 🔅Stack Overflow
由 GitBook 提供支持
本页内容
  • 使用 PyCaret 编写和训练你自己的自定义机器学习模型
  • PyCaret
  • 安装 PyCaret
  • 👉 开始吧
  • 👉 数据集
  • 👉 数据准备
  • 👉 可用模型
  • 👉 模型训练与选择
  • 👉 编写和训练自定义模型
  • 即将推出!
  • 你可能也对这些感兴趣
  • 重要链接
  • 想了解某个特定模块吗?

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

使用 PyCaret 编写和训练自定义 ML 模型

上一篇使用 PyCaret 在 Power BI 中进行主题建模下一篇使用 PyCaret 和 Streamlit 构建并部署 ML 应用

上次更新于 2 年前

这有帮助吗?

使用 PyCaret 编写和训练你自己的自定义机器学习模型

一篇循序渐进、对初学者友好的教程,讲解如何在 PyCaret 中编写和训练自定义机器学习模型

图片由 Rob Lambert 在 Unsplash 上提供

PyCaret

PyCaret 是一个开源、低代码的机器学习库和端到端模型管理工具,用 Python 构建,用于自动化机器学习工作流程。它因其易用性、简洁性以及快速高效地构建和部署端到端 ML 原型的能力而广受欢迎。

PyCaret 是一个替代性的低代码库,只需几行代码即可替代数百行代码。这使得实验周期呈指数级加快并提高效率。

PyCaret 简单且 易于使用。在 PyCaret 中执行的所有操作都按顺序存储在 Pipeline 中,该 Pipeline 可以完全自动化地进行**部署**。无论是缺失值填充、独热编码、转换分类数据、特征工程,甚至是超参数调优,PyCaret 都能将其自动化。

本教程假设你对 PyCaret 有一定的先验知识和经验。如果你之前没用过,没关系——你可以通过这些教程快速上手。

安装 PyCaret

安装 PyCaret 非常简单,只需几分钟。我们强烈建议使用虚拟环境,以避免与其他库发生潜在冲突。

**# install slim version (default)
**pip install pycaret

**# install the full version**
pip install pycaret[full]

👉 开始吧

👉 数据集

**# read data from pycaret repo
**from pycaret.datasets import get_data
data = get_data('insurance')

👉 数据准备

**# initialize setup
**from pycaret.regression import *
s = setup(data, target = 'charges')

每当你在 PyCaret 中初始化 setup 函数时,它都会对数据集进行剖析并推断所有输入特征的数据类型。如果所有数据类型都正确推断,你可以按 Enter 键继续。

👉 可用模型

要查看所有可用于训练的模型列表,可以使用名为 models 的函数。它会显示一个表格,包含模型 ID、名称以及实际估计器的引用。

**# check all the available models
**models()

👉 模型训练与选择

在 PyCaret 中,训练任何模型最常用的函数是 create_model。它接受你想要训练的估计器的 ID。

**# train decision tree
**dt = create_model('dt')

输出显示了 10 折交叉验证指标的平均值和标准差。该函数的输出是一个训练好的模型对象,本质上是一个 scikit-learn 对象。

print(dt)

要在循环中训练多个模型,你可以编写一个简单的列表推导式。

**# train multiple models**
multiple_models = [create_model(i) for i in ['dt', 'lr', 'xgboost']]

**# check multiple_models
**type(multiple_models), len(multiple_models)
>>> (list, 3)

print(multiple_models)

如果你想训练库中所有可用的模型,而不是只训练选定的几个,你可以使用 PyCaret 的 compare_models 函数,而无需自己编写循环(结果是一样的)。

**# compare all models**
best_model = compare_models()

compare_models 返回的输出显示了所有模型的交叉验证指标。根据这个输出,Gradient Boosting Regressor 是最佳模型,在训练集上使用 10 折交叉验证得到的平均绝对误差 (MAE) 为 2,702 美元。

**# check the best model**
print(best_model)

上表中显示的指标是交叉验证分数,要检查 hold-out 集上 best_model 的分数,请使用:

**# predict on hold-out
**pred_holdout = predict_model(best_model)

要在未见数据集上生成预测,你可以使用相同的 predict_model 函数,但只需额外传递一个 data 参数。

**# create copy of data drop target column**
data2 = data.copy()
data2.drop('charges', axis=1, inplace=True)

**# generate predictions
**predictions = predict_model(best_model, data = data2)

👉 编写和训练自定义模型

到目前为止,我们已经看到了 PyCaret 中所有可用模型的训练和模型选择。然而,PyCaret 处理自定义模型的方式是完全相同的。只要你的估计器与 sklearn API 风格兼容,它就会以相同的方式工作。让我们看几个例子。

在向你展示如何编写自己的自定义类之前,我将首先演示如何使用自定义的非 sklearn 模型(即在 sklearn 或 pycaret 基础库中不可用的模型)。

👉 GPLearn 模型

符号回归是一种机器学习技术,旨在识别最能描述关系的潜在数学表达式。它首先构建一组幼稚的随机公式来表示已知自变量与其因变量目标之间的关系,以预测新数据。然后,通过从总体中选择最适合的个体进行遗传操作,使每一代程序从上一代演变而来。

要使用 gplearn 中的模型,你首先需要安装它

**# install gplearn
**pip install gplearn

现在你只需导入未经训练的模型并将其传递给 create_model 函数即可

**# import untrained estimator**
from gplearn.genetic import SymbolicRegressor
sc = SymbolicRegressor()

**# train using create_model
**sc_trained = create_model(sc)
print(sc_trained)

你也可以检查该模型的 hold-out 分数

**# check hold-out score
**pred_holdout_sc = predict_model(sc_trained)

👉 NGBoost 模型

要使用 ngboost 中的模型,你首先需要安装 ngboost

**# install ngboost**
pip install ngboost

安装完成后,你可以从 ngboost 库导入未经训练的估计器,并使用 create_model 来训练和评估模型

**# import untrained estimator**
from ngboost import NGBRegressor
ng = NGBRegressor()

**# train using create_model
**ng_trained = create_model(ng)
print(ng_trained)

👉 编写自定义类

上面 gplearn 和 ngboost 这两个例子对于 pycaret 来说是自定义模型,因为它们在默认库中不可用,但你可以像使用其他开箱即用模型一样使用它们。然而,可能存在需要编写自己的算法(即算法背后的数学原理)的用例,在这种情况下,你可以继承 sklearn 的基类并编写自己的数学逻辑。

让我们创建一个朴素估计器,它在拟合阶段学习目标变量的平均值,并对所有新数据点预测相同的平均值,无论 X 输入如何(在实际生活中可能没用,但这只是为了演示功能)。

**# create custom estimator**
import numpy as np**
**from sklearn.base import BaseEstimator

class MyOwnModel(BaseEstimator):
    
    def __init__(self):
        self.mean = 0
        
    def fit(self, X, y):
        self.mean = y.mean()
        return self
    
    def predict(self, X):
        return np.array(X.shape[0]*[self.mean])

现在让我们使用这个估计器进行训练

**# import MyOwnModel class**
mom = MyOwnModel()

**# train using create_model
**mom_trained = create_model(mom)
**# generate predictions on data**
predictions = predict_model(mom_trained, data=data)

注意,Label 列,本质上是预测结果,对于所有行都是相同的数字 13,225 美元,这是因为我们以这种方式创建了这个算法,它从训练集的平均值学习并预测相同的值(只是为了保持简单)。

我希望你能体会到 PyCaret 的易用性和简洁性。只需几行代码,你就可以执行端到端机器学习实验,并编写自己的算法,而无需调整任何底层代码。

即将推出!

使用这个轻量级的 Python 工作流程自动化库,你可以实现无限可能。如果你觉得有用,请不要忘记在我们的 GitHub 仓库上给我们点赞 ⭐️。

你可能也对这些感兴趣

重要链接

想了解某个特定模块吗?

点击下方链接查看文档和工作示例。

PyCaret 的默认安装是 pycaret 的精简版本,只安装硬依赖项.

当你安装完整版 pycaret 时,所有可选依赖项,例如也会被安装。

在我们开始讨论自定义模型训练之前,让我们快速演示一下 PyCaret 如何与开箱即用模型配合使用。我将使用在 上可用的“insurance”数据集。。该数据集的目标是根据一些属性预测患者费用。

insurance 数据集中的示例行

PyCaret 的所有模块都一样,setup 是在 PyCaret 中进行任何机器学习实验的第一个也是唯一必需的步骤。此函数负责模型训练前所需的所有数据准备工作。除了执行一些基本的默认处理任务外,PyCaret 还提供各种各样的预处理功能。要了解 PyCaret 中所有预处理功能的更多信息,你可以参阅此.

pycaret.regression 模块中的 setup 函数
setup 输出 — 为显示目的而截断
models() 输出 — 为显示目的而截断
create_model(‘dt’) 输出
print(dt) 输出
print(multiple_models) 输出
compare_models 函数的输出
print(best_model) 输出
predict_model(best_model) 函数的输出
predict_model(best_model, data = data2) 输出

尽管遗传编程 (GP) 可用于执行,gplearn 专门限于解决符号回归问题。

create_model(sc_trained) 输出
print(sc_trained) 输出
predict_model(sc_trained) 输出

ngboost 是一个 Python 库,实现了自然梯度提升,如 中所述。。它构建于 之上并被设计成在适当评分规则、分布和基础学习器选择方面具有可扩展性和模块化特性。在本 文中提供了对 NGBoost 基本方法的教学性介绍。.

create_model(ng) 输出
print(ng_trained) 输出
create_model(mom) 输出
predict_model(mom, data=data) 输出

下周我将写一篇教程来进一步讲解本教程。我们将编写一个更复杂的算法,而不是仅仅进行均值预测。我将在下一篇教程中介绍一些复杂概念。请在 上关注我,, ,以及获取更多更新。

要了解更多关于 PyCaret 的信息,请在 上关注我们和.

加入我们的 Slack 频道。邀请链接:.

📖
PyCaret 2.2 发布了 — 新功能有哪些
宣布 PyCaret 2.0
关于 PyCaret 你可能不知道的五件事
此处列出
此处列出
PyCaret 仓库
链接
各种各样的任务
“NGBoost:用于概率预测的自然梯度提升”
Scikit-Learn
幻灯片
Medium
领英
Twitter
领英
Youtube
此处
使用 PyCaret 2.0 在 Power BI 中构建你自己的 AutoML
使用 Docker 在 Azure 上部署机器学习 Pipeline
在 Google Kubernetes Engine 上部署机器学习 Pipeline
在 AWS Fargate 上部署机器学习 Pipeline
构建并部署你的第一个机器学习 Web 应用
使用 AWS Fargate 无服务器部署 PyCaret 和 Streamlit 应用
使用 PyCaret 和 Streamlit 构建并部署机器学习 Web 应用
在 GKE 上部署使用 Streamlit 和 PyCaret 构建的机器学习应用
文档
博客
GitHub
StackOverflow
安装 PyCaret
Notebook 教程
贡献 PyCaret
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘