Integration

class optuna.integration.ChainerPruningExtension(trial, observation_key, pruner_trigger)[源代码]

用于对无望 trial 剪枝的 Chainer 扩展。

如果你想添加一个 Chainer Trainer 的监测验证集精确度的扩展的话,请参考 the example

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • observation_key -- Pruning 的求值度量,比如 main/lossvalidation/main/accuracy 。具体请参考 chainer.Reporter reference <https://docs.chainer.org/en/stable/reference/

  • pruner_trigger -- 执行剪枝的 trigger。pruner_trigger 是一个`IntervalTrigger <https://docs.chainer.org/en/stable/reference/generated/ chainer.training.triggers.IntervalTrigger.html>`_ 或者 ManualScheduleTrigger 的实例。 IntervalTrigger 可以通过一个由间隔长度和单位构成的元组来指定,比如 (1, 'epoch')

class optuna.integration.ChainerMNStudy(study, comm)[源代码]

一个将 Optuna 并入 CHainerMN 的 Study wrapper。

参见

ChainerMNStudy 提供了和 Study 一样的接口。更多细节请参考 optuna.study.Study

如果你想优化一个用 ChainerMN 写的神经网络目标函数的话,请参考 the example

参数
optimize(func, n_trials=None, timeout=None, catch=())[源代码]

优化目标函数。

除了没有 n_jobs 参数外,该方法提供了和 optuna.study.Study.optimize() 一样的接口。

class optuna.integration.CmaEsSampler(x0=None, sigma0=None, cma_stds=None, seed=None, cma_opts=None, n_startup_trials=1, independent_sampler=None, warn_independent_sampling=True)[源代码]

使用 cma 库作为后端的 sampler。

示例

使用 CmaEsSampler 来优化一个简单的二次函数。

import optuna

def objective(trial):
    x = trial.suggest_uniform('x', -1, 1)
    y = trial.suggest_int('y', -1, 1)
    return x**2 + y

sampler = optuna.integration.CmaEsSampler()
study = optuna.create_study(sampler=sampler)
study.optimize(objective, n_trials=20)

注意,trial 的并行执行可能会影响 CMA-ES 的性能,尤其是在并行运行的 trial 数超过了 population size 的情况下。

参数
  • x0 -- 一个包含了 CMA-ES 初始参数的字典。默认情况下使用每一个分布中的 lowhigh 的平均值。关于 x0 的更多细节请参考 cma.CMAEvolutionStrategy

  • sigma0 -- CMA-ES 的标准差。默认情况下 sigma0min_range / 6,其中 min_range 代表来搜索空间分布的最小范围。如果该分布是类别分布,那么 min_range 就是 len(choices) - 1。关于 sigma0 的更多细节参见 cma.CMAEvolutionStrategy

  • cma_stds -- 一个包含每个参数的 sigma0 的乘数的字典。默认情况下其值是 1.0 。关于 cma_stds 的更多细节参见 cma.CMAEvolutionStrategy

  • seed -- CMA-ES 的随机数种子。

  • cma_opts -- 向 cma.CMAEvolutionStrategy 构造函数传递的选项。注意,cma_opts 中的 BoundaryHandler, bounds, CMA_stdsseed 都会被忽略,因为它是通过 CmaEsSampler 自动添加的。

  • n_startup_trials -- 在同一个 study 中指定数目的 trial 完成之前,采用的都是独立采样而不是 CMA-ES 算法采样。

  • independent_sampler -- 一个用于独立采样的 BaseSampler 实例。那些不包含在相对搜索空间内的参数都通过它来采样。 CmaEsSampler 的搜索空间是通过 intersection_search_space() 来确定的。如果设置成 None 的话,默认会使用 RandomSampler 。.. seealso:: optuna.samplers 模块提供了 内置的独立 sampler,比如 RandomSamplerTPESampler.

  • warn_independent_sampling -- 如果该选项是 True 的话,当参数值是通过一个独立 sampler 来采样时,它会触发一个警告信息。注意,在每一个 study 中的第一个 trial总是通过独立 sampler 来采样的,所以此时不会触发警报信息。

