注意
转到底部 下载完整的示例代码。
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)[源代码]
绘制研究(study)的帕累托前沿(Pareto front)。
另请参阅
有关示例,请参阅
optuna.visualization.plot_pareto_front()。- 参数:
study (Study) – 一个
Study对象,其 trial 将被绘制以显示其目标值。当targets为None时,study.n_objectives必须是 2 或 3。target_names (list[str] | None) – 用作轴标题的目标名称列表。如果指定
None,则改用“Objective {objective_index}”。如果为不包含任何已完成 trial 的 study 指定了targets,则必须指定target_name。include_dominated_trials (bool) – 一个包含所有被支配 trial(dominated trial)的目标值的标志。
axis_order (list[int] | None) –
指定轴顺序的索引列表。如果指定
None,则使用默认顺序。axis_order和targets不能同时使用。警告
在 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等中的规范相同。如果提供了该参数,则 trial 将被分为三类:可行且最优、可行但不最优、不可行。这些类别将以不同的颜色显示。在这里,一个 trial 是否最优(在帕累托前沿上)是忽略所有不可行 trial 来确定的。
警告
在 v4.0.0 中已弃用。此功能将在未来版本中移除。此功能当前的移除计划是 v6.0.0,但此计划可能会更改。请参阅 https://github.com/optuna/optuna/releases/tag/v4.0.0。
targets (Callable[[FrozenTrial], Sequence[float]] | None) –
一个返回要显示的 target 值元组的函数。此函数的参数是
FrozenTrial。targets必须是None或返回 2 或 3 个值。axis_order和targets不能同时使用。如果目标数量既不是 2 也不是 3,则必须指定targets。注意
在 v3.0.0 中作为实验性功能添加。接口在后续版本中可能在没有事先通知的情况下发生更改。请参阅 https://github.com/optuna/optuna/releases/tag/v3.0.0。
- 返回:
一个
matplotlib.axes.Axes对象。- 返回类型:
注意
在 v2.8.0 中作为实验性功能添加。接口在后续版本中可能在没有事先通知的情况下发生更改。请参阅 https://github.com/optuna/optuna/releases/tag/v2.8.0。
以下代码片段展示了如何绘制 study 的帕累托前沿。

/home/docs/checkouts/readthedocs.org/user_builds/optuna/checkouts/stable/docs/visualization_matplotlib_examples/optuna.visualization.matplotlib.pareto_front.py:27: ExperimentalWarning:
optuna.visualization.matplotlib._pareto_front.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 分 0.273 秒)