Note
Go to the end to download the full example code.
ユーザー属性
この機能は、実験にユーザー定義の属性を付与するためのものです。
スタディへのユーザー属性の追加
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)