调优器#

EvalML 调优器类。

包内容#

类摘要#

GridSearchTuner

网格搜索优化器,用于生成所有可能的网格搜索点。

RandomSearchTuner

随机搜索优化器。

SKOptTuner

贝叶斯优化器。

Tuner

基础调优器类。

异常摘要#

目录#

class evalml.tuners.GridSearchTuner(pipeline_hyperparameter_ranges, n_points=10, random_seed=0)[source]#

网格搜索优化器,用于生成所有可能的网格搜索点。

参数
  • pipeline_hyperparameter_ranges (dict) – 对应于管道参数的一组超参数范围

  • n_points (int) – 在 space 参数中定义的每个维度上采样的点数。默认为 10。

  • random_seed (int) – 随机数生成器的种子。在此类中未使用,默认为 0。

示例

>>> tuner = GridSearchTuner({'My Component': {'param a': [0.0, 10.0], 'param b': ['a', 'b', 'c']}}, n_points=5)
>>> proposal = tuner.propose()
...
>>> assert proposal.keys() == {'My Component'}
>>> assert proposal['My Component'] == {'param a': 0.0, 'param b': 'a'}

使用网格搜索方法确定点。

>>> for each in range(5):
...     print(tuner.propose())
{'My Component': {'param a': 0.0, 'param b': 'b'}}
{'My Component': {'param a': 0.0, 'param b': 'c'}}
{'My Component': {'param a': 10.0, 'param b': 'a'}}
{'My Component': {'param a': 10.0, 'param b': 'b'}}
{'My Component': {'param a': 10.0, 'param b': 'c'}}

方法

add

不适用于网格搜索调优器,因为生成的参数不依赖于先前参数的分数。

get_starting_parameters

获取给定管道超参数范围的起始参数。

is_search_space_exhausted

检查是否可以生成一组有效参数。将生成的参数存储在 self.curr_params 中,以便由 propose() 返回。

propose

返回来自 _grid_points 迭代的参数。

add(self, pipeline_parameters, score)[source]#

不适用于网格搜索调优器,因为生成的参数不依赖于先前参数的分数。

参数
  • pipeline_parameters (dict) – 用于评估管道的参数字典

  • score (float) – 使用提供的参数评估管道获得的分数

get_starting_parameters(self, hyperparameter_ranges, random_seed=0)#

获取给定管道超参数范围的起始参数。

参数
  • hyperparameter_ranges (dict) – 在搜索过程中传入的自定义超参数范围。用于确定起始参数。

  • random_seed (int) – 要使用的随机种子。默认为 0。

返回

随机选择的起始参数,用于初始化管道。

返回类型

dict

is_search_space_exhausted(self)[source]#

检查是否可以生成一组有效参数。将生成的参数存储在 self.curr_params 中,以便由 propose() 返回。

返回

如果搜索空间中不存在更多有效参数,则返回 False。

返回类型

bool

抛出

NoParamsException – 如果搜索空间耗尽,则抛出此异常。

propose(self)[source]#

返回来自 _grid_points 迭代的参数。

如果所有可能的参数组合都已评分,则抛出 NoParamsException

返回

提议的管道参数

返回类型

dict

exception evalml.tuners.NoParamsException[source]#

当调优器耗尽其搜索空间并且没有参数可提议时抛出。

exception evalml.tuners.ParameterError[source]#

当调优器在使用参数时遇到错误时抛出。

class evalml.tuners.RandomSearchTuner(pipeline_hyperparameter_ranges, with_replacement=False, replacement_max_attempts=10, random_seed=0)[source]#

随机搜索优化器。

参数
  • pipeline_hyperparameter_ranges (dict) – 对应于管道参数的一组超参数范围

  • with_replacement (bool) – 如果为 False,则只显示唯一的超参数

  • replacement_max_attempts (int) – 获取唯一随机参数集的最大尝试次数。仅当调优器使用 with_replacement=True 初始化时使用

  • random_seed (int) – 随机数生成器的种子。默认为 0。

示例

>>> tuner = RandomSearchTuner({'My Component': {'param a': [0.0, 10.0], 'param b': ['a', 'b', 'c']}}, random_seed=42)
>>> proposal = tuner.propose()
...
>>> assert proposal.keys() == {'My Component'}
>>> assert proposal['My Component'] == {'param a': 3.7454011884736254, 'param b': 'c'}

使用随机搜索方法确定点。

>>> for each in range(7):
...     print(tuner.propose())
{'My Component': {'param a': 7.3199394181140525, 'param b': 'b'}}
{'My Component': {'param a': 1.5601864044243654, 'param b': 'a'}}
{'My Component': {'param a': 0.5808361216819947, 'param b': 'c'}}
{'My Component': {'param a': 6.011150117432089, 'param b': 'c'}}
{'My Component': {'param a': 0.2058449429580245, 'param b': 'c'}}
{'My Component': {'param a': 8.32442640800422, 'param b': 'a'}}
{'My Component': {'param a': 1.8182496720710064, 'param b': 'a'}}

方法

add

不适用于随机搜索调优器,因为生成的参数不依赖于先前参数的分数。

get_starting_parameters

获取给定管道超参数范围的起始参数。

is_search_space_exhausted

检查是否可以生成一组有效参数。将生成的参数存储在 self.curr_params 中,以便由 propose() 返回。

propose

生成一组唯一参数。

add(self, pipeline_parameters, score)[source]#

不适用于随机搜索调优器,因为生成的参数不依赖于先前参数的分数。

参数
  • pipeline_parameters (dict) – 用于评估管道的参数字典

  • score (float) – 使用提供的参数评估管道获得的分数

