网站整体运营思路,业余从事网站开发,兰州起点网站建设公司,网站建设需要多少天工具系列:PyCaret介绍_模型训练详细教程 PyCaret初始化 setup任务#xff1a;自动推断数据类型 必需参数默认转换实验记录模型验证GPU支持示例 PyCaret模型训练 compare_models 示例更改排序顺序只比较几个模型返回多个模型设置预算时间设置概率阈值禁用交叉验证在集群上进行…工具系列:PyCaret介绍_模型训练详细教程 PyCaret初始化 setup任务自动推断数据类型 必需参数默认转换实验记录模型验证GPU支持示例 PyCaret模型训练 compare_models 示例更改排序顺序只比较几个模型返回多个模型设置预算时间设置概率阈值禁用交叉验证在集群上进行分布式训练 create_model 示例更改折叠参数模型库带有自定义参数的模型访问评分表格禁用交叉验证返回训练分数设置概率阈值在循环中训练模型训练自定义模型编写自己的模型 PyCaret模型优化 tune_model 示例增加迭代次数选择指标传递自定义网格更改搜索算法访问调谐器自动选择更好的模型 ensemble_model 示例更改fold参数方法Bagging方法Boosting选择方法增加估计器数量自动选择更好的模型 blend_models 示例改变折叠参数动态输入估计器改变方法更改权重自动选择更好的模型 stack_models 示例更改折叠参数动态输入估计器改变方法更改元模型重新堆叠 optimize_threshold 示例 calibrate_model 示例校准前后 PyCaret部署 预测模型 Hold-out预测未见过的数据预测按类别的概率设置概率阈值监控数据漂移 finalize_modeldeploy_model AWSGCPAzure save_modelload_modelsave_configload_configconvert_modelcreate_apicreate_dockercreate_app PyCaret其他 pull模型get_configget_metricsadd_metricremove_metricautomlget_logsget_system_logs
1. PyCaret初始化
返回目录
1.1 setup
返回目录
此函数在PyCaret中初始化实验并根据函数中传递的所有参数创建转换流水线。在执行任何其他函数之前必须调用设置函数。它接受两个必需参数data和target。所有其他参数都是可选的。
示例
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)
# 使用pycaret的classification模块初始化一个分类器clf1将数据集diabetes作为数据源将目标变量设置为‘Class variable’# 比较不同模型的性能
compare_models()
# 使用pycaret的classification模块比较不同的分类模型的性能并输出结果任务自动推断数据类型
返回目录
当你运行设置函数时PyCaret会自动推断数据集中所有变量的数据类型。如果推断正确你可以按回车键继续。 一旦您按下回车键继续您将看到如下输出
所有的预处理和数据转换都在setup函数中进行配置。有很多选项可供选择从数据清洗到特征工程都可以进行配置。要了解更多关于所有可用的预处理的信息请参阅此页面。
**注意**如果您不想看到数据类型确认信息可以在setup中传递silentTrue来运行它以避免任何中断。
必需参数
返回目录
在setup函数中有很多参数但只有两个是非可选的。 data: pandas.DataFrame\ ****形状为(n_samples, n_features)的数据框其中n_samples是样本数量n_features是特征数量。 target: str\ ****要传递的目标列的名称以字符串形式。
**注意**对于clustering、anomaly detection或NLP等无监督模块不需要目标参数。
默认转换
返回目录
在setup中的所有预处理步骤只是一个True或False的标志。例如如果您想要对特征进行缩放您将需要在setup函数中传递normalizeTrue。然而默认情况下会发生三件事 缺失值填充 独热编码 训练集-测试集拆分
实验记录
返回目录
PyCaret使用MLflow进行实验跟踪。可以通过在setup中启用一个参数来自动跟踪所有指标、超参数和其他关于机器学习模型的重要信息。
示例
# 加载数据集
from pycaret.datasets import get_data
data get_data(diabetes)# 初始化设置
from pycaret.classification import *
# 创建一个分类器对象clf1并使用setup函数进行初始化设置
# data要使用的数据集
# target目标变量的名称
# log_experiment是否记录实验日志
# experiment_name实验的名称
clf1 setup(data, targetClass variable, log_experimentTrue, experiment_namediabetes1)# 模型训练
# 使用compare_models函数比较不同模型的性能并选择最佳模型
best_model compare_models()为了初始化 MLflow 服务器您必须从笔记本或命令行中运行以下命令。一旦服务器初始化完成您可以在 https://localhost:5000 上跟踪您的实验。
# 初始化服务器
!mlflow ui# 这行代码是用来启动MLflow的用户界面UI的命令。MLflow是一个开源的机器学习平台可以帮助我们管理、追踪和部署机器学习模型。通过运行这行代码我们可以在本地启动MLflow的用户界面以便于我们查看和管理实验、模型和运行结果。了解在PyCaret中的实验跟踪请参见此页面。
模型验证
返回目录
在setup函数中有许多参数与预处理或数据转换无直接关系但它们作为模型验证和选择策略的一部分使用例如train_size、fold_strategy或交叉验证的fold数量。要了解setup中所有模型验证和选择设置的更多信息请参见此页面。
GPU支持
返回目录
使用PyCaret您可以在GPU上训练模型并将工作流程加速10倍。要在GPU上训练模型只需在setup函数中传递use_gpu True。API的使用没有变化但在某些情况下必须安装其他库因为它们未与默认版本或完整版本一起安装。要了解有关GPU支持的更多信息请参见此页面。
示例
返回目录
要查看PyCaret的其他模块中使用setup的用法请参见以下内容 分类 回归 聚类 异常检测 自然语言处理 关联规则挖掘
**注意**setup函数在Python中使用全局环境变量。因此如果在同一脚本中两次运行setup函数则会覆盖先前的实验。PyCaret的下一个主要版本将包括一个新的面向对象的API通过类实例可以创建多个实例。 description: PyCaret中的训练函数 Train
返回目录
compare_models
返回目录
此函数使用交叉验证训练和评估模型库中所有可用的估计器的性能。此函数的输出是具有平均交叉验证分数的评分网格。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。
示例
返回目录
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 比较模型
best compare_models()compare_models函数根据sort参数中定义的标准仅返回表现最佳的模型。对于分类实验标准是Accuracy而对于回归实验标准是R2。您可以通过传递基于您想要进行模型选择的指标的名称来更改sort顺序。
更改排序顺序
返回目录
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 比较模型
best compare_models(sort F1) # 按F1值对模型进行排序返回最佳模型注意现在评分网格的排序顺序已经改变并且此函数返回的最佳模型是基于F1选择的。
# 打印输出变量best的值
print(best)只比较几个模型
返回目录
如果您不想在整个模型库上进行赛马比赛您可以使用include参数仅比较您选择的几个模型。
# 导入数据集
# 使用get_data函数从PyCaret库中导入diabetes数据集该数据集是一个糖尿病患者的数据集包含多个特征和一个目标变量。
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
# 使用setup函数来初始化PyCaret的分类任务设置将数据集diabetes作为输入并指定目标变量为Class variable。
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 比较模型
# 使用compare_models函数来比较不同的分类模型包括逻辑回归lr、决策树dt和轻量级梯度提升机lightgbm。
# 返回的best变量将包含最佳模型的信息。
best compare_models(include [lr, dt, lightgbm])或者您还可以使用exclude参数。这将比较除了传递给exclude参数的模型之外的所有模型。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 比较模型
best compare_models(exclude [lr, dt, lightgbm])# 导入get_data函数从pycaret.datasets模块中获取名为diabetes的数据集并将其赋值给变量diabetes# 从pycaret.classification模块中导入所有内容并将其赋值给变量clf1。使用setup函数对数据集diabetes进行初始化设置指定目标变量为Class variable# 使用compare_models函数比较模型的性能并将最佳模型赋值给变量best。在比较模型时排除lr、dt和lightgbm三个模型。返回多个模型
返回目录
默认情况下compare_models只返回表现最好的模型但如果你想要你可以得到前N个模型而不仅仅是一个模型。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 比较模型
# 选择3个最佳模型
best compare_models(n_select 3)请注意结果没有变化但是如果你检查变量 best 它现在将包含一个包含前三个模型的列表而不仅仅是之前看到的一个模型。
# 定义一个变量best类型为list
type(best)list# 打印变量best的值
print(best)设置预算时间
返回目录
如果您时间紧迫并希望为此函数设置一个固定的预算时间您可以通过设置budget_time参数来实现。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 比较模型
# 使用0.5秒的时间预算来比较模型
best compare_models(budget_time 0.5)设置概率阈值
返回目录
在进行二元分类时您可以更改概率阈值或硬标签的截断值。默认情况下所有分类器都使用0.5作为默认阈值。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 比较模型
best compare_models(probability_threshold 0.25)请注意除了AUC之外所有的指标现在都不同了。AUC不会改变因为它不依赖于硬标签其他所有指标都依赖于硬标签现在使用probability_threshold0.25来获取硬标签。
**注意**此参数仅适用于PyCaret的分类模块。
禁用交叉验证
返回目录
如果您不想使用交叉验证来评估模型而只是训练它们并在测试/保留集上查看指标您可以将cross_validationFalse。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 比较模型
best compare_models(cross_validationFalse)输出如下
输出结果看起来非常相似但是如果你仔细观察指标现在是不同的这是因为这些指标是在测试/留出集上计算的而不是平均交叉验证分数。
**注意**此函数仅适用于分类和回归模块。
在集群上进行分布式训练
返回目录
为了在大型数据集上进行扩展您可以使用一个名为parallel的参数在分布式模式下在集群上运行compare_models函数。它利用Fugue抽象层在Spark或Dask集群上运行compare_models。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable, n_jobs 1)# 创建Pyspark会话
from pyspark.sql import SparkSession
spark SparkSession.builder.getOrCreate()# 导入并行后端
from pycaret.parallel import FugueBackend# 比较模型
best compare_models(parallel FugueBackend(spark))请注意在使用本地 Spark 进行测试时我们需要在设置中设置 n_jobs 1因为某些模型已经尝试使用所有可用的核心并行运行这些模型可能会由于资源争用而导致死锁。
对于 Dask我们可以在 FugueBackend 中指定 dask它将获取可用的 Dask 客户端。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable, n_jobs 1)# 导入并行后端
from pycaret.parallel import FugueBackend# 比较模型
best compare_models(parallel FugueBackend(dask))# 以上代码是使用PyCaret库进行机器学习任务的示例代码。# 首先我们从pycaret.datasets模块中导入get_data函数并使用diabetes作为参数来获取一个名为diabetes的数据集。# 然后我们从pycaret.classification模块中导入所有内容并使用setup函数来初始化设置。在这里我们将diabetes数据集作为输入数据并指定Class variable作为目标变量。n_jobs参数设置为1表示使用单个进程进行计算。# 接下来我们从pycaret.parallel模块中导入FugueBackend类该类是一个并行计算后端。# 最后我们使用compare_models函数来比较不同的模型。parallel参数设置为FugueBackend(dask)表示使用FugueBackend作为并行计算后端并使用dask作为后端的实现。比较结果将存储在best变量中。create_model
返回目录
该函数使用交叉验证训练和评估给定估计器的性能。该函数的输出是一个包含每个折叠的CV得分的评分表。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。可以使用models函数访问所有可用的模型。
示例
返回目录
要获取完整示例和与分布式执行相关的其他功能请查看此示例。该示例还展示了如何实时获取排行榜。在分布式设置中这涉及设置一个RPCClient但Fugue简化了这一过程。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练逻辑回归模型
lr create_model(lr)这个函数通过折叠显示性能指标并显示每个指标的平均值和标准差并返回训练好的模型。默认情况下它使用10折可以在setup函数中全局更改也可以在create_model中局部更改。
更改折叠参数
返回目录
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练逻辑回归模型
lr create_model(lr, fold 5)模型库
返回目录
要查看任何模块中可用模型的列表可以使用 models 函数。
使用此函数返回的模型与上面的相同但是使用了 5 折交叉验证进行性能评估。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 查看可用的模型
models()带有自定义参数的模型
返回目录
当您只运行create_model(dt)时它将使用所有默认的超参数设置来训练决策树。如果您想要更改它只需在create_model函数中传递属性即可。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练决策树模型
dt create_model(dt, max_depth 5)# 输出决策树模型的参数
print(dt)访问评分表格
返回目录
在使用create_model之后您所看到的性能指标/评分表格只是显示的并不会返回。因此如果您想要以pandas.DataFrame的形式访问该表格您需要在create_model之后使用pull命令。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练决策树模型
dt create_model(dt, max_depth 5)# 获取评分结果
dt_results pull()
print(dt_results)# 检查数据类型
type(dt_results)pandas.core.frame.DataFrame# 选择只包含均值和标准差的数据
dt_results.loc[[Mean, SD]]禁用交叉验证
返回目录
如果您不想使用交叉验证来评估模型而只是训练它们并在测试/保留集上查看指标您可以设置 cross_validationFalse。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练模型不使用交叉验证
lr create_model(lr, cross_validation False)这些是测试/保留集上的度量指标。这就是为什么您只能看到一行而不是原始输出中的12行。当您禁用cross_validation时模型只会在整个训练数据集上进行一次训练并使用测试/保留集进行评分。
**注意**此函数仅适用于分类和回归模块。
返回训练分数
返回目录
默认的评分网格显示了按折叠在验证集上的性能指标。如果您想要查看按折叠在训练集上的性能指标以检查过拟合/欠拟合您可以使用return_train_score参数。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练模型不使用交叉验证
lr create_model(lr, return_train_score True)设置概率阈值
返回目录
在进行二元分类时您可以更改概率阈值或硬标签的截断值。默认情况下所有分类器都使用0.5作为默认阈值。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 使用0.25的概率阈值训练模型
lr create_model(lr, probability_threshold 0.25)# 打印模型
print(lr)在循环中训练模型
返回目录
您可以在循环中使用create_model函数来训练多个模型甚至是使用不同配置训练相同的模型并比较它们的结果。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 在循环中训练模型
# 创建一个列表lgbs其中包含了使用不同学习率的lightgbm模型
# 学习率的取值范围是从0到1步长为0.1
lgbs [create_model(lightgbm, learning_rate i) for i in np.arange(0,1,0.1)]type(lgbs)listlen(lgbs)9如果您想跟踪指标就像大多数情况下一样这是您可以做的方式。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 开始循环
models [] # 存储模型
results [] # 存储结果for i in np.arange(0.1,1,0.1): # 在0.1到1之间以0.1为步长进行循环model create_model(lightgbm, learning_rate i) # 创建lightgbm模型学习率为imodel_results pull().loc[[Mean]] # 提取模型结果中的Mean部分models.append(model) # 将模型添加到models列表中results.append(model_results) # 将模型结果添加到results列表中results pd.concat(results, axis0) # 将results列表中的结果按行拼接起来
results.index np.arange(0.1,1,0.1) # 将结果的索引设置为0.1到1之间以0.1为步长的数值
results.plot() # 绘制结果的图形化展示训练自定义模型
返回目录
您可以使用自己的自定义模型进行训练或使用其他不属于 pycaret 的库中的模型。只要它们的 API 与 sklearn 保持一致就可以轻松使用。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 导入自定义模型
from gplearn.genetic import SymbolicClassifier
sc SymbolicClassifier()# 训练自定义模型
sc_trained create_model(sc)# 创建了一个名为sc_trained的变量用于存储训练好的符号分类器模型
sc_trained gplearn.genetic.SymbolicClassifier# 打印sc_trained的类型可以看到它是gplearn.genetic.SymbolicClassifier类的一个实例
print(type(sc_trained))# 打印sc_trained的值即训练好的符号分类器模型的详细信息
print(sc_trained)编写自己的模型
返回目录
您也可以编写自己的类其中包含fit和predict函数。PyCaret将与此兼容。以下是一个简单的示例
# 加载数据集
from pycaret.datasets import get_data
insurance get_data(insurance) # 初始化设置
from pycaret.regression import *
reg1 setup(data insurance, target charges)# 创建自定义估计器
import numpy as np
from sklearn.base import BaseEstimator
class MyOwnModel(BaseEstimator):def __init__(self):self.mean 0def fit(self, X, y):self.mean y.mean() # 计算目标变量y的均值return selfdef predict(self, X):return np.array(X.shape[0]*[self.mean]) # 返回一个长度为X的样本数量的数组每个元素都是目标变量y的均值# 创建一个实例
my_own_model MyOwnModel()# 训练模型
my_model_trained create_model(my_own_model) # 使用自定义的估计器创建并训练模型description: 在PyCaret中的MLOps和部署相关的功能 description: 在PyCaret中的优化功能 Pycaret模型优化
返回目录
tune_model
返回目录
该函数用于调整模型的超参数。该函数的输出是一个通过交叉验证得到的得分网格。根据optimize参数中定义的指标选择最佳模型。可以使用get_metrics函数访问交叉验证期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。
示例
返回目录
# 导入数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(data boston, target medv)# 训练模型
dt create_model(dt)# 调整模型
tuned_dt tune_model(dt)比较超参数。
# 打印默认模型
print(dt)# 打印调整后的模型
print(tuned_dt)增加迭代次数
返回目录
在一天结束时进行的超参数调整是一种受迭代次数限制的优化最终取决于您可用的时间和资源。迭代次数由n_iter定义。默认情况下它设置为10。
# 导入数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(data boston, target medv)# 训练模型
dt create_model(dt)# 调整模型
tuned_dt tune_model(dt, n_iter 50)10次和50次迭代的比较 选择指标
返回目录
当你调整模型的超参数时你必须知道要优化哪个指标。这可以在optimize参数下定义。默认情况下对于分类实验它被设置为Accuracy对于回归实验它被设置为R2。
# 加载数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(data boston, target medv)# 训练模型
dt create_model(dt)# 调整模型
tuned_dt tune_model(dt, optimize MAE)传递自定义网格
返回目录
PyCaret已经为库中的所有模型定义了超参数的调整网格。然而如果您希望您可以通过使用custom_grid参数传递自定义网格来定义自己的搜索空间。
# 导入数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(boston, target medv)# 训练模型
dt create_model(dt)# 定义搜索空间
params {max_depth: np.random.randint(1, (len(boston.columns)*.85),20), # 随机生成20个max_depth值范围为1到数据集列数的85%max_features: np.random.randint(1, len(boston.columns),20), # 随机生成20个max_features值范围为1到数据集列数min_samples_leaf: [2,3,4,5,6]} # 给定5个min_samples_leaf值# 调整模型
tuned_dt tune_model(dt, custom_grid params) # 使用定义的搜索空间对决策树模型进行调优更改搜索算法
返回目录
PyCaret与许多不同的超参数调整库无缝集成。这使您可以访问许多不同类型的搜索算法包括随机搜索、贝叶斯搜索、optuna、TPE等等。只需更改一个参数即可实现所有这些功能。默认情况下PyCaret使用sklearn的RandomGridSearch您可以通过在tune_model函数中使用search_library和search_algorithm参数来更改。
# 加载数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(boston, target medv)# 训练模型
dt create_model(dt)# 使用sklearn调整模型
tune_model(dt)# 使用optuna调整模型
tune_model(dt, search_library optuna)# 使用scikit-optimize调整模型
tune_model(dt, search_library scikit-optimize)# 使用tune-sklearn调整模型
tune_model(dt, search_library tune-sklearn, search_algorithm hyperopt)访问调谐器
返回目录
默认情况下PyCaret的tune_model函数仅返回调谐器选择的最佳模型。有时您可能需要访问调谐器对象因为它可能包含重要属性您可以使用return_tuner参数。
# 导入数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(boston, target medv)# 训练模型
dt create_model(dt)# 调整模型并返回调整器
tuned_model, tuner tune_model(dt, return_tunerTrue)type(tuned_model), type(tuner)# 打印tuner
print(tuner)自动选择更好的模型
返回目录
通常情况下tune_model函数并不能提高模型的性能。事实上它可能会使性能比默认超参数的模型更差。当您不是在Notebook中进行实时实验而是在运行一个包含create_model -- tune_model或compare_models -- tune_model工作流程的Python脚本时这可能会成为一个问题。为了解决这个问题您可以使用choose_better函数。当设置为True时它将始终返回一个性能更好的模型这意味着如果超参数调整不能提高性能它将返回输入的模型。
# 加载数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(boston, target medv)# 训练模型
dt create_model(dt)# 调整模型
dt tune_model(dt, choose_better True)注意 choose_better 不会影响屏幕上显示的评分网格。评分网格将始终显示调谐器选择的最佳模型的性能而不管输出性能是否小于输入性能。
ensemble_model
返回目录
此函数对给定的估计器进行集成。此函数的输出是一个带有CV分数的评分网格。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。
示例
返回目录
# 导入数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(boston, target medv)# 训练模型
dt create_model(dt)# 集成模型
bagged_dt ensemble_model(dt)type(bagged_dt)sklearn.ensemble._bagging.BaggingRegressorprint(bagged_dt) 更改fold参数
返回目录
# 加载数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(boston, target medv)# 训练模型
dt create_model(dt)# 集成模型
bagged_dt ensemble_model(dt, fold 5)方法Bagging
返回目录
Bagging也称为_自助聚合_ 是一种机器学习集成元算法旨在提高统计分类和回归中使用的机器学习算法的稳定性和准确性。它还可以减少方差并帮助避免过拟合。虽然它通常应用于决策树方法但它可以与任何类型的方法一起使用。Bagging是模型平均方法的特例。
使用此方法返回的模型与上面相同但是使用5倍交叉验证进行性能评估。
方法Boosting
返回目录
Boosting是一种集成元算法主要用于减少监督学习中的偏差和方差。Boosting属于机器学习算法家族可以将弱学习器转化为强学习器。弱学习器被定义为与真实分类仅略微相关的分类器它可以比随机猜测更好地标记示例。相比之下强学习器是与真实分类任意相关的分类器。
选择方法
返回目录
您可以通过 ensemble_model 中的 method 参数来定义两种可能的方式来集成您的机器学习模型。
# 导入数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(boston, target medv)# 训练模型
dt create_model(dt)# 集成模型
boosted_dt ensemble_model(dt, method Boosting)type(boosted_dt)sklearn.ensemble._weight_boosting.AdaBoostRegressorprint(boosted_dt)增加估计器数量
返回目录
默认情况下PyCaret对于Bagging或Boosting都使用10个估计器。您可以通过更改n_estimators参数来增加估计器的数量。
# 导入数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(boston, target medv)# 训练模型
dt create_model(dt)# 集成模型
ensemble_model(dt, n_estimators 100)自动选择更好的模型
返回目录
往往情况下ensemble_model并不能提高模型的性能。事实上它可能会使性能比没有使用集成的模型更差。当你不是在Notebook中进行实时实验而是有一个运行create_model -- ensemble_model或compare_models -- ensemble_model的Python脚本时这可能会成为一个问题。为了解决这个问题你可以使用choose_better。当设置为True时它将始终返回一个性能更好的模型这意味着如果超参数调整不能改善性能它将返回输入的模型。
# 导入数据集
from pycaret.datasets import get_data
boston get_data(boston) # 初始化设置
from pycaret.regression import *
reg1 setup(boston, target medv)# 训练模型
lr create_model(lr)# 集成模型
ensemble_model(lr, choose_better True)请注意当choose_better True时从ensemble_model返回的模型是一个简单的LinearRegression而不是BaggedRegressor。这是因为在集成之后模型的性能没有改善因此返回输入模型。
blend_models
返回目录
此函数对传入estimator_list参数的选择模型进行软投票/多数规则分类器的训练。此函数的输出是一个包含CV得分的得分网格。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。
示例
返回目录
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K近邻模型# 混合模型
blender blend_models([lr, dt, knn]) # 将逻辑回归、决策树和K近邻模型混合在一起形成一个新的模型type(blender)sklearn.ensemble._voting.VotingClassifierprint(blender)改变折叠参数
返回目录
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K近邻模型# 混合模型
blender blend_models([lr, dt, knn], fold 5) # 将逻辑回归、决策树和K近邻模型混合在一起使用5折交叉验证训练混合模型此模型返回的结果与上述相同但是性能评估是使用5折交叉验证完成的。
动态输入估计器
返回目录
您还可以使用compare_models函数自动生成输入估计器列表。这样做的好处是您无需更改脚本。每次都会使用前N个模型作为输入列表。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 混合模型
# 使用compare_models函数比较多个分类模型的性能并选择其中的前3个模型
# 然后使用blend_models函数将这3个模型进行混合
blender blend_models(compare_models(n_select 3))请注意这里发生了什么。我们将compare_models(n_select 3)作为输入传递给了blend_models。内部发生的是首先执行了compare_models函数然后将前3个模型作为输入传递给了blend_models函数。
# 打印变量blender的值
print(blender)在这个例子中由compare_models评估的前3个模型是LogisticRegression、LinearDiscriminantAnalysis和RandomForestClassifier。
改变方法
返回目录
当method soft时它根据预测概率的总和的argmax来预测类别标签这对于一组经过良好校准的分类器集合是推荐的。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K近邻模型# 混合模型
blender_soft blend_models([lr,dt,knn], method soft) # 使用软投票方法混合逻辑回归、决策树和K近邻模型当 method hard 时它使用输入模型的预测硬标签而不是概率。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K近邻模型# 混合模型
blender_hard blend_models([lr,dt,knn], method hard) # 使用硬投票方法混合逻辑回归、决策树和K近邻模型默认方法设置为auto这意味着它将尝试使用soft方法如果前者不受支持则回退到hard方法当您的输入模型之一不支持predict_proba属性时可能会发生这种情况。
**注意**方法参数仅在分类模块中可用。
更改权重
返回目录
默认情况下当混合它们时所有输入模型都被赋予相等的权重但您可以明确地传递要赋予每个输入模型的权重。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K最近邻模型# 混合模型
blender_weighted blend_models([lr,dt,knn], weights [0.5,0.2,0.3]) # 使用加权平均法混合逻辑回归、决策树和K最近邻模型权重分别为0.5、0.2和0.3你也可以使用 tune_model 来调整混合器的权重。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K最近邻模型# 混合模型
blender_weighted blend_models([lr,dt,knn], weights [0.5,0.2,0.3]) # 将逻辑回归、决策树和K最近邻模型混合设置权重为[0.5,0.2,0.3]# 调整混合模型
tuned_blender tune_model(blender_weighted) # 调整混合模型的超参数# 打印tuned_blender的值
print(tuned_blender)自动选择更好的模型
返回目录
通常情况下blend_models 不会提高模型的性能。事实上它可能会使性能比混合模型更差。当您不是在笔记本中进行主动实验而是有一个运行 compare_models -- blend_models 工作流的 Python 脚本时这可能会成为一个问题。为了解决这个问题您可以使用 choose_better。当设置为 True 时它将始终返回性能更好的模型这意味着如果混合模型不会提高性能它将返回单个性能最佳的输入模型。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K最近邻模型# 混合模型
blend_models([lr,dt,knn], choose_better True) # 将逻辑回归、决策树和K最近邻模型混合在一起选择最好的模型进行预测注意由于choose_betterTrue此函数返回的最终模型是LogisticRegression而不是VotingClassifier因为在所有给定的输入模型和混合器中逻辑回归的性能最优化。
stack_models
返回目录
此函数在estimator_list参数中传递的选择估计器上训练元模型。此函数的输出是一个带有CV得分的评分网格。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。
示例
返回目录
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K近邻模型# 堆叠模型
stacker stack_models([lr, dt, knn]) # 将逻辑回归、决策树和K近邻模型堆叠起来更改折叠参数
返回目录
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K近邻模型# 堆叠模型
stacker stack_models([lr, dt, knn], fold 5) # 将逻辑回归、决策树和K近邻模型堆叠起来使用5折交叉验证训练堆叠模型动态输入估计器
返回目录
您还可以使用compare_models函数自动生成输入估计器列表。这样做的好处是您根本不需要更改脚本。每次都会使用前N个模型作为输入列表。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 堆叠模型
# 使用compare_models函数选择最佳的3个模型进行堆叠
stacker stack_models(compare_models(n_select 3))请注意这里发生了什么。我们将compare_models(n_select 3作为输入传递给了stack_models。内部发生的是compare_models函数首先被执行然后将前3个模型作为输入传递给stack_models函数。
# 输出变量stacker的值
print(stacker)在这个例子中由compare_models评估的前3个模型是LogisticRegression、RandomForestClassifier和LGBMClassifier。
改变方法
返回目录
您可以明确选择几种不同的方法来进行堆叠或者传递auto以自动确定。当设置为auto时它将按顺序调用每个模型的predict_proba、decision_function或predict函数。或者您可以明确定义方法。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K近邻模型# 堆叠模型
stacker stack_models([lr, dt, knn], method predict) # 将逻辑回归、决策树和K近邻模型堆叠起来使用预测方法进行堆叠更改元模型
返回目录
当没有显式传递 meta_model 时分类实验使用 LogisticRegression回归实验使用 LinearRegression。您也可以传递一个特定的模型作为元模型。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K近邻模型# 训练元模型
lightgbm create_model(lightgbm) # 创建LightGBM模型# 堆叠模型
stacker stack_models([lr, dt, knn], meta_model lightgbm) # 使用逻辑回归、决策树和K近邻模型作为基模型使用LightGBM作为元模型# 打印stacker的最终估计器
print(stacker.final_estimator_)重叠
返回目录
有两种方法可以堆叠模型。(i) 只使用输入模型的预测作为元模型的训练数据(ii) 使用预测和原始训练数据来训练元模型。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练几个模型
lr create_model(lr) # 创建逻辑回归模型
dt create_model(dt) # 创建决策树模型
knn create_model(knn) # 创建K近邻模型# 堆叠模型
stacker stack_models([lr, dt, knn], restack False) # 将逻辑回归、决策树和K近邻模型堆叠在一起不进行重新堆叠optimize_threshold
返回目录
该函数用于优化训练模型的概率阈值。它使用grid_interval参数中定义的步长在不同的probability_threshold上迭代性能指标。该函数将显示每个概率阈值下的性能指标图并根据optimize参数下定义的指标返回最佳模型。
示例
返回目录
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练模型
knn create_model(knn)# 优化阈值
optimized_knn optimize_threshold(knn)# 输出优化后的KNN模型
print(optimized_knn)calibrate_model
返回目录
该函数使用等温或逻辑回归来校准给定模型的概率。该函数的输出是一个带有每个折叠的CV分数的评分网格。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。
示例
返回目录
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 训练模型
dt create_model(dt)# 校准模型
calibrated_dt calibrate_model(dt)# 打印calibrated_dt的值
print(calibrated_dt)校准前后
返回目录 部署
返回目录
预测模型
返回目录
该函数使用训练好的模型生成标签。当data为None时它会在holdout数据集上预测标签和得分。
Hold-out预测
返回目录
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 创建模型
xgboost create_model(xgboost)# 在保留集上进行预测
predict_model(xgboost)未见过的数据预测
返回目录
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 创建模型
xgboost create_model(xgboost)# 对新数据进行预测
new_data diabetes.copy()
new_data.drop(Class variable, axis 1, inplace True)
predict_model(xgboost, data new_data)按类别的概率
返回目录
注意 这仅适用于分类用例。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 创建模型
xgboost create_model(xgboost)# 对新数据进行预测
new_data diabetes.copy()
new_data.drop(Class variable, axis 1, inplace True)
predict_model(xgboost, raw_score True, data new_data) 设置概率阈值
返回目录
注意 这仅适用于分类用例仅限二分类。
将预测概率转换为类标签的阈值。除非设置了此参数否则它将默认为模型创建时设置的值。如果没有设置则对于所有分类器默认值将为0.5。仅适用于二分类。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 创建模型
xgboost create_model(xgboost)# 设置概率阈值为0.3
predict_model(xgboost, probability_threshold 0.3)在留出数据上比较不同阈值的结果 监控数据漂移
返回目录
可以使用drift_report参数生成交互式漂移报告。
# 导入必要的库
from pycaret.datasets import get_data # 从pycaret.datasets库中导入get_data函数用于获取数据集
from pycaret.classification import * # 从pycaret.classification库中导入所有函数和类# 加载数据集
diabetes get_data(diabetes) # 使用get_data函数获取名为diabetes的数据集并将其赋值给diabetes变量# 初始化设置
clf1 setup(datadiabetes, targetClass variable) # 使用setup函数对数据集进行初始化设置将数据集diabetes作为输入数据Class variable作为目标变量# 创建模型
xgboost create_model(xgboost) # 使用create_model函数创建一个名为xgboost的模型并将其赋值给xgboost变量# 在新数据上进行预测
predict_model(xgboost, drift_reportTrue) # 使用predict_model函数对新数据进行预测并生成漂移报告finalize_model
返回目录
该函数在整个数据集上包括保留集训练给定的模型。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 创建模型
rf create_model(rf)# 完成模型
finalize_model(rf)deploy_model
返回目录
该函数将整个机器学习流程部署到云端。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 创建模型
lr create_model(lr)# 完成模型
final_lr finalize_model(lr)# 部署模型
deploy_model(final_lr, model_name lr_aws, platform aws, authentication { bucket : pycaret-test })
# 将模型部署到AWS平台模型名称为lr_aws认证方式为使用pycaret-test桶。AWS
返回目录
在将模型部署到AWS S3‘aws’之前必须使用命令行界面配置环境变量。要配置AWS环境变量请在python命令行中输入aws configure命令。以下信息是必需的可以使用您的Amazon控制台帐户的身份和访问管理IAM门户生成 AWS访问密钥ID AWS秘密密钥访问 默认区域名称可以在AWS控制台的全局设置下看到 默认输出格式必须留空
GCP
返回目录
要在Google Cloud Platform‘gcp’上部署模型必须使用命令行或GCP控制台创建项目。创建项目后必须创建服务帐户并将服务帐户密钥下载为JSON文件以在本地环境中设置环境变量。
了解更多信息https://cloud.google.com/docs/authentication/production
Azure
返回目录
要在Microsoft Azure‘azure’上部署模型必须在本地环境中设置用于连接字符串的环境变量。转到Azure门户上的存储帐户设置以访问所需的连接字符串。
AZURE_STORAGE_CONNECTION_STRING作为环境变量必需
了解更多信息https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python?toc%2Fpython%2Fazure%2FTOC.json
save_model
返回目录
此函数将转换流水线和训练模型对象保存到当前工作目录中以pickle文件的形式供以后使用。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 创建模型
dt create_model(dt)# 保存流水线
save_model(dt, dt_pipeline)load_model
返回目录
该函数用于加载之前保存的管道模型。
# 导入数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 创建模型
dt create_model(dt)# 保存流水线
save_model(dt, dt_pipeline)# 加载流水线
load_model(dt_pipeline)save_config
返回目录
该函数将所有全局变量保存到一个pickle文件中以便以后在不重新运行设置函数的情况下恢复。
# 加载数据集
from pycaret.datasets import get_data
diabetes get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data diabetes, target Class variable)# 保存配置
save_config(my_config)load_config
返回目录
该函数将pickle文件中的全局变量加载到Python环境中。
# 导入load_config函数
from pycaret.classification import load_config# 调用load_config函数加载名为my_config的配置文件
load_config(my_config)convert_model
返回目录
这个函数将训练好的机器学习模型的决策函数转换成不同的编程语言比如Python、C、Java、Go、C#等。如果你想要将模型部署到无法安装正常Python环境来支持模型推断的环境中这个函数非常有用。
# 加载数据集
from pycaret.datasets import get_data
juice get_data(juice)# 初始化设置
from pycaret.classification import *
exp_name setup(datajuice, targetPurchase)# 训练模型
lr create_model(lr)# 转换模型
convert_model(lr, java)create_api
返回目录
此函数接受一个输入模型并创建一个用于推理的POST API。它只创建API不会自动运行。要运行API您必须使用!python运行Python文件。
# 加载数据集
from pycaret.datasets import get_data
juice get_data(juice)# 初始化设置
from pycaret.classification import *
exp_name setup(datajuice, targetPurchase)# 训练模型
lr create_model(lr)# 创建API
create_api(lr, lr_api)# 运行API
!python lr_api.py一旦您使用!python命令初始化API您可以在localhost:8000/docs上看到服务器。
create_docker
返回目录
该函数用于创建一个Dockerfile和requirements.txt用于将API端点投入生产。
# 导入数据集
from pycaret.datasets import get_data
juice get_data(juice)# 初始化设置
from pycaret.classification import *
exp_name setup(data juice, target Purchase)# 训练模型
lr create_model(lr)# 创建API
create_api(lr, lr_api)# 创建Docker
create_docker(lr_api)你可以看到为你创建了两个文件。
create_app
返回目录
此函数创建一个基本的gradio应用程序进行推理。稍后将扩展为其他应用程序类型如Streamlit。
# 加载数据集
from pycaret.datasets import get_data
juice get_data(juice)# 初始化设置
from pycaret.classification import *
exp_name setup(data juice, target Purchase)# 训练模型
lr create_model(lr)# 创建应用程序
create_app(lr)描述PyCaret中的其他功能 PyCaret其他
返回目录
pull
返回目录
返回最后打印的评分网格。在任何训练函数之后使用pull函数将评分网格存储在pandas.DataFrame中。
示例
# 加载数据集
from pycaret.datasets import get_data
data get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data, target Class variable)# 比较模型
best_model compare_models()# 获取评分表
results pull()# 导入pandas库用于处理数据
import pandas as pd# 创建一个DataFrame对象命名为results
results pd.DataFrame()# 查看results的类型
type(results)
# 输出结果为pandas.core.frame.DataFrame表示results是一个DataFrame类型的对象模型
返回目录
返回一个包含导入模型库中所有可用模型的表格。
示例
# 加载数据集
from pycaret.datasets import get_data # 导入get_data函数用于获取数据集
data get_data(diabetes) # 使用get_data函数获取名为diabetes的数据集并将其赋值给变量data# 初始化设置
from pycaret.classification import * # 导入pycaret.classification模块中的所有函数和类
clf1 setup(data, targetClass variable) # 使用setup函数对数据进行初始化设置设置目标变量为Class variable并将结果赋值给变量clf1# 检查模型库
models() # 调用models函数显示可用的模型库如果你想看到比这更多的信息你可以传递 internalTrue。
# 加载数据集
from pycaret.datasets import get_data # 导入get_data函数用于获取数据集
data get_data(diabetes) # 使用get_data函数获取名为diabetes的数据集并将其赋值给变量data# 初始化设置
from pycaret.classification import * # 导入pycaret.classification模块中的所有函数和类
clf1 setup(data, targetClass variable) # 使用setup函数对数据进行初始化设置设置目标变量为Class variable并将设置结果赋值给变量clf1# 检查模型库
models(internalTrue) # 调用models函数查看可用的模型库并将internal参数设置为True以显示内部模型库的详细信息get_config
返回目录
该函数用于检索在初始化setup函数时创建的全局变量。
示例
# 导入所需的库
from pycaret.datasets import get_data # 导入获取数据集的函数
from pycaret.classification import * # 导入分类模块中的所有函数# 加载数据集
data get_data(diabetes) # 获取名为diabetes的数据集# 初始化设置
clf1 setup(data, targetClass variable) # 设置数据集和目标变量为Class variable# 获取X_train
get_config(X_train) # 获取配置中的X_train参数值set_config函数重置全局变量。
示例
# 导入数据集
from pycaret.datasets import get_data
data get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data, target Class variable, session_id 123)# 重置环境种子
set_config(seed, 999)get_metrics
返回目录
返回度量容器中所有可用度量的表格。所有这些度量都用于交叉验证。
# 导入数据集
from pycaret.datasets import get_data
data get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data, target Class variable, session_id 123)# 获取评估指标
get_metrics()add_metric
返回目录
向度量容器中添加自定义度量。
# 加载数据集
from pycaret.datasets import get_data
data get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data, targetClass variable, session_id123)# 添加评估指标
from sklearn.metrics import log_loss
add_metric(logloss, Log Loss, log_loss, greater_is_betterFalse)现在如果您检查度量容器
# 定义一个函数get_metrics用于获取指标信息
def get_metrics():# 从数据库中获取指标数据metrics_data get_data_from_database()# 对指标数据进行处理和计算processed_data process_metrics_data(metrics_data)# 将处理后的指标数据保存到文件中save_data_to_file(processed_data)# 打印指标数据的摘要信息print_summary(processed_data)# 从数据库中获取指标数据的函数
def get_data_from_database():# 连接数据库connection connect_to_database()# 查询指标数据query SELECT * FROM metricsresult connection.execute(query)# 将查询结果转换为列表形式metrics_data result.fetchall()# 关闭数据库连接connection.close()# 返回指标数据return metrics_data# 对指标数据进行处理和计算的函数
def process_metrics_data(metrics_data):# 对指标数据进行处理和计算的逻辑processed_data []for data in metrics_data:# 处理和计算逻辑processed_data.append(process_data(data))# 返回处理后的指标数据return processed_data# 将处理后的指标数据保存到文件中的函数
def save_data_to_file(processed_data):# 打开文件以追加模式写入数据file open(metrics_data.txt, a)# 将处理后的指标数据逐行写入文件for data in processed_data:file.write(data \n)# 关闭文件file.close()# 打印指标数据的摘要信息的函数
def print_summary(processed_data):# 计算指标数据的总数total_count len(processed_data)# 计算指标数据的平均值total_value sum(processed_data)average_value total_value / total_count# 打印指标数据的摘要信息print(指标数据总数, total_count)print(指标数据平均值, average_value)remove_metric
返回目录
从指标容器中移除一个指标。
# 移除指标
remove_metric(logloss) # 移除名为logloss的指标没有输出。让我们再次检查度量容器。
# 定义一个函数get_metrics用于获取指标数据
def get_metrics():# 从数据库中获取数据data fetch_data_from_database()# 对数据进行处理得到指标数据metrics process_data(data)# 打印指标数据print(metrics)# 从数据库中获取数据的函数
def fetch_data_from_database():# 连接数据库connection connect_to_database()# 查询数据query SELECT * FROM tabledata connection.execute(query)# 关闭数据库连接connection.close()# 返回查询结果return data# 对数据进行处理的函数
def process_data(data):# 对数据进行处理得到指标数据metrics calculate_metrics(data)# 返回指标数据return metrics# 计算指标数据的函数
def calculate_metrics(data):# 对数据进行计算得到指标数据metrics perform_calculations(data)# 返回指标数据return metrics# 执行计算的函数
def perform_calculations(data):# 执行计算得到指标数据metrics []for item in data:metric item * 2metrics.append(metric)# 返回指标数据return metrics# 调用获取指标数据的函数
get_metrics()automl
返回目录
该函数根据optimize参数返回当前设置中所有训练模型中的最佳模型。可以使用get_metrics函数访问评估的指标。
示例
# 加载数据集
from pycaret.datasets import get_data
data get_data(diabetes) # 初始化设置
from pycaret.classification import *
clf1 setup(data, target Class variable) # 比较模型
top5 compare_models(n_select 5) # 调整模型
tuned_top5 [tune_model(i) for i in top5]# 集成模型
bagged_top5 [ensemble_model(i) for i in tuned_top5]# 混合模型
blender blend_models(estimator_list top5) # 堆叠模型
stacker stack_models(estimator_list top5) # 自动机器学习
best automl(optimize Recall)
print(best)get_logs
返回目录
返回一个实验日志表。只有在初始化setup函数时设置log_experiment True时才有效。
示例
# 加载数据集
from pycaret.datasets import get_data
data get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data, target Class variable, log_experiment True, experiment_name diabetes1)# 比较模型
top5 compare_models()# 查看机器学习日志
get_logs()get_system_logs
返回目录
从当前活动目录中读取并打印logs.log文件。
示例
# 导入数据集
from pycaret.datasets import get_data
data get_data(diabetes)# 初始化设置
from pycaret.classification import *
clf1 setup(data, target Class variable, session_id 123)# 检查系统日志
from pycaret.utils import get_system_logs
get_system_logs()