TabularPredictor.校准决策阈值

TabularPredictor.calibrate_decision_threshold(data: DataFrame | str | None = None, metric: str | Scorer | None = None, model: str ='best', decision_thresholds: int | list[float] = 25, secondary_decision_thresholds: int | None =19, subsample_size: int | None =1000000, verbose: bool =True) float[source]

在二元分类中校准决策阈值以优化给定指标。您可以将此方法的输出作为输入传递给 predictor.set_decision_threshold 来更新预测器。如果 predictor.problem_type != ‘binary’,将引发 AssertionError。

请注意,虽然校准决策阈值有助于改善给定指标,但其他指标的得分可能会变差。例如,对 balanced_accuracy 进行校准通常会损害 accuracy。用户在使用决策阈值校准时应牢记这一点。

参数:
  • **data** (pd.DataFramestr, 可选) – 用于校准的数据。必须包含标签列。我们建议除非您是高级用户并了解其含义,否则将此值保留为 None。如果为 None,将使用内部数据,例如留出验证数据或折外预测。

  • **metric** (autogluon.core.metrics.Scorerstr, 默认为 None) – 校准期间要优化的指标。如果为 None,则使用 predictor.eval_metric

  • **model** (str, 默认为 'best') – 校准阈值时用于预测概率的模型。如果为 'best',则使用 predictor.model_best

  • **decision_thresholds** (int | list[float], 默认为 25) – 在 0.5 两侧搜索的决策阈值数量。默认值 25 将产生 51 个搜索阈值:[0.00, 0.02, 0.04, …, 0.48, 0.50, 0.52, …, 0.96, 0.98, 1.00]。或者,可以传入一个决策阈值列表,此时只搜索列表中的阈值。

  • **secondary_decision_thresholds** (int | None, 默认为 19) –

    第一阶段确定阈值两侧要检查的辅助决策阈值数量。如果为 None 则跳过。例如,如果 decision_thresholds=50 并且 0.14 被确定为最优阈值,而 secondary_decision_threshold=9,

    则会检查以下附加阈值

    [0.131, 0.132, 0.133, 0.134, 0.135, 0.136, 0.137, 0.138, 0.139, 0.141, 0.142, 0.143, 0.144, 0.145, 0.146, 0.147, 0.148, 0.149]

  • **subsample_size** (int | None, 默认为 1000000) – 当 subsample_size 不为 None 且 data 的行数多于 subsample_size 时,会将数据采样到 subsample_size 行以加快校准速度。通常校准不需要使用超过 100 万行。

  • **verbose** (bool, 默认为 True) – 如果为 True,将记录有关校准过程的信息。

返回值:

  • **决策阈值** (一个介于 0 到 1 之间的浮点数,定义了预测的决策边界,该边界)

  • 最大化了 modeldatametric 的得分。