ユーザー属性

この機能は、実験にユーザー定義の属性を付与するためのものです。

スタディへのユーザー属性の追加

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'}

StudySummary オブジェクト(get_all_study_summaries() で取得可能)にも ユーザー定義属性が含まれます。

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'}

See also

コマンドラインインターフェースで属性を設定する optuna study set-user-attr コマンド。

トライアルへのユーザー属性の追加

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  # 最小化のため誤差を返す


study.optimize(objective, n_trials=1)

注釈付き属性には以下のようにアクセスできます:

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

この例では、属性は Study ではなく単一の Trial に 付与されていることに注意してください。

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

Gallery generated by Sphinx-Gallery