reseed_rng()None[源代码]

重置随机数生成器的种子。

当 trial 是以 n_jobs>1 的选项被并行执行时,该方法会被 Study 调用。在这种情况下,sampler 实例和随机数生成器的状态都会被复制,因此它们会产生同样的值,为了避免这种情况,该方法给每一个随机数生成器分配一个不同的种子。

class optuna.integration.FastAIPruningCallback(learn, trial, monitor)[源代码]

用于清除 FastAI 中无望 trial 的回调函数。

注解

该回调函数是为 fastai<2.0,而不是 fastai/fastai_dev 版本设计的。

如果你想添加一个监测 Learner 的验证集 loss 的 pruner 的话,请参考 the example

示例

learn.fitlearn.fit_one_cycle 注入一个 pruning 回调。

learn.fit(n_epochs, callbacks=[FastAIPruningCallback(learn, trial, 'valid_loss')])
learn.fit_one_cycle(
    n_epochs, cyc_len, max_lr,
    callbacks=[FastAIPruningCallback(learn, trial, 'valid_loss')])
参数
class optuna.integration.PyTorchIgnitePruningHandler(trial, metric, trainer)[源代码]

用于清除无望 trial 的 PyTorch Ignite handler。

如果你想添加一个监测验证集 accuracy 的 pruner 的话,请参考 the example

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • metric -- 用于 pruning 的度量名,比如 accuracyloss.

  • trainer -- PyTorch Ignite 的 trainer engine。更多细节请参考 ignite.engine.Engine reference

class optuna.integration.KerasPruningCallback(trial, monitor, interval=1)[源代码]

用于清除无望 trial 的 Keras 回调函数。

如果你想添加一个监测验证集 accuracy 的 pruner 的话,请参考 the example

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • monitor -- Pruning 的求值度量,比如 val_lossval_accuracy 。具体请参考 keras.Callback reference

  • interval -- 每到第 n 个 epoch 检查是否要清除该 trial。默认情况下 interval=1 此时每个 epoch 之后pruning 都会执行一次。增加 interval 可以先执行数个 epoch,然后再执行 pruning。

class optuna.integration.LightGBMPruningCallback(trial, metric, valid_name='valid_0')[源代码]

用于清除无望 trial 的 LightGBM 回调函数。

