Skip to content

Latest commit

 

History

History
199 lines (108 loc) · 10 KB

5-things-doing-wrong-pycaret.md

File metadata and controls

199 lines (108 loc) · 10 KB

你在 PyCaret 中做错的 5 件事

原文:www.kdnuggets.com/2020/11/5-things-doing-wrong-pycaret.html

评论

Moez Ali,PyCaret 的创始人及作者

图

照片由 Ben White 提供,来源于 Unsplash


我们的前三课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业生涯。

2. Google 数据分析专业证书 - 提升你的数据分析技能

3. Google IT 支持专业证书 - 支持你的组织 IT


PyCaret

PyCaret 是一个开源的低代码机器学习库,能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,加速机器学习实验周期,提高生产力。

与其他开源机器学习库相比,PyCaret 是一个低代码的替代库,可以用几行代码替代数百行代码。这使得实验变得指数级地快速和高效。

官方网站: www.pycaret.org

文档: pycaret.readthedocs.io/en/latest/

Git: www.github.com/pycaret/pycaret

???? compare_models 比你想象的要做得更多

当我们在 2020 年 4 月发布 PyCaret 1.0 版本时,compare_models 函数会比较库中的所有模型,并返回平均交叉验证性能指标。基于此,你可以使用create_model来训练表现最佳的模型,并获取可以用于预测的训练模型输出。

这个行为在版本 2.0 中有所改变。compare_models 现在返回基于n_select参数的最佳模型,该参数默认设置为 1,这意味着它会返回最佳模型(默认情况下)。

图

compare_models(n_select = 1)

通过将默认的n_select参数更改为 3,你可以获得前 3 个模型的列表。例如:

图

compare_models(n_select = 3)

返回的对象是训练好的模型,你实际上不需要再次调用create_model来训练它们。你可以使用这些模型来生成诊断图或进行预测,例如:

图像

predict_model函数

???? 你认为你只能使用 scikit-learn 模型

我们收到很多请求,要求在模型库中包括非scikit-learn模型。许多人没有意识到,你不仅限于默认模型。create_model函数除了接受模型库中模型的 ID 外,还接受未训练的模型对象。只要你的对象与scikit-learn fit/predict API 兼容,它就会正常工作。例如,在这里我们通过简单地导入未训练的 NGBClassifier,训练并评估了来自ngboost库的NGBClassifier

图像

使用外部模型的 create_model

你也可以将未训练的模型传递给compare_modelsinclude参数,它将正常工作。

图像

使用未训练对象的 compare_models

请注意,包括的参数包括模型库中三个未训练的模型的 ID,即逻辑回归、决策树和 K 邻近,以及 ngboost 库中的一个未训练对象。此外,请注意索引表示在 include 参数中输入的模型的位置。

???? 你不了解 pull()函数

PyCaret 中的所有训练函数(create_model、tune_model、ensemble_model 等)显示一个分数网格,但不返回分数网格。因此,你无法将分数网格存储在像 pandas.DataFrame 这样的对象中。然而,有一个叫做pull的函数可以实现。例如:

图像

使用 create_model 的 pull 函数

这也适用于使用predict_model函数的 holdout 分数网格。

图像

使用predict_model函数拉取

现在你可以将指标作为 pandas.DataFrame 访问,你可以做很多事情。例如,你可以创建一个循环来训练不同参数的模型,并用这段简单的代码创建比较表:

图像

create_model 和 pull 函数

???? 你认为 PyCaret 是一个黑箱,但它不是。

另一个常见的误解是所有的预处理操作都在后台进行,用户无法访问。因此,你无法审计运行setup函数时发生了什么。这是不对的。

PyCaret 中有两个函数get_configset_config,它们允许你访问和更改后台的所有内容,从你的训练集到模型的随机状态。你可以通过调用**help(get_config)**来查看可以访问哪些变量:

图像

help(get_config)

你可以通过在get_config函数内部调用变量来访问它。例如,要访问X_train转化后的数据集,你可以这样写:

图示

get_config(‘X_train’)

你可以使用set_config函数来更改环境变量。根据你目前对pull、get_configset_config函数的了解,你可以创建一些非常复杂的工作流。例如,你可以对保留集进行N 次重采样,以评估平均性能指标,而不是依赖于一个保留集:

import numpy as npXtest = get_config('X_test')
ytest = get_config('y_test')AUC = []for i in np.random.randint(0,1000,size=10):
    Xtest_sampled = Xtest.sample(n = 100, random_state = i)
    ytest_sampled = ytest[Xtest_sampled.index]
    set_config('X_test', Xtest_sampled)
    set_config('y_test', ytest_sampled)
    predict_model(dt);
    AUC.append(pull()['AUC'][0])>>> print(AUC)**[Output]:** [0.8182, 0.7483, 0.7812, 0.7887, 0.7799, 0.7967, 0.7812, 0.7209, 0.7958, 0.7404]>>> print(np.array(AUC).mean())**[Output]: 0.77513**

你还没有记录你的实验

如果你没有记录你的实验,现在就应该开始记录。无论你是否打算使用 MLFlow 后台服务器,你都应该记录所有的实验。当你进行任何实验时,你会生成大量的元数据,这些数据很难手动追踪。

PyCaret 的日志记录功能在你使用get_logs函数时会生成一个漂亮、轻量、易于理解的 Excel 电子表格。例如:

**# loading dataset**
from pycaret.datasets import get_data
data = get_data('juice')**# initializing setup**
from pycaret.classification import *s = setup(data, target = 'Purchase', silent = True, log_experiment = True, experiment_name = 'juice1')**# compare baseline models**
best = compare_models()**# generate logs**
get_logs()

图示

get_logs()

在这个非常简短的实验中,我们生成了 3000 多个元数据点(指标、超参数、运行时间等)。想象一下你将如何手动跟踪这些数据点?也许,这在实际操作中是不可能的。幸运的是,PyCaret 提供了一种简单的方法来实现。只需在setup函数中将log_experiment设置为 True 即可。

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

想了解更多关于 PyCaret 的内容,请关注我们的LinkedInYoutube

要了解更多关于 PyCaret 2.2 的更新,请查看发行说明或阅读此公告

重要链接

用户指南

文档

官方教程 示例笔记本

其他资源

想了解某个特定模块吗?

点击下面的链接查看文档和示例。

分类

回归

聚类

异常检测

自然语言处理 关联规则挖掘

简介: Moez Ali 是一名数据科学家,也是 PyCaret 的创始人和作者。

原文。经许可转载。

相关内容:

  • 你对 PyCaret 不了解的 5 件事

  • 使用 Docker 容器将机器学习管道部署到云端

  • GitHub 是你所需的最佳 AutoML 工具

了解更多相关内容