plot_pareto_front

optuna.visualization.matplotlib.plot_pareto_front(study, *, target_names=None, include_dominated_trials=True, axis_order=None, constraints_func=None, targets=None)[source]

绘制研究的帕累托前沿。

另请参阅

请参阅 optuna.visualization.plot_pareto_front() 以获取示例。

参数:
  • study (Study) – Study 对象,其试验的目标值将被绘制。当 targetsNone 时,study.n_objectives 必须为 2 或 3。

  • target_names (list[str] | None) – 用作坐标轴标题的目标名称列表。如果指定为 None,则使用“Objective {objective_index}”代替。如果为不包含任何已完成试验的研究指定了 targets,则必须指定 target_name

  • include_dominated_trials (bool) – 一个标志,用于包含所有被支配试验的目标值。

  • axis_order (list[int] | None) –

    指示轴顺序的索引列表。如果指定为 None,则使用默认顺序。axis_ordertargets 不能同时使用。

    警告

    在 v3.0.0 中已弃用。此功能将在未来移除。目前计划在 v5.0.0 中移除此功能,但此计划可能会更改。请参阅 https://github.com/optuna/optuna/releases/tag/v3.0.0

  • constraints_func (Callable[[FrozenTrial], Sequence[float]] | None) –

    一个可选函数,用于计算目标约束。它必须接受一个 FrozenTrial 并返回约束。返回值必须是 float 序列。严格大于 0 的值表示约束被违反。等于或小于 0 的值被认为是可行的。此规范与例如 NSGAIISampler 中的规范相同。

    如果给定,试验被分为三类:可行且最优、可行但不最优、不可行。类别以不同的颜色显示。在此,判断试验是否最优(在帕累托前沿上)时,忽略所有不可行的试验。

    警告

    在 v4.0.0 中已弃用。此功能将在未来移除。目前计划在 v6.0.0 中移除此功能,但此计划可能会更改。请参阅 https://github.com/optuna/optuna/releases/tag/v4.0.0

  • targets (Callable[[FrozenTrial], Sequence[float]] | None) –

    一个返回要显示的目标值元组的函数。此函数的参数是 FrozenTrialtargets 必须为 None 或返回 2 或 3 个值。axis_ordertargets 不能同时使用。如果目标数量既不是 2 也不是 3,则必须指定 targets

    注意

    在 v3.0.0 中作为实验性功能添加。未来的版本可能会在不事先通知的情况下更改接口。请参阅 https://github.com/optuna/optuna/releases/tag/v3.0.0

返回:

一个 matplotlib.axes.Axes 对象。

返回类型:

Axes

注意

在 v2.8.0 中作为实验性功能添加。未来的版本可能会在不事先通知的情况下更改接口。请参阅 https://github.com/optuna/optuna/releases/tag/v2.8.0

以下代码片段展示了如何绘制研究的帕累托前沿。

Pareto-front Plot
/home/docs/checkouts/readthedocs.org/user_builds/optuna/checkouts/stable/docs/visualization_matplotlib_examples/optuna.visualization.matplotlib.pareto_front.py:27: ExperimentalWarning:

plot_pareto_front is experimental (supported from v2.8.0). The interface can change in the future.


<Axes: title={'center': 'Pareto-front Plot'}, xlabel='Objective 0', ylabel='Objective 1'>

import optuna


def objective(trial):
    x = trial.suggest_float("x", 0, 5)
    y = trial.suggest_float("y", 0, 3)

    v0 = 4 * x**2 + 4 * y**2
    v1 = (x - 5) ** 2 + (y - 5) ** 2
    return v0, v1


study = optuna.create_study(directions=["minimize", "minimize"])
study.optimize(objective, n_trials=50)

optuna.visualization.matplotlib.plot_pareto_front(study)

脚本总运行时间: (0 minutes 0.098 seconds)

由 Sphinx-Gallery 生成的图库