Visualization

注解

visualization 采用 plotly 来创建图表,但是 JupyterLab 无法在默认情况下渲染这些图表。请按照这个 installation guide 来配置 JupyterLab 中的图表显示。

optuna.visualization.plot_contour(study: optuna.study.Study, params: Optional[List[str]] = None) → go.Figure[源代码]

将参数关系画成等高线图。

注意,如果某个参数包含了缺失值,那么包含该参数的 trial 将不会被绘制。

示例

下面的代码展示了如何将参数关系画成一个等高线图。

import optuna

def objective(trial):
    x = trial.suggest_uniform('x', -100, 100)
    y = trial.suggest_categorical('y', [-1, 0, 1])
    return x ** 2 + y

study = optuna.create_study()
study.optimize(objective, n_trials=10)

optuna.visualization.plot_contour(study, params=['x', 'y'])
参数
  • study -- Study 类,其包含的 trials 的目标函数值将参与绘图。

  • params -- 需要可视化的参数列表,默认情况下将是全部参数。

返回

A plotly.graph_objs.Figure object.

optuna.visualization.plot_intermediate_values(study: optuna.study.Study) → go.Figure[源代码]

画出一个 study 中的全部 trial 的中间值。

示例

下面的代码展示了如何绘制中间值。

import optuna

def f(x):
    return (x - 2) ** 2

def df(x):
    return 2 * x - 4

def objective(trial):
    lr = trial.suggest_loguniform("lr", 1e-5, 1e-1)

    x = 3
    for step in range(128):
        y = f(x)

        trial.report(y, step=step)
        if trial.should_prune():
            raise optuna.TrialPruned()

        gy = df(x)
        x -= gy * lr

    return y

study = optuna.create_study()
study.optimize(objective, n_trials=16)

optuna.visualization.plot_intermediate_values(study)
参数

study -- Study 类,其包含的 trials 的目标函数中间值将参与绘图。

返回

A plotly.graph_objs.Figure object.

optuna.visualization.plot_optimization_history(study: optuna.study.Study) → go.Figure[源代码]

画出一个 study 中所有 trial 的优化历史记录。

示例

下面的代码展示了如何绘制优化历史记录。

import optuna

def objective(trial):
    x = trial.suggest_uniform('x', -100, 100)
    y = trial.suggest_categorical('y', [-1, 0, 1])
    return x ** 2 + y

study = optuna.create_study()
study.optimize(objective, n_trials=10)

optuna.visualization.plot_optimization_history(study)
参数

study -- Study 类,其包含的 trials 的目标函数值将参与绘图。

返回

A plotly.graph_objs.Figure object.

optuna.visualization.plot_parallel_coordinate(study: optuna.study.Study, params: Optional[List[str]] = None) → go.Figure[源代码]

绘制一个 study 中高维度参数的关系图。

注意,如果某个参数包含了缺失值,那么包含该参数的 trial 将不会被绘制。

示例

下面的代码展示了如何绘制高维度参数的关系图。

import optuna

def objective(trial):
    x = trial.suggest_uniform('x', -100, 100)
    y = trial.suggest_categorical('y', [-1, 0, 1])
    return x ** 2 + y

study = optuna.create_study()
study.optimize(objective, n_trials=10)

optuna.visualization.plot_parallel_coordinate(study, params=['x', 'y'])
参数
  • study -- Study 类,其包含的 trials 的目标函数值将参与绘图。

  • params -- 需要可视化的参数列表,默认情况下将是全部参数。

返回

A plotly.graph_objs.Figure object.

optuna.visualization.plot_param_importances(study: optuna.study.Study, evaluator: optuna.importance._base.BaseImportanceEvaluator = None, params: Optional[List[str]] = None) → go.Figure[源代码]

画出超参数的重要性

示例

下面的代码展示了如何绘制超参数的重要性图

import optuna

def objective(trial):
    x = trial.suggest_int("x", 0, 2)
    y = trial.suggest_float("y", -1.0, 1.0)
    z = trial.suggest_float("z", 0.0, 1.5)
    return x ** 2 + y ** 3 - z ** 4

study = optuna.create_study(sampler=optuna.samplers.RandomSampler())
study.optimize(objective, n_trials=100)

optuna.visualization.plot_param_importances(study)

参见

该函数对 optuna.importance.get_param_importances() 的结果进行可视化。

参数
  • study -- 优化结束的 study.

  • evaluator -- 参数重要性求解器。它指定评估重要性的算法。默认情况下它会被设定成 MeanDecreaseImpurityImportanceEvaluator.

  • params -- 参与评估的参数名列表。如果设置成 None 的话,全部的、属于所有已完成 trial 的参数都将参与评估。

返回

A plotly.graph_objs.Figure object.

注解

v1.5.0 版本中新加入的试验性特性。在未来的版本中,该接口可能在没有预先告知的情况下改变。 具体参见 https://github.com/optuna/optuna/releases/tag/v1.5.0.

optuna.visualization.plot_slice(study: optuna.study.Study, params: Optional[List[str]] = None) → go.Figure[源代码]

绘制一个 study 中的参数关系切片图。

注意,如果某个参数包含了缺失值,那么包含该参数的 trial 将不会被绘制。

示例

下面的代码展示了如何绘制参数关系切片图。

import optuna

def objective(trial):
    x = trial.suggest_uniform('x', -100, 100)
    y = trial.suggest_categorical('y', [-1, 0, 1])
    return x ** 2 + y

study = optuna.create_study()
study.optimize(objective, n_trials=10)

optuna.visualization.plot_slice(study, params=['x', 'y'])
参数
  • study -- Study 类,其包含的 trials 的目标函数值将参与绘图。

  • params -- 需要可视化的参数列表,默认情况下将是全部参数。

返回

A plotly.graph_objs.Figure object.

optuna.visualization.is_available()bool[源代码]

返回可视化是否可用。

注解

visualization 模块依赖 4.0.0 或者更高版本的 plotly. 如果在你的环境中对应版本的 ploty没有安装的话,该函数将返回 False. 此时,请执行 $ pip install -U plotly>=4.0.0 来安装 plotly.

返回

如果可视化可用的话,返回 True, 否则返回 False.