注意
前往末尾 下载完整的示例代码。
用户属性
此功能用于使用用户定义的属性注释实验。
向研究(Studies)添加用户属性
一个 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'}
另请参阅
optuna study set-user-attr
命令,该命令通过命令行接口设置属性。
向试验(Trials)添加用户属性
与 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 minutes 0.308 seconds)