☰
5个PyCaret的常见误解
2026/11/6 3:33:07 网站建设 项目流程

作者|Moez Ali

编译|VK

信息来源, 它来自于这个Data。

它是其中的一个, 是一个开源的、低代码的机器学习库, 它把机器学习工作流自动化了。它是一个端到端的机器学习工具, 也是模型管理工具, 能够加快机器学习实验的周期,并且能够让你更有效率。

与其他那些开放源代码的机器学习库相比, 它是属于那种低代码库类型的, 可以用很少的代码替换掉几百行多的代码内容的, 这样就使得实验在进行开发和运行的时候速度变得非常快效率也很高的了, 是属于指数级增长的那种速度和效率的开发体验。

比你想的要好

就在2020年4月的时候, 那个1.0版本被发布了, 在这个版本里, 函数会把库里面的所有的模型都拿去进行比较工作, 为的就是要把那个平均的交叉验证性能指标给返回出来, 基于这一层基础, 使用者是可以去使用某个功能来把那个性能最好的模型进行训练工作的, 而且还能得到一个可以用来做预测的训练模型的输出结果。

这种操作方式在后来的版本2.0之中被进行了修改。目前的情况是, 它会根据具体的参数设定来返回那个最好的模型。这个用来决定怎么返回的参数的默认值是被设置成了1。既然设置为1, 这就代表在一般情况下,也就是在不特别指定其他条件的时候, 它会直接返回那个最佳的模型。

我们可以把默认的参数的数值修改成数字3, 这样做出来的结果, 就是会拿出那个排在前面的三个模型, 把它们弄成一个列表出来, 这个事儿, 打个比方来说, 就是这样进行的。

你最后返回的那个对象, 它是一个已经接受过训练的模型, 所以在现实情况里面, 其实根本就不用再去调用一些什么函数来对它进行再次训练。要是你自个儿情愿的话, 完全可以使用这些模型去生成诊断用的图像, 甚至还能把这些东西用到预测这个环节上面去来着。比如:

你觉得你自己是不是只能做到那个-learn模型所规定的范围?

我们那边收到了非常多的请求, 这些请求都要求在模型库里面包含那些没有经过学习的模型。好多人是没有意识到这个情况的, 他们不是只被困在了默认模型的那个范围里面的。函数它除了能够接受那个模型库里头面有的模型的ID之外, 它是还能接受那些还没有经过训练的模型对象的。

只要你的目标对象与learn-fit或者API保持兼容, 那么整个流程就能正常展开。就比方说吧, 我们只需要把那个还没有经过训练的部分给导进来, 然后就可以借助这个库里提供的工具来进行后续的建模动作以及最后的性能评估工作。

在把未经训练的模型传递到参数中的那个场合下, 你可以采用这种方法, 于是它就可以正常地进行工作了。

请注意, 所包含的参数里面, 包括了模型库当中那三个尚未进行过训练的模型的标识符, 也就是说回归、决策树以及K近邻这三者, 同时还涵盖了属于该库里面的一个还没有经过训练的对象。另外呢, 需要留意的一点是索引的这项功能主要是用来标明在那些具体的参数内容里所要被输入进去的模型具体位于什么位置。

你不知道的pull

现在的所有训练函数, 这些比如像你说的<>这样的等等, 它们最终都会让你看到一个是得分的网格那个东西出来, 不过请注意, 它们自身其实是并不会把这个得分的网格内容直接给你作为结果返回回来的。

所以在这种情况下的话你就没有办法去把那个得分的网格给存放在什么变量或者文件里面去。但是, 其实呢这里有一个专门叫做pull的这种名字的功能, 它呢实际上是允许你完成这个操作的, 比如接下来就会举出一个简单的例子来说明情况。

你在应用函数的时候, 这个状况也是一样的, 它同样适用于去保存那个分数的网格内容。