get_starting_parameters(self, hyperparameter_ranges, random_seed=0)#

获取给定管道超参数范围的起始参数。

参数
  • hyperparameter_ranges (dict) – 在搜索过程中传入的自定义超参数范围。用于确定起始参数。

  • random_seed (int) – 要使用的随机种子。默认为 0。

返回

随机选择的起始参数,用于初始化管道。

返回类型

dict

is_search_space_exhausted(self)[source]#

检查是否可以生成一组有效参数。将生成的参数存储在 self.curr_params 中,以便由 propose() 返回。

返回

如果搜索空间中不存在更多有效参数,则返回 False。

返回类型

bool

抛出

NoParamsException – 如果搜索空间耗尽,则抛出此异常。

propose(self)[source]#

生成一组唯一参数。

如果调优器使用 with_replacement=True 初始化,并且在 replacement_max_attempts 次尝试后无法生成唯一参数集,则抛出 NoParamsException

返回

提议的管道参数

返回类型

dict

class evalml.tuners.SKOptTuner(pipeline_hyperparameter_ranges, random_seed=0)[source]#

贝叶斯优化器。

参数
  • pipeline_hyperparameter_ranges (dict) – 对应于管道参数的一组超参数范围。

  • random_seed (int) – 随机数生成器的种子。默认为 0。

示例

>>> tuner = SKOptTuner({'My Component': {'param a': [0.0, 10.0], 'param b': ['a', 'b', 'c']}})
>>> proposal = tuner.propose()
...
>>> assert proposal.keys() == {'My Component'}
>>> assert proposal['My Component'] == {'param a': 5.928446182250184, 'param b': 'c'}

使用贝叶斯优化方法确定点。

>>> for each in range(7):
...     print(tuner.propose())
{'My Component': {'param a': 8.57945617622757, 'param b': 'c'}}
{'My Component': {'param a': 6.235636967859724, 'param b': 'b'}}
{'My Component': {'param a': 2.9753460654447235, 'param b': 'a'}}
{'My Component': {'param a': 2.7265629458011325, 'param b': 'b'}}
{'My Component': {'param a': 8.121687287754932, 'param b': 'b'}}
{'My Component': {'param a': 3.927847961008298, 'param b': 'c'}}
{'My Component': {'param a': 3.3739616041726843, 'param b': 'b'}}

方法

add

将分数添加到样本。

get_starting_parameters

获取给定管道超参数范围的起始参数。

is_search_space_exhausted

可选。如果调优器的可能搜索空间是有限的,则此方法指示是否所有可能的参数都已评分。

propose

基于搜索空间维度和先验样本,返回一组建议参数用于训练和评估管道。

add(self, pipeline_parameters, score)[source]#

将分数添加到样本。

参数
  • pipeline_parameters (dict) – 用于评估管道的参数字典

  • score (float) – 使用提供的参数评估管道获得的分数

返回

抛出
  • Exception – 如果 skopt 调优器出错。

  • ParameterError – 如果 skopt 收到无效参数。

get_starting_parameters(self, hyperparameter_ranges, random_seed=0)#

获取给定管道超参数范围的起始参数。

参数
  • hyperparameter_ranges (dict) – 在搜索过程中传入的自定义超参数范围。用于确定起始参数。

  • random_seed (int) – 要使用的随机种子。默认为 0。

返回

随机选择的起始参数,用于初始化管道。

返回类型

dict

is_search_space_exhausted(self)#

可选。如果调优器的可能搜索空间是有限的,则此方法指示是否所有可能的参数都已评分。

返回

如果搜索空间中所有可能的参数都已评分,则返回 true。

返回类型

bool

propose(self)[source]#

基于搜索空间维度和先验样本,返回一组建议参数用于训练和评估管道。

返回

提议的管道参数。

返回类型

dict

class evalml.tuners.Tuner(pipeline_hyperparameter_ranges, random_seed=0)[source]#

基础调优器类。

调优器实现了从搜索空间采样的不同策略。它们在 EvalML 中用于搜索管道超参数空间。

参数
  • pipeline_hyperparameter_ranges (dict) – 对应于管道参数的一组超参数范围。

  • random_seed (int) – 随机状态。默认为 0。

方法

add

使用通过那些超参数训练管道获得的分数注册一组超参数。

get_starting_parameters

获取给定管道超参数范围的起始参数。

is_search_space_exhausted

可选。如果调优器的可能搜索空间是有限的,则此方法指示是否所有可能的参数都已评分。

propose

基于搜索空间维度和先验样本,返回一组建议参数用于训练和评估管道。

abstract add(self, pipeline_parameters, score)[source]#

使用通过那些超参数训练管道获得的分数注册一组超参数。

参数
  • pipeline_parameters (dict) – 用于评估管道的参数字典

  • score (float) – 使用提供的参数评估管道获得的分数

返回

get_starting_parameters(self, hyperparameter_ranges, random_seed=0)[source]#

获取给定管道超参数范围的起始参数。

参数
  • hyperparameter_ranges (dict) – 在搜索过程中传入的自定义超参数范围。用于确定起始参数。

  • random_seed (int) – 要使用的随机种子。默认为 0。

返回

随机选择的起始参数,用于初始化管道。

返回类型

dict

is_search_space_exhausted(self)[source]#

可选。如果调优器的可能搜索空间是有限的,则此方法指示是否所有可能的参数都已评分。

返回

如果搜索空间中所有可能的参数都已评分,则返回 true。

返回类型

bool

abstract propose(self)[source]#

基于搜索空间维度和先验样本,返回一组建议参数用于训练和评估管道。

返回

提议的管道参数

返回类型

dict