TabularPredictor.leaderboard¶
- TabularPredictor.leaderboard(data: DataFrame | str | None = None, extra_info: bool = False, extra_metrics: list | None = None, decision_threshold: float | None = None, score_format: str = 'score', only_pareto_frontier: bool = False, skip_score: bool = False, refit_full: bool | None = None, set_refit_score_to_parent: bool = False, display: bool = False, **kwargs) DataFrame [source]¶
输出关于在 fit() 期间生成的模型信息的摘要,格式为
pd.DataFrame
。包括所有模型的测试和验证分数、模型训练时间、推理时间以及堆栈级别。输出 DataFrame 列包括‘model’:模型的名称。
- ‘score_val’:模型在 ‘eval_metric’ 上的验证分数。
注意:指标分数始终以“越高越好”的形式显示。这意味着像 log_loss 和 root_mean_squared_error 这样的指标符号将被翻转,值将为负。这对于用户在查看排行榜时无需了解具体指标就能判断分数是否越高越好非常重要。
- ‘eval_metric’:用于计算分数的评估指标名称。
这应该与 predictor.eval_metric.name 相同。
- ‘pred_time_val’:对验证数据进行端到端预测所需的推理时间。
等于模型及其所有基础模型的 ‘pred_time_val_marginal’ 值的总和。
- ‘fit_time’:训练模型所需的端到端拟合时间(如果模型是堆叠集成模型,则包括基础模型)。
等于模型及其所有基础模型的 ‘fit_time_marginal’ 值的总和。
- ‘pred_time_val_marginal’:对验证数据进行预测所需的推理时间(忽略基础模型的推理时间)。
请注意,当禁用 bagging 时,这忽略了将模型加载到内存所需的时间。
‘fit_time_marginal’:训练模型所需的拟合时间(忽略基础模型)。‘stack_level’:模型的堆栈级别。
堆栈级别为 N 的模型可以将任何堆栈级别小于 N 的模型集作为输入,堆栈级别为 1 的模型没有模型输入。
- ‘can_infer’:模型是否能够对新数据进行推理。如果为 False,则表示模型未保存、已被删除,或模型的某个祖先模型无法进行推理。
如果在初始 fit() 中指定了 save_bag_folds=False,则 can_infer 通常为 False。
‘fit_order’:模型拟合的顺序。第一个拟合的模型具有 fit_order=1,第 N 个拟合的模型具有 fit_order=N。对于 bagged 集成模型,该顺序对应于第一个拟合的子模型。
- 参数:
data (str 或
pd.DataFrame
(可选)) –此数据集还必须包含在 fit() 期间指定的具有相同列名称的标签列。如果 extra_metrics=None 且 skip_score=True,则不需要标签列。如果指定了数据集,则返回的排行榜将包含额外的列:‘score_test’、‘pred_time_test’ 和 ‘pred_time_test_marginal’。
- ‘score_test’:模型在提供的 ‘eval_metric’ 数据上的分数。
注意:指标分数始终以“越高越好”的形式显示。这意味着像 log_loss 和 root_mean_squared_error 这样的指标符号将被翻转,值将为负。这对于用户在查看排行榜时无需了解具体指标就能判断分数是否越高越好非常重要。
- ‘pred_time_test’:模型在提供的真实端到端挂钟推理时间。
等于模型及其所有基础模型的 ‘pred_time_test_marginal’ 值的总和。
- ‘pred_time_test_marginal’:模型在提供的推理时间,减去其基础模型的推理时间(如果有)。
请注意,当禁用 bagging 时,这忽略了将模型加载到内存所需的时间。
如果传递了 str,data 将使用该 str 值作为文件路径进行加载。
extra_info (bool, 默认值 = False) –
如果为 True,将返回包含高级信息的额外列。这需要额外的计算,因为高级信息是按需计算的。当 extra_info=True 时,额外的输出列包括
- ‘num_features’:模型使用的输入特征数量。
某些模型可能会忽略预处理数据中的特定特征。
- ‘num_models’:实际构成此“模型”对象的模型数量。
对于非 bagged 模型,此值为 1。对于 bagged 模型,此值等于 bagged 集成模型包含的子模型(在 bagged 折叠上训练的模型)数量。
‘num_models_w_ancestors’:等于模型及其祖先(见下文)的 ‘num_models’ 值总和。‘memory_size’:模型在内存中持久化时所需的内存大小(以字节为单位)。这不等同于模型在推理期间可能使用的内存量。
对于 bagged 模型,这是所有子模型的 ‘memory_size’ 总和。
- ’memory_size_w_ancestors’:等于模型及其祖先的 ‘memory_size’ 值总和。
这是为了避免在推理调用之间加载任何模型以从该模型获取预测所需的内存量。对于在线推理,这至关重要。执行在线推理的机器内存应大于此值的两倍,以便通过将模型持久化在内存中来避免每次推理调用都加载模型。
- ’memory_size_min’:模型执行推理所需的最少内存量(以字节为单位)。
对于非 bagged 模型,这等同于 ‘memory_size’。对于 bagged 模型,这等同于最大子模型的 ‘memory_size_min’。为了最小化内存使用,可以逐个加载和解除持久化子模型进行推理。如果 bagged 模型在推理之前未在内存中持久化,则这是默认行为。
- ’memory_size_min_w_ancestors’:等于模型及其祖先的 ‘memory_size_min’ 值中的最大值。
这是通过每次只加载一个模型进行推理所需的最小内存,因为它的每个祖先模型也必须加载到内存中。对于对延迟不敏感的离线推理,如果 ‘memory_size_w_ancestors’ 过大,应使用此值来确定机器所需的内存。
’num_ancestors’:给定模型的祖先模型数量。
’num_descendants’:给定模型的后代模型数量。
- ’model_type’:给定模型的类型。
如果模型是集成类型,‘child_model_type’ 将指示内部模型类型。一个 bagged LightGBM 模型的堆叠集成模型将具有 ‘StackerEnsembleModel’ 作为其模型类型。
- ’child_model_type’:子模型类型。如果模型不是集成模型,则为 None。一个 bagged LightGBM 模型的堆叠集成模型将具有 ‘LGBModel’ 作为其子类型。
子模型是作为一个组用于生成给定 bagged 集成模型预测的模型。这些是在 bagged 集成的每个折叠上训练的模型。对于 10 折 bagging,bagged 集成模型将有 10 个子模型。对于 10 折 bagging 并重复 3 次,bagged 集成模型将有 30 个子模型。注意,子模型与祖先和后代不同。
- ’hyperparameters’:为模型指定的超参数值。
未在此字典中出现的任何超参数都保持其默认值。
- ’hyperparameters_fit’:模型在 fit 期间设置的超参数。
如果存在于 ‘hyperparameters_fit’ 中,此值将覆盖特定键的 ‘hyperparameters’ 值,以确定拟合模型的最终超参数。这最常用于指示模型训练迭代次数或 epoch 的超参数,因为早停可以找到与 ‘hyperparameters’ 指示的值不同的值。在这些情况下,‘hyperparameters’ 中提供的超参数用作模型的最大值,但模型仍然能够在训练期间以较小的值早停,以获得更好的验证分数或满足时间限制。例如,如果一个 NN 模型被赋予 epochs=500 作为超参数,但在训练期间发现 epochs=60 产生了最优的验证分数,它将使用 epoch=60 并设置 hyperparameters_fit={‘epoch’: 60}。
- ’ag_args_fit’:影响模型拟合的 AutoGluon 特殊参数。
有关更多信息,请参阅 TabularPredictor.fit() 中 hyperparameters 参数的文档。
’features’:模型使用的特征名称列表。
’child_hyperparameters’:等同于 ‘hyperparameters’,但用于模型的子模型。
’child_hyperparameters_fit’:等同于 ‘hyperparameters_fit’,但用于模型的子模型。
’child_ag_args_fit’:等同于 ‘ag_args_fit’,但用于模型的子模型。
- ’ancestors’:模型的祖先。祖先模型是在构建模型输入特征期间进行预测所需的模型。
如果 A 是 B 的祖先,则 B 是 A 的后代。如果模型的祖先被删除,该模型将不再能够对新数据进行推理,其 ‘can_infer’ 值将为 False。模型只能拥有 ‘stack_level’ 低于自身的祖先模型。‘stack_level’=1 的模型没有祖先。
- ’descendants’:模型的后代。后代模型是那些在构建输入特征期间需要该模型进行预测的模型。
如果 A 是 B 的后代,则 B 是 A 的祖先。如果此模型被删除,则所有后代模型将不再能够对新数据进行推理,其 ‘can_infer’ 值将为 False。模型只能拥有 ‘stack_level’ 高于自身的后代模型。
extra_metrics (list, 默认值 = None) – 要计算分数并包含在输出 DataFrame 中的指标列表。仅在指定 data 时有效。这些分数指的是在 data 上的分数(与用于计算 score_test 列的数据相同)。此列表可以包含任何在 predictor init 中对 eval_metric 也有效的值。例如,对于二元分类,extra_metrics=[‘accuracy’, ‘roc_auc’, ‘log_loss’] 将是有效的。此示例将在输出 DataFrame 中返回 3 个额外的列,其列名与指标名称匹配。传递 extra_metrics=[predictor.eval_metric] 将返回一个额外的列,其名称与 eval 指标的名称相同,并且值与 score_test 相同。这也适用于自定义指标。如果传递对象而不是字符串,则列名将等于对象的 .name 属性。注意:指标分数始终以“越高越好”的形式显示。这意味着像 log_loss 和 root_mean_squared_error 这样的指标符号将被翻转,值将为负。这对于用户在查看排行榜时无需了解具体指标就能判断分数是否越高越好非常重要。
decision_threshold (float, 默认值 = None) –
将预测概率转换为预测时使用的决策阈值。这将影响 f1 和 accuracy 等指标的分数。如果为 None,则默认为 predictor.decision_threshold。除非 problem_type=’binary’,否则忽略此参数。有关更多信息,请参阅 predictor.decision_threshold 的文档字符串。注意:在 v0.8 中,score_val 不会受此值影响。
score_val 将始终显示使用 0.5 的决策阈值获得的验证分数。只有测试分数会得到正确更新。
score_format ({'score', 'error'}) –
如果为“score”,排行榜正常返回。如果为“error”,则将列“score_val”转换为“metric_error_val”,将“score_test”转换为“metric_error_test”。
“metric_error” 是通过调用 predictor.eval_metric.convert_score_to_error(score) 计算的。这将导致错误值,其中 0 是完美的,值越低越好。
only_pareto_frontier (bool, 默认值 = False) – 如果为 True,则只返回位于精度/延迟权衡的帕累托前沿的模型信息(即在相同的端到端推理时间内取得最高分数的模型)。最少也会包含得分最高的模型和推理时间最低的模型。在考虑推理时间时,这对于决定使用哪个模型非常有用。在此过程中过滤掉的模型对于仅关心模型推理时间和分数的用户来说绝不是最优选择。
skip_score (bool, 默认值 = False) – [高级,主要供开发者使用] 如果为 True,则在指定 data 时跳过计算 score_test。所有模型的 score_test 将设置为 NaN。pred_time_test 和相关列仍将计算。
refit_full (bool, 默认值 = None) – 如果为 True,则只返回已重新拟合的模型(例如,名称中包含 _FULL 的模型)。如果为 False,则只返回未重新拟合的模型。如果为 None,则返回所有模型。
set_refit_score_to_parent (bool, 默认值 = False) – 如果为 True,则重新拟合模型的 score_val 将设置为其父模型的 score_val。虽然这不代表重新拟合模型的真实验证分数,但它是一个合理的代理。
display (bool, 默认值 = False) – 如果为 True,则输出 DataFrame 将打印到标准输出(stdout)。
- 返回类型:
模型性能摘要信息的
pd.DataFrame
。