用户属性

此功能用于用用户定义的属性标注实验。

为 Study 添加用户属性

一个 Study 对象提供 set_user_attr() 方法来注册键值对作为用户定义的属性。键应为 str,值可以是任何可以使用 json.dumps 序列化的对象。

import sklearn.datasets
import sklearn.model_selection
import sklearn.svm

import optuna


study = optuna.create_study(storage="sqlite:///example.db")
study.set_user_attr("contributors", ["Akiba", "Sano"])
study.set_user_attr("dataset", "MNIST")

我们可以通过 user_attrs 属性访问标注的属性。

study.user_attrs  # {'contributors': ['Akiba', 'Sano'], 'dataset': 'MNIST'}
{'contributors': ['Akiba', 'Sano'], 'dataset': 'MNIST'}

通过 get_all_study_summaries() 检索到的 StudySummary 对象也包含用户定义的属性。

study_summaries = optuna.get_all_study_summaries("sqlite:///example.db")
study_summaries[0].user_attrs  # {"contributors": ["Akiba", "Sano"], "dataset": "MNIST"}
{'contributors': ['Akiba', 'Sano'], 'dataset': 'MNIST'}

另请参阅

optuna study set-user-attr 命令,通过命令行界面设置属性。

为 Trial 添加用户属性

Study 类似,Trial 对象也提供 set_user_attr() 方法。属性在优化函数内部设置。

def objective(trial):
    iris = sklearn.datasets.load_iris()
    x, y = iris.data, iris.target

    svc_c = trial.suggest_float("svc_c", 1e-10, 1e10, log=True)
    clf = sklearn.svm.SVC(C=svc_c)
    accuracy = sklearn.model_selection.cross_val_score(clf, x, y).mean()

    trial.set_user_attr("accuracy", accuracy)

    return 1.0 - accuracy  # return error for minimization


study.optimize(objective, n_trials=1)

我们可以通过以下方式访问标注的属性:

study.trials[0].user_attrs
{'accuracy': 0.9400000000000001}

请注意,在此示例中,属性并未标注给 Study,而是标注给单个 Trial

脚本总运行时间: (0 分钟 0.290 秒)

由 Sphinx-Gallery 生成的画廊