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’: The validation score of the model on the ‘eval_metric’.

注意:指标分数始终以越高越好的形式显示。 这意味着诸如log_loss和root_mean_squared_error等指标的符号将被翻转,并且值将为负数。 这是为了避免用户在查看排行榜时需要知道指标才能理解是否越高越好。

‘eval_metric’: The evaluation metric name used to calculate the scores.

这应该与 predictor.eval_metric.name 相同。

‘pred_time_val’: The inference time required to compute predictions on the validation data end-to-end.

等同于模型及其所有基础模型的‘pred_time_val_marginal’值的总和。

‘fit_time’: The fit time required to train the model end-to-end (Including base models if the model is a stack ensemble).

等同于模型及其所有基础模型的‘fit_time_marginal’值的总和。

‘pred_time_val_marginal’: The inference time required to compute predictions on the validation data (Ignoring inference times for base models).

请注意,当禁用装袋时,这会忽略将模型加载到内存所需的时间。

‘fit_time_marginal’: 训练模型所需的拟合时间(忽略基础模型)。 ‘stack_level’: 模型的堆叠级别。

一个具有堆栈级别N的模型可以将任何堆栈级别小于N的模型集作为输入,而堆栈级别1的模型没有模型输入。

‘can_infer’: If model is able to perform inference on new data. If False, then the model either was not saved, was deleted, or an ancestor of the model cannot infer.

can_infer 通常在初始 fit() 中指定了 save_bag_folds=False 时为 False。

‘fit_order’: 模型拟合的顺序。第一个拟合的模型有 fit_order=1,第N个拟合的模型有 fit_order=N。在袋装集成的情况下,顺序对应于第一个子模型的拟合。

Parameters:
  • 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, default = False) –

    如果 True,将返回包含高级信息的额外列。 这需要额外的计算,因为高级信息数据是按需计算的。 当 extra_info=True 时,额外的输出列包括:

    ’num_features’: 模型使用的输入特征数量。

    某些模型可能会忽略预处理数据中的某些特征。

    ’num_models’: 实际构成此“模型”对象的模型数量。

    对于非打包模型,此值为1。对于打包模型,此值等于打包集成中包含的子模型(在打包折叠上训练的模型)数量。

    ’num_models_w_ancestors’: 相当于模型及其祖先的‘num_models’值的总和(见下文)。 ‘memory_size’: 模型在内存中持久化时所需的内存大小(以字节为单位)。这不等同于模型在推理过程中可能使用的内存量。

    对于打包模型,这是所有子模型的‘memory_size’的总和。

    ’memory_size_w_ancestors’: 相当于模型及其祖先的‘memory_size’值的总和。

    这是为了避免在推理调用之间加载任何模型以从此模型获取预测所需的内存量。 对于在线推理,这至关重要。执行在线推理的机器必须拥有超过此值两倍的内存,以避免每次推理调用时加载模型,通过将模型持久化在内存中。

    ’memory_size_min’: 模型执行推理所需的最小内存量(以字节为单位)。

    对于非打包模型,这等同于‘memory_size’。 对于打包模型,这等同于最大子模型的‘memory_size_min’。 为了最小化内存使用,可以逐个加载和卸载子模型进行推理。如果打包模型在推理之前未持久化在内存中,这是默认行为。

    ’memory_size_min_w_ancestors’: 相当于模型及其祖先的‘memory_size_min’值的最大值。

    这是通过一次只加载一个模型来推断模型所需的最小内存,因为每个祖先也必须加载到内存中。 对于不关心延迟的离线推理,如果‘memory_size_w_ancestors’太大,应使用此值来确定机器所需的内存。

    ’num_ancestors’: 给定模型的祖先模型数量。

    ’num_descendants’: 给定模型的后代模型数量。

    ’model_type’: 给定模型的类型。

    如果模型是集成类型,‘child_model_type’将指示内部模型类型。一个打包的LightGBM模型的堆栈集成将具有‘StackerEnsembleModel’作为其模型类型。

    ’child_model_type’: 子模型类型。如果模型不是集成,则为None。一个打包的LightGBM模型的堆栈集成将具有‘LGBModel’作为其子类型。

    子模型是作为一组用于生成给定打包集成模型预测的模型。这些是在打包集成的每个折叠上训练的模型。 对于10折打包,打包集成模型将有10个子模型。 对于10折打包并重复3次,打包集成模型将有30个子模型。 请注意,子模型与祖先和后代不同。

    ’hyperparameters’: 为模型指定的超参数值。

    所有未出现在此字典中的超参数保持其默认值。

    ’hyperparameters_fit’: 模型在拟合过程中设置的超参数。

    如果‘hyperparameters_fit’中存在某个键,则此值将覆盖‘hyperparameters’中的值,以确定拟合模型的最终超参数。 这通常用于指示模型训练迭代次数或周期的超参数,因为早期停止可以找到与‘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, default = None) – 一个用于计算分数并包含在输出DataFrame中的指标列表。 仅在指定data时有效。这些分数指的是data上的分数(与用于计算score_test列的数据相同)。 此列表可以包含任何在predictor初始化时对eval_metric也有效的值。 例如,extra_metrics=[‘accuracy’, ‘roc_auc’, ‘log_loss’]在二分类中是有效的。 此示例将在输出DataFrame中返回3个额外的列,其列名与指标名称匹配。 传递extra_metrics=[predictor.eval_metric]将返回一个与score_test值相同的额外列,列名为eval指标的名称。 这也适用于自定义指标。如果传递的是对象而不是字符串,列名将等于对象的.name属性。 注意:指标分数始终以越高越好的形式显示。 这意味着像log_loss和root_mean_squared_error这样的指标将会有其符号翻转,并且值将为负数。 这是为了避免用户在查看排行榜时需要知道指标才能理解是否越高越好。

  • decision_threshold (float, default = None) –

    用于将预测概率转换为预测的决策阈值。 这将影响诸如f1accuracy等指标的分数。 如果为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, default = False) – 如果为True,仅返回在准确度/延迟权衡的帕累托前沿中的模型信息(这些模型在其端到端推理时间内达到最高分数)。 至少这将包括具有最高分数的模型和具有最低推理时间的模型。 如果在推理过程中考虑推理时间,这在决定使用哪个模型时非常有用。 对于只关心模型推理时间和分数的用户来说,被此过程过滤掉的模型永远不会是最优选择。

  • skip_score (bool, default = False) – [高级,主要面向开发者] 如果 True,当指定 data 时,将跳过计算 score_testscore_test 将被设置为所有模型的 NaN。 pred_time_test 和相关列仍将被计算。

  • refit_full (bool, default = None) – 如果为True,将只返回已重新拟合的模型(例如:名称中包含_FULL)。 如果为False,将只返回未重新拟合的模型。 如果为None,将返回所有模型。

  • set_refit_score_to_parent (bool, default = False) – 如果为True,重新拟合模型的score_val将被设置为其父模型的score_val。 虽然这并不代表重新拟合模型的真实验证分数,但它是一个合理的代理。

  • display (bool, default = False) – 如果为True,输出DataFrame将打印到标准输出。

Return type:

pd.DataFrame 模型性能摘要信息。