Note
Go to the end to download the full example code.
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) – プロット対象のスタディオブジェクト。トライアルの目的値をプロットします。
targets
がNone
の場合、目的数は 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_order
とtargets
は同時に使用できません。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_order
とtargets
は同時に使用できません。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)