调优器#
EvalML 调优器类。
包内容#
类摘要#
网格搜索优化器,用于生成所有可能的网格搜索点。 |
|
随机搜索优化器。 |
|
贝叶斯优化器。 |
|
基础调优器类。 |
异常摘要#
目录#
- 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'}}
方法
不适用于网格搜索调优器,因为生成的参数不依赖于先前参数的分数。
获取给定管道超参数范围的起始参数。
检查是否可以生成一组有效参数。将生成的参数存储在
self.curr_params
中,以便由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 – 如果搜索空间耗尽,则抛出此异常。
- 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'}}
方法
不适用于随机搜索调优器,因为生成的参数不依赖于先前参数的分数。
获取给定管道超参数范围的起始参数。
检查是否可以生成一组有效参数。将生成的参数存储在
self.curr_params
中,以便由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 – 如果搜索空间耗尽,则抛出此异常。
- 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(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
- class evalml.tuners.Tuner(pipeline_hyperparameter_ranges, random_seed=0)[source]#
基础调优器类。
调优器实现了从搜索空间采样的不同策略。它们在 EvalML 中用于搜索管道超参数空间。
- 参数
pipeline_hyperparameter_ranges (dict) – 对应于管道参数的一组超参数范围。
random_seed (int) – 随机状态。默认为 0。
方法
使用通过那些超参数训练管道获得的分数注册一组超参数。
获取给定管道超参数范围的起始参数。
可选。如果调优器的可能搜索空间是有限的,则此方法指示是否所有可能的参数都已评分。
基于搜索空间维度和先验样本,返回一组建议参数用于训练和评估管道。
- 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