现在你能够以一样的方式来进行度量的访问操作了。比如说呢, 你就可以去打造一个循环体系, 这个循环体的作用是用来完成对不同参数的模型进行训练的工作的, 然后你还可以利用下面这段比较简单的代码来建立出一个进行比较用的表格:

在你看来, 它好像是一个黑匣子, 可是事实并不像你觉得的那样。

另外一个很普遍让人搞不清楚状况的地方是, 所有的那些处理步骤都是在背景里面默默完成的, 普通用户根本就没有办法去接触到这些内容。因为大家认为自己是无法看到在执行那个运行设置函数的时候到底发生了哪些具体情况的。然而这其实并不是事实真相, 所以之前以为的那种情况是不存在的。

这里边有两个函数, 能让你去访问里面的东西, 还能去改动后台的那一套完整的内容, 具体的范围能够从训练集一直涵盖到那个模型自身所具备的随机状态的层面。

你只需要调用一下括号中包含help这个单词的那个命令, 就能把有关这些函数的相关文档给调出来进行查看, 通过这种方式你就能知道到底有哪些变量是可以让你去拿来访问的:

你可以去在函数里面调用一下它, 那样就可以看到这个变量了, 比方说你想要去看一看那些转换完了之后的数据集合呢, 那么你就可以这么来写一下内容。

你可以使用函数来对环境变量进行修改。根据你现在对于pull以及函数的了解, 你能够创建一些显得非常复杂的工作流程。一个可能的例子是, 对保留集进行N次重新采样。通过这样的方式, 可以评估出平均性能指标,从而不需要只依赖于单个的保留集。

import numpy as np

Xtest = 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

你没有保存你的实验

如果你在之前没有保存你的实验的情况之下, 那么你就应当立刻去启动把它们进行保存的这个动作。至于说你是否确实打算要去使用那个后端服务器, 这都并不重要, 你依然还需要把各个所有的实验给记录下来。

这是因为当你去执行任何一种形式上的实验过程的时候, 你肯定会生成出来非常多的属于元数据类别的信息内容, 对于这么多数量信息而言, 它们本身就是完全不可能通过依靠人工去逐一逐个地进行跟踪和管理的。

这个软件的日志处理功能会在你调用程序里面的那种小工具的时候, 自动去创建一个Excel文件格式的电子表格。这个生成的电子表格的特点是外表好看, 而且占用资源比较少, 内容方面是非常容易让人看懂的那种情况。举一个具体的例子来说:

# 加载数据集

from pycaret.datasets import get_data

data = get_data('juice')

# 初始化setup

from pycaret.classification import *

s = setup(data, target = 'Purchase', silent = True, log_experiment = True, experiment_name = 'juice1')

# 比较基线模型

best = compare_models()

# 生成日志

get_logs()

在这个周期特别短暂的一次实验活动里, 大家已经拿到了超出三千之数的那一类数据项目, 这些东西涵盖指标参数以及运行时候的参数等等诸多方面, 请你设想一下要是完全依靠人工手段去追踪记录这么多数据单元会是一种什么样的状况, 搞不好这事儿基本上就没有办法实现, 好在目前有现成的办法能够帮忙处理这个麻烦事, 你只需要在进行配置的时候把对应的选项调成开启状态就好。

如果您想要进一步了解关于.2版本里面所有的更新都有哪些内容的话, 那么您可以去查阅相关的发行说明文档, 又或者选择阅读一下这个公告详情。

重要链接:

用户指南:

文档:

这是一个关于官方的教程。

示例:

这里还有一些其他的资源。

想了解特定模块吗

请点击下方提供的那个链接, 这样做的话你就能看到相关的文档以及已经写好的示例了。

分类:

回归:

聚类:

异常检测:

自然语言处理:

关联规则挖掘:

原文链接:

请大家关注一下磐创AI博客站, 这个是应该做的。

机器学习中文官方文档:

请大家, 要多多关注那一个被称为磐创博客资源汇总站的这样一个地方。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询