如果你想添加一个监测 LightGBM 模型的 AUC 的 pruner 的话,请参考 the example

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • metric -- Pruning 的求值度量,比如 binary_errormulti_error 。具体请参考 LightGBM reference

  • valid_name -- 目标验证名。验证名是通过 train methodvalid_names 选项来设定的。如果省略的话就采用 valid_0`,它是第一个验证的默认名。注意,如果你没有调用 train 方法而是调用了 cv method 的话,该参数会被忽略。

optuna.integration.lightgbm.train(*args: Any, **kwargs: Any) → Any[源代码]

用于调整超参数的 LightGBM Training API 的 wrapper。

它逐步调整重要的超参数(比如 min_child_samplesfeature_fraction),是 lightgbm.train() 的一个非正式替代品。参见 a simple example of LightGBM Tuner which optimizes the validation log loss of cancer detection.

train()LightGBMTuner 的 wrapper。如果想使用 suspended/resumed optimization 和/或 parallelization 等 Optuna 特性的话,请使用 LightGBMTuner 而不是该函数。

可以传入给 lightgbm.train() 的参数。

注解

在 v0.18.0 中作为试验性特性引入,在未来版本中,该接口可能在没有预先告知的情况下被改变。参考 https://github.com/optuna/optuna/releases/tag/v0.18.0.

class optuna.integration.lightgbm.LightGBMTuner(params: Dict[str, Any], train_set: lgb.Dataset, num_boost_round: int = 1000, valid_sets: Optional[VALID_SET_TYPE] = None, valid_names: Optional[Any] = None, fobj: Optional[Callable[[...], Any]] = None, feval: Optional[Callable[[...], Any]] = None, feature_name: str = 'auto', categorical_feature: str = 'auto', early_stopping_rounds: Optional[int] = None, evals_result: Optional[Dict[Any, Any]] = None, verbose_eval: Union[bool, int, None] = True, learning_rates: Optional[List[float]] = None, keep_training_booster: Optional[bool] = False, callbacks: Optional[List[Callable[[...], Any]]] = None, time_budget: Optional[int] = None, sample_size: Optional[int] = None, study: Optional[optuna.study.Study] = None, optuna_callbacks: Optional[List[Callable[[optuna.study.Study, optuna.trial._frozen.FrozenTrial], None]]] = None, model_dir: Optional[str] = None, verbosity: Optional[int] = 1)[源代码]

LightGBM 的超参数调节器。

它逐步调整下列超参数:lambda_l1, lambda_l2, num_leaves, feature_fraction, bagging_fraction, bagging_freqmin_child_samples.

你可以在 this blog article 中找到该算法和其基准测试的细节。它是 Kohei Ozaki 由写的,Kohei Ozaki 是一个 Kaggle Grandmaster。

可以传入给 lightgbm.train() 的参数。专属 LightGBMTuner 的参数列在下面了:

参数
  • time_budget -- 以秒计算的调参时间预算。

  • study -- 一个用于存储优化结果的 Study 实例。其中的 Trial 由下列用户属性:elapsed_secs 是自优化开始以来消耗的时间。average_iteration_time 是一个 trial 中训练一个 booster 模型所需要的平均迭代时间。lgbm_params 是一个 JSON 序列化过的,存储 trial 中采用的 LightGBM 的参数的字典。

  • optuna_callbacks -- 在每个trial 结束后触发的 Optuna 回调函数列表。其中每个函数必须接受两个下面这种顺序和类型的参数: Study and FrozenTrial。注意,这不是 lightgbm.train()callbacks 参数。

  • model_dir -- 用于存储 booster 的目录。默认情况下它是 None,也不会存储 booster。如果你想在分布式的环境下获取 get_best_booster() 的话,请设置共享目录(比如 NFS 上的目录)。否则,它会抛出 ValueError 错误。booster 的文件名是有如下形式:{model_dir}/{trial_number}.pkl (比如 ./boosters/0.pkl)。

注解

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

property best_booster

返回最佳 booster。

1.4.0 版后已移除: 请通过 get_best_booster 来获取最佳 booster。

property best_params

返回最佳 booster 的参数。

property best_score

返回最佳 booster 的分数。

get_best_booster() → lgb.Booster[源代码]

返回最佳 booster。

如果无法找到最佳 booster 的话,会抛出 ValueError 。为了避免这种情况,如果你要并行运行 trial 或者恢复调参的话,请通过设置 __init__()model_dir 参数来存储 booster。

run()None

用给定的参数来进行超参数调参。

class optuna.integration.lightgbm.LightGBMTunerCV(params: Dict[str, Any], train_set: lgb.Dataset, num_boost_round: int = 1000, folds: Union[Generator[Tuple[int, int], None, None], Iterator[Tuple[int, int]], BaseCrossValidator, None] = None, nfold: int = 5, stratified: bool = True, shuffle: bool = True, fobj: Optional[Callable[[...], Any]] = None, feval: Optional[Callable[[...], Any]] = None, feature_name: str = 'auto', categorical_feature: str = 'auto', early_stopping_rounds: Optional[int] = None, fpreproc: Optional[Callable[[...], Any]] = None, verbose_eval: Union[bool, int, None] = True, show_stdv: bool = True, seed: int = 0, callbacks: Optional[List[Callable[[...], Any]]] = None, time_budget: Optional[int] = None, sample_size: Optional[int] = None, study: Optional[optuna.study.Study] = None, optuna_callbacks: Optional[List[Callable[[optuna.study.Study, optuna.trial._frozen.FrozenTrial], None]]] = None, verbosity: int = 1)[源代码]

带有交叉验证的 LightGBM 超参数 tuner。

它采用了和 LightGBMTuner 同样的逐步措施。LightGBMTunerCV 通过触发 lightgbm.cv() 来训练和验证 booster,而 LightGBMTuner 则采用 lightgbm.train()。在 a simple example 这里可以看到一个在癌症检测上优化验证集上 log loss 的例子。

除了 metrics, init_modeleval_train_metric,其他参数都可以传递给 lightgbm.cv()LightGBMTunerCV 独有的参数列在下面了:

参数
  • time_budget -- 以秒计算的调参时间预算。

  • study -- 一个用于存储优化结果的 Study 实例。其中的 Trial 由下列用户属性:elapsed_secs 是自优化开始以来消耗的时间。average_iteration_time 是一个 trial 中训练一个 booster 模型所需要的平均迭代时间。lgbm_params 是一个 JSON 序列化过的,存储 trial 中采用的 LightGBM 的参数的字典。

  • optuna_callbacks -- 在每个trial 结束后触发的 Optuna 回调函数列表。其中每个函数必须接受两个下面这种顺序和类型的参数: Study and FrozenTrial。注意,这不是 lightgbm.train()callbacks 参数。

注解

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

property best_params

返回最佳 booster 的参数。

property best_score

返回最佳 booster 的分数。

run()None

用给定的参数来进行超参数调参。

class optuna.integration.MLflowCallback(tracking_uri=None, metric_name='value')[源代码]

用 MLflow 来追踪 Optuna trial 的回调函数。

该回调函数添加被 Optuna 追踪的相关信息到 MLflow 中。而对应的 MLflow 实验会按照 Optuna study 名来命名。

示例

给 Optuna 优化添加一个 MLflow 回调函数。

import optuna
from optuna.integration.mlflow import MLflowCallback

def objective(trial):
    x = trial.suggest_uniform('x', -10, 10)
    return (x - 2) ** 2

mlflc = MLflowCallback(
    tracking_uri=YOUR_TRACKING_URI,
    metric_name='my metric score',
)

study = optuna.create_study(study_name='my_study')
study.optimize(objective, n_trials=10, callbacks=[mlflc])
参数
  • tracking_uri -- MLflow tracking server 的 URI。更多细节请参考 mlflow.set_tracking_uri

  • metric_name -- 度量名。由于度量本身只是一个数字,所以可以用 metric_name 为它命名,这样好让你之后知道它是 roc-auc 还是 accuracy。

注解

在 v1.4.0 中作为试验性特性引入,在未来版本中,该接口可能在没有预先告知的情况下被改变。参考 https://github.com/optuna/optuna/releases/tag/v1.4.0.

class optuna.integration.MXNetPruningCallback(trial, eval_metric)[源代码]

用于清除无望 trial 的 MXNet 回调函数。

如果你想添加一个监测 accuracy 的 pruner 的话,请参考 the example

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • eval_metric -- 用于 pruning 的求值度量名,比如 cross-entropyaccuracy。如果使用像 mxnet.metrics.Accuracy 这样的默认度量的话,就使用它的默认度量名。对于定制的度量,就使用传递给构造函数的 metric_name。更多细节请参考 mxnet.metrics reference

class optuna.integration.PyTorchLightningPruningCallback(trial, monitor)[源代码]

用于清除无望 trial 的 PyTorch Lighting 回调函数。

如果你想添加一个监测 accuracy 的 pruner 的话,请参考 the example

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • monitor -- Pruning 的求值度量,比如 val_lossval_acc 。这戏的度量是通过 pytorch_lightning.LightningModule.training_step 或者 pytorch_lightning.LightningModule.validation_end 返回的字典来获得的。因此,这些度量名取决于字典的格式。

class optuna.integration.SkoptSampler(independent_sampler=None, warn_independent_sampling=True, skopt_kwargs=None, n_startup_trials=1)[源代码]

以 Scikit-Optimize 为后端的 sampler。

示例

SkoptSampler 来优化一个简单的二次函数。

import optuna

def objective(trial):
    x = trial.suggest_uniform('x', -10, 10)
    y = trial.suggest_int('y', 0, 10)
    return x**2 + y

sampler = optuna.integration.SkoptSampler()
study = optuna.create_study(sampler=sampler)
study.optimize(objective, n_trials=10)
参数
  • independent_sampler -- 一个用于独立采样的 BaseSampler 实例。那些不包含在相对搜索空间内的参数都通过它来采样。 SkoptSampler 的搜索空间是通过 intersection_search_space() 来确定的。如果设置成 None 的话,默认会使用 RandomSampler 。.. seealso:: optuna.samplers 模块提供了 内置的独立 sampler,比如 RandomSamplerTPESampler.

  • warn_independent_sampling -- 如果该选项是 True 的话,当参数值是通过一个独立 sampler 来采样时,它会触发一个警告信息。注意,在每一个 study 中的第一个 trial总是通过独立 sampler 来采样的,所以此时不会触发警报信息。

  • skopt_kwargs -- 传递给 skopt.Optimizer 的构造函数的参数。注意 skopt_kwargs 中的 dimensions 参数会被忽略,因为它是通过 SkoptSampler 自动添加的。

  • n_startup_trials -- 在同一个 study 中指定数目的 trial 完成之前,采用的都是独立采样。

reseed_rng()None[源代码]

重置随机数生成器的种子。

当 trial 是以 n_jobs>1 的选项被并行执行时,该方法会被 Study 调用。在这种情况下,sampler 实例和随机数生成器的状态都会被复制,因此它们会产生同样的值,为了避免这种情况,该方法给每一个随机数生成器分配一个不同的种子。

class optuna.integration.TensorFlowPruningHook(trial, estimator, metric, run_every_steps)[源代码]

用于清除无望 trial 的 TensorFlow SessionRunHook。

如果你想给 TensorFlow 的 estimator 添加一个 pruning hook 的话,请参考 the example

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • estimator -- 要使用的 estimator。

  • metric -- 用于 pruning 的度量名,比如 accuracyloss

  • run_every_steps -- 监测 summary 文件的步长间隔。

class optuna.integration.TFKerasPruningCallback(trial, monitor)[源代码]

用于清除无望 trial 的 tf.keras 回调函数。

该回调函数是为 TensorFlow v1 和 v2 兼容设计的,但是只在 TensorFlow v1 上测试过。

如果你想添加一个监测 validation accuracy 的 pruning callback 的话,请参考 the example

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • monitor -- 用于 pruning 的度量名,比如 val_lossval_acc

class optuna.integration.XGBoostPruningCallback(trial, observation_key)[源代码]

用于清除无望 trial 的 XGBoost 回调函数。

如果你想添加一个监测 XGBoost 模型的 validation AUC 的 pruning callback 的话,请参考 the example

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • observation_key -- Pruning 的求值度量,比如 validation-errorvalidation-merror 。在使用 Scikit-Learn API 时,observation_key 中必须包含 eval_set 的索引数,比如 validation_0-error and validation_0-merror。更多细节请参考 XGBoost reference 中的 eval_metric

class optuna.integration.OptunaSearchCV(estimator, param_distributions, cv=5, enable_pruning=False, error_score=nan, max_iter=1000, n_jobs=1, n_trials=10, random_state=None, refit=True, return_train_score=False, scoring=None, study=None, subsample=1.0, timeout=None, verbose=0)[源代码]

带有交叉验证的超参数搜索。

警告

该特性是试验性的,其接口在未来可能会改变。

参数
  • estimator -- 用于拟合数据的对象。它应当用于实现 scikit-learn estimator 接口。它至少要提供 score 或者 scoring

  • param_distributions -- 键为参数值为分布的字典。这些字典应当用于实现 Optuna 的分布接口。

  • cv -- 交叉验证策略。cv 的可能输入有:- 一个用于指定 CV splitter 中的 folds 个数的整数,- 一个 CV splitter,它是一个产生由索引构成的数组的 (train, validation) splits 的 iterable 对象,对于整数而言,如果 if estimator 是一个 classifier 而 y 是 binary 或 multiclass 的话,那么 sklearn.model_selection.StratifiedKFold 会被采用。否则 sklearn.model_selection.KFold 会被采用。

  • enable_pruning -- 如果是 True 的话,当 estimator 支持 partial_fit 时,pruning 会被执行。

  • error_score -- 拟合过程中发生错误时用于指定 score 的值。如果设置成 'raise' 的话,就会抛出错误了。如果设置成数值的话,则 sklearn.exceptions.FitFailedWarning 会被抛出。这并不会影响 refit 步骤,因为后者总是抛出错误。

  • max_iter -- epoch 数目的最大值。它只在 estimator 支持 partial_fit 时会被使用。

  • n_jobs -- 并行运行 job 的数量。如果设置成 -1 的话,并行 job 的数量将等于处理器核心数。

  • n_trials -- trial 数量。如果设置成 None 的话,trial 数目无上限。此时如果 timeout 也是 None 的话,study 会一直创建新 trial,直到接收到一个诸如 Ctrl+C 或 SIGTERM 的终止信号。这是运行时和求解质量之间的权衡。

  • random_state -- 伪随机数生成器的种子。如果是整数的话,它就是被随机数生成器采用的种子。如果是 numpy.random.RandomState 对象的话,它就是随机数生成器本身。如果是 None 的话,则自 numpy.random 中来的全局随机状态会被采用。

  • refit -- 如果设置成 True 的话,将用找到的最佳超参数重新拟合一次 estimator。该 estimator 可以通过 best_estimator_ 属性直接获得,并且可以通过 predict 直接使用。

  • return_train_score -- 如果设置成 True 的话,训练的 score 会被包含在内。计算训练 score 是用于搞清楚超参数设定如何影响 overfitting/underfitting 之间的平衡。不过,计算训练 score 可能消耗大量计算资源,而且严格来说,它对找出能产生最佳泛化效果的超参数而言不是必要的。

  • scoring -- 用于评估验证集上预测结果的字符串或者 callable 对象。如果设置成 None 的话,estimator 上的 score 会被采用。

  • study -- 优化任务对应的 study,如果设置成 None 的话,就会创建一个新的 study。

  • subsample -- 在超参数搜索过程中使用的样本比例,- 如果是整数的话,那么使用 subsample 个样本,- 如果是浮点数的话,就使用 subsample * X.shape[0] 个样本。

  • timeout -- 按秒计的用于寻找合适模型的时间上限。如果设置成 None 的话,study 将在没有时间限制的情况运行。如果此时 n_trials 也是 None 的话,该 study 会一直创建新 trial,直到接收到一个诸如 Ctrl+C 或 SIGTERM 的终止信号。这是运行时和求解质量之间的权衡。

  • verbose -- 冗余级别。设的越高,输出的信息越多。

best_estimator\_

通过搜多确定的 estimator。它只有在 refit 设置成 True 的情况下可用

n_splits\_

交叉验证划分数

refit_time\_

用于再拟合最佳 estimator 的时间。它只有在 refit 设置成 True 的情况下可用

sample_indices\_

超参数搜索过程中使用过的样本索引。

scorer\_

Scorer function.

study\_

Actual study.

实际案例

import optuna
from sklearn.datasets import load_iris
from sklearn.svm import SVC

clf = SVC(gamma='auto')
param_distributions = {
    'C': optuna.distributions.LogUniformDistribution(1e-10, 1e+10)
}
optuna_search = optuna.integration.OptunaSearchCV(
    clf,
    param_distributions
)
X, y = load_iris(return_X_y=True)
optuna_search.fit(X, y)
y_pred = optuna_search.predict(X)
property best_index_

对应于最佳参数设置的索引

property best_params_

Study 中最佳 trial 的参数。

property best_score_

最佳 estimator 的平均交叉验证 score。

property best_trial_

Study 中的最佳 trial。

property classes_

Class labels.

property decision_function

在最佳 estimator 上调用 decision_function

它只有在对应的 estimator支持 decision_functionrefit 设置成 True 的情况下可用。"

fit(X, y=None, groups=None, **fit_params)[源代码]

用所有参数来跑拟合。

参数
  • X -- 训练数据

  • y -- 目标变量。

  • groups -- 将数据集划分成训练/测试集时给样本打的标签。

  • **fit_params -- 传递给 estimator 上的 fit 的参数。

返回

Return self.

返回类型

self

property inverse_transform

调用最佳 estimator 的 inverse_transform

它只有在对应的 estimator支持 inverse_transformrefit 设置成 True 的情况下可用。

property n_trials_

trial 实际数量。

property predict

调用最佳 estimator 的 predict

它只有在对应的 estimator支持 predictrefit 设置成 True 的情况下可用。

property predict_log_proba

调用最佳 predict_log_proba 的 predict

它只有在对应的 estimator支持 predict_log_probarefit 设置成 True 的情况下可用。

property predict_proba

调用最佳 estimator 的 predict_proba

它只有在对应的 estimator支持 predict_probarefit 设置成 True 的情况下可用。

score(X, y=None)[源代码]

返回给定数据的 score。

参数
  • X -- Data.

  • y -- 目标变量。

返回

Scaler score.

返回类型

score

property score_samples

调用最佳 estimator 的 score_samples

它只有在对应的 estimator支持 score_samplesrefit 设置成 True 的情况下可用。

property set_user_attr

调用 Studyset_user_attr

property transform

调用最佳 estimator 的 transform

它只有在对应的 estimator支持 transformrefit 设置成 True 的情况下可用。

property trials_

Study 中的所有 trial。

property trials_dataframe

调用 Studytrials_dataframe

property user_attrs_

Study 中的用户属性。

class optuna.integration.AllenNLPExecutor(trial: optuna.trial._trial.Trial, config_file: str, serialization_dir: str, metrics: str = 'best_validation_accuracy', *, include_package: Union[str, List[str], None] = None)[源代码]

为了让 Jsonnet 配置文件在 Optuna 中可用的 AllenNLP 扩展。

这是个试验性的特性,因为 AllenNLP 的下一个主要版本将发行。而该接口可能在没有提前告知更新的情况下改变。

参见 objective functionconfig file 的例子。

参数
  • trial -- 对应于目标函数本次求值的 Trial

  • config_file -- AllenNLP 的配置文件。其中超参数应当在外面套一层 std.extVar 。参见 the config example.

  • serialization_dir -- 用于存储模型权重和日志的路径。

  • metrics -- 用于评估 objective 结果的度量。

  • include_package -- 要包含的额外包,更多信息参见 AllenNLP documentation.

注解

在 v1.4.0 中作为试验性特性引入,在未来版本中,该接口可能在没有预先告知的情况下被改变。参考 https://github.com/optuna/optuna/releases/tag/v1.4.0.

run()float[源代码]

用 AllenNLP 来训练一个模型。

optuna.integration.allennlp.dump_best_config(input_config_file: str, output_config_file: str, study: optuna.study.Study)None[源代码]

在 study 中的最佳参数更新后存储 JSON 配置文件。

参数
  • input_config_file -- 被 AllenNLPExecutor 使用的输入 Jsonnet 配置文件。

  • output_config_file -- 输出 JSON 配置文件。

  • study -- Study 实例。注意它必须在 optimize() 已经被调用的情况下使用。