plot_pareto_front

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

スタディのパレートフロントをプロットします。

See also

パレートフロントの可視化に関するチュートリアルは Optuna による多目的最適化 を参照してください。

Parameters:
  • study (Study) – プロット対象のスタディオブジェクト。トライアルの目的値をプロットします。 targetsNone の場合、目的数は 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 は同時に使用できません。

    Warning

    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 と同様です。

    この関数が指定されている場合、トライアルは 3 つのカテゴリに分類されます:

    実行可能かつ最良、実行可能だが最良ではない、実行不可能。各カテゴリは異なる色で表示されます。 ここで、トライアルが最良(パレートフロント上)であるかどうかは、実行不可能なトライアルを無視して 判定されます。

    Warning

    v4.0.0 で非推奨となりました。この機能は将来的に削除される予定です。 削除時期は v6.0.0 を予定していますが、変更される可能性があります。 詳細は https://github.com/optuna/optuna/releases/tag/v4.0.0 を参照してください。

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

    表示するターゲット値を返す関数。 引数は FrozenTrial です。 axis_ordertargets は同時に使用できません。 study.n_objectives が 2 または 3 でない場合、targets を指定する必要があります。

    Note

    v3.0.0 で実験的機能として追加されました。インターフェースは予告なく変更される可能性があります。 詳細は https://github.com/optuna/optuna/releases/tag/v3.0.0 を参照してください。

Returns:

plotly.graph_objects.Figure オブジェクト。

Return type:

Figure

The following code snippet shows how to plot the Pareto front of a study.

import optuna
from plotly.io import show


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)

fig = optuna.visualization.plot_pareto_front(study)
show(fig)

The following code snippet shows how to plot a 2-dimensional Pareto front of a 3-dimensional study. This example is scalable, e.g., for plotting a 2- or 3-dimensional Pareto front of a 4-dimensional study and so on.

import optuna
from plotly.io import show


def objective(trial):
    x = trial.suggest_float("x", 0, 5)
    y = trial.suggest_float("y", 0, 3)
    v0 = 5 * x**2 + 3 * y**2
    v1 = (x - 10) ** 2 + (y - 10) ** 2
    v2 = x + y

    return v0, v1, v2


study = optuna.create_study(directions=["minimize", "minimize", "minimize"])

study.optimize(objective, n_trials=100)

fig = optuna.visualization.plot_pareto_front(
    study,
    targets=lambda t: (t.values[0], t.values[1]),
    target_names=["Objective 0", "Objective 1"],
)

show(fig)

Total running time of the script: (0 minutes 0.509 seconds)

Gallery generated by Sphinx-Gallery