automl_search#
EvalML 的核心 AutoML 对象。
模块内容#
类摘要#
自动化流水线搜索。 |
函数#
将并行引擎类型的便捷字符串转换为该引擎实例的函数。 |
|
给定数据和配置,运行自动化机器学习搜索。 |
|
给定数据和配置,运行自动化机器学习搜索。 |
目录#
- class evalml.automl.automl_search.AutoMLSearch(X_train=None, y_train=None, X_holdout=None, y_holdout=None, problem_type=None, objective='auto', max_iterations=None, max_time=None, patience=None, tolerance=None, data_splitter=None, allowed_component_graphs=None, allowed_model_families=None, excluded_model_families=None, features=None, run_feature_selection=True, start_iteration_callback=None, add_result_callback=None, error_callback=None, additional_objectives=None, alternate_thresholding_objective='F1', random_seed=0, n_jobs=-1, tuner_class=None, optimize_thresholds=True, ensembling=False, max_batches=None, problem_configuration=None, train_best_pipeline=True, search_parameters=None, sampler_method='auto', sampler_balanced_ratio=0.25, allow_long_running_models=False, _pipelines_per_batch=5, automl_algorithm='default', engine='sequential', verbose=False, timing=False, exclude_featurizers=None, excluded_model_families=None, holdout_set_size=0, use_recommendation=False, include_recommendation=None, exclude_recommendation=None)[源代码]#
自动化流水线搜索。
- 参数
X_train (pd.DataFrame) – 输入训练数据,形状为 [n_samples, n_features]。必需的。
y_train (pd.Series) – 目标训练数据,长度为 [n_samples]。有监督学习任务必需的。
X_holdout (pd.DataFrame) – 输入保留数据,形状为 [n_samples, n_features]。
y_holdout (pd.Series) – 目标保留数据,长度为 [n_samples]。
problem_type (str or ProblemTypes) – 有监督学习问题类型。请参阅 evalml.problem_types.ProblemType.all_problem_types 获取完整列表。
objective (str, ObjectiveBase) – 要优化的目标函数。用于提出和排序流水线,但在拟合阶段不用于优化每个流水线。当设置为 ‘auto’ 时,选择: - LogLossBinary 用于二元分类问题, - LogLossMulticlass 用于多元分类问题,以及 - R2 用于回归问题。
max_iterations (int) – 最大搜索迭代次数。如果未设置 max_iterations 和 max_time,则 max_iterations 默认为 5。
max_time (int, str) – 最大搜索流水线时间。持续时间过去后,将不会开始新的流水线搜索。如果为整数,则时间单位为秒。对于字符串,时间可以指定为秒、分钟或小时。
patience (int) – 在未改进情况下提前停止搜索的迭代次数。必须为正数。如果为 None,则禁用提前停止。默认为 None。
tolerance (float) – 符合提前停止评分改进条件的最小百分比差异。仅当 patience 不为 None 时适用。默认为 None。
allowed_component_graphs (dict) –
一个字典,包含列表或 ComponentGraphs,指示搜索中允许的组件图。格式应遵循 { “Name_0”: [list_of_components], “Name_1”: ComponentGraph(…) }
默认值 None 表示允许此问题类型的所有流水线组件图。设置此字段将导致 allowed_model_families 被忽略。
e.g. allowed_component_graphs = { “My_Graph”: [“Imputer”, “One Hot Encoder”, “Random Forest Classifier”] }
allowed_model_families (list(str, ModelFamily)) – 要搜索的模型家族。默认值 None 搜索所有模型家族。运行 evalml.pipelines.components.utils.allowed_model_families(“binary”) 查看选项。根据问题类型,将 binary 更改为 multiclass 或 regression。注意:如果提供了 allowed_pipelines,则此参数将被忽略。对于默认算法,这仅适用于非朴素批次中的估计器。
features (list) – 要在 AutoML 流水线上运行 DFS 的特征列表。默认为 None。仅当特征使用的列存在于搜索输入中且特征本身不在搜索输入中时,才会计算特征。如果 features 是空列表,则 DFS Transformer 将不会包含在流水线中。
run_feature_selection (bool) – 如果为 True,将运行单独的特征选择流水线,并且仅在后续批次中使用选定的特征。如果为 False,将对每个流水线使用所有特征。仅用于默认算法,对于迭代算法,此设置无效。
data_splitter (sklearn.model_selection.BaseCrossValidator) – 要使用的数据分割方法。默认为 StratifiedKFold。
tuner_class – 要使用的调优器类。默认为 SKOptTuner。
optimize_thresholds (bool) – 是否优化二元流水线的阈值。默认为 True。
start_iteration_callback (callable) – 在每次流水线训练迭代之前调用的函数。回调函数接受三个位置参数:流水线实例和 AutoMLSearch 对象。
add_result_callback (callable) – 在每次流水线训练迭代之后调用的函数。回调函数接受三个位置参数:包含新流水线训练结果的字典,包含训练期间使用的参数的 untrained_pipeline,以及 AutoMLSearch 对象。
error_callback (callable) – 当 search() 出错并引发 Exception 时调用的函数。回调函数接受三个位置参数:引发的 Exception,traceback,以及 AutoMLSearch 对象。还必须接受 kwargs,以便 AutoMLSearch 默认能够传递其他适当的参数。默认为 None,此时将调用 log_error_callback。
additional_objectives (list) – 用于评分的自定义目标函数集。如果不为空,将覆盖问题类型的默认目标函数。
alternate_thresholding_objective (str) – 如果提供的主要目标函数不可调,则用于二元分类流水线阈值化的目标函数。默认为 F1。
random_seed (int) – 随机数生成器的种子。默认为 0。
n_jobs (int or None) – 描述用于流水线的并行度的非负整数。None 和 1 等效。如果设置为 -1,则使用所有 CPU。对于小于 -1 的 n_jobs,使用 (n_cpus + 1 + n_jobs) 个进程/线程。
ensembling (boolean) – 如果为 True,则在遍历每个允许的流水线类别后,在一个单独的批次中运行集成。如果每个批次要搜索的唯一流水线数量为一个,则不会运行集成。默认为 False。
max_batches (int) – 要搜索的最大流水线批次数量。参数 max_time 和 max_iterations 优先于停止搜索。
problem_configuration (dict, None) – 配置搜索所需的附加参数。例如,在时间序列问题中,应为 time_index、gap、forecast_horizon 和 max_delay 变量传入值。对于多序列时间序列问题,传入的值还应包括 series_id 列的名称。
train_best_pipeline (boolean) – 是否在返回最佳流水线之前对其进行训练。默认为 True。
search_parameters (dict) –
一个字典,包含搜索期间用于迭代的超参数范围或流水线参数。键应为组件名称,值应为流水线参数的单一值/列表,或超参数范围的 skopt.Space。在下面的示例中,Imputer 参数将传递给超参数范围,而 Label Encoder 参数将用作组件参数。
- e.g. search_parameters = { ‘Imputer’{ ‘numeric_impute_strategy’: Categorical([‘most_frequent’, ‘median’]) },
’Label Encoder’: {‘positive_label’: True} }
sampler_method (str) – 如果问题类型是分类且目标平衡度小于 sampler_balanced_ratio,则在流水线中使用的采样组件。可以是 ‘auto’(将使用我们偏好的采样器),‘Undersampler’,‘Oversampler’ 或 None。默认为 ‘auto’。
sampler_balanced_ratio (float) – 我们认为平衡的少数类别与多数类别的比例,例如 1:4 的比例等于 0.25。如果类别平衡度大于此提供的值,我们将不会添加采样器,因为此时数据被认为是平衡的。覆盖采样器的 sampler_ratio。默认为 0.25。
allow_long_running_models (bool) – 是否允许在大型多元分类问题中使用运行时间更长的模型。如果为 False 且未提供流水线、组件图或模型家族,则当多元分类目标超过 75 个时,AutoMLSearch 将不使用 Elastic Net 或 XGBoost;当多元分类目标超过 150 个时,将不使用 CatBoost。默认为 False。
_ensembling_split_size (float) – 我们将用于训练集成元学习器的训练数据量。仅在 ensembling 为 True 时使用。必须在 0 到 1 之间,不包含端点。默认为 0.2
_pipelines_per_batch (int) – 除第一个批次外,每个批次要训练的流水线数量。第一个批次将训练一个基线流水线 + 搜索中允许的每个流水线家族中的一个。
automl_algorithm (str) – 要使用的自动化机器学习算法。当前有两个选择:‘iterative’ 和 ‘default’。默认为 default。
engine (EngineBase or str) – 用于评估流水线的引擎实例。也可以通过提供列表 [“sequential”, “cf_threaded”, “cf_process”, “dask_threaded”, “dask_process”] 中的字符串来选择 Dask 或 concurrent.futures 引擎。如果以这种方式选择了并行引擎,将使用由引擎确定的最大并行度。默认为 “sequential”。
verbose (boolean) – 在搜索运行时是否向标准输出显示半实时更新。默认为 False。
timing (boolean) – 是否将流水线搜索时间写入日志。默认为 False。
exclude_featurizers (list[str]) – 要从搜索构建的流水线中排除的特征化组件列表。有效选项包括 "DatetimeFeaturizer", "EmailFeaturizer", "URLFeaturizer", "NaturalLanguageFeaturizer", "TimeSeriesFeaturizer"
excluded_model_families (list(str, ModelFamily)) – 构建流水线时要从使用的估计器中排除的模型家族列表。对于默认算法,这仅排除非朴素批次中的估计器。
holdout_set_size (float) – 对于大于 500 行的数据集,AutoML 搜索将采用的保留集大小。如果设置为 0,则无论行数多少都不会采用保留集。必须在 0 到 1 之间,不包含端点。默认为 0.1。
use_recommendation (bool) – 是否使用推荐分数来对流水线进行排名,而不是使用优化目标函数。默认为 False。
include_recommendation (list[str]) – 在推荐分数中,除了默认目标函数外要包含的目标函数列表。默认为 None。
exclude_recommendation (list[str]) – 在推荐分数中,从默认目标函数中排除的目标函数列表。默认为 None。
方法
拟合并评估给定的流水线,然后将结果添加到 automl 排名中,前提是已运行 automl 搜索。
返回在 automl 搜索期间找到的最佳流水线和参数的已训练实例。如果 train_best_pipeline 设置为 False,则返回一个未训练的流水线实例。
用于显式关闭引擎、客户端、并行资源的函数。
描述流水线。
返回一个包含所有搜索到的流水线评分结果的 pandas.DataFrame。
给定集成流水线 ID,返回输入流水线 ID 列表。
给定流水线训练结果的 ID,返回一个使用在 automl 搜索期间训练该流水线所用参数初始化的指定流水线的未训练实例。
报告给定流水线推荐分数计算中使用的目标函数的评分。
计算搜索结果中所有流水线的推荐分数。
从文件路径加载 AutoML 对象。
返回包含最新分数的图表实例。
返回一个 pandas.DataFrame,其中包含与每个流水线一起使用的得分最高参数集的评分结果。
一个类,允许访问 automl_search 结果的副本。
将 AutoML 对象保存到文件路径。
在给定的保留数据上对流水线列表进行评分。
找到最适合数据集的流水线。
在训练数据上训练流水线列表。
- add_to_rankings(self, pipeline)[源代码]#
拟合并评估给定的流水线,然后将结果添加到 automl 排名中,前提是已运行 automl 搜索。
- 参数
pipeline (PipelineBase) – 要训练和评估的流水线。
- property best_pipeline(self)#
返回在 automl 搜索期间找到的最佳流水线和参数的已训练实例。如果 train_best_pipeline 设置为 False,则返回一个未训练的流水线实例。
- 返回
返回在 automl 搜索期间找到的最佳流水线和参数的已训练实例。如果 train_best_pipeline 设置为 False,则返回一个未训练的流水线实例。
- 返回类型
PipelineBase
- 引发
PipelineNotFoundError – 如果在调用 .search() 之前调用此方法。
- describe_pipeline(self, pipeline_id, return_dict=False)[源代码]#
描述流水线。
- 参数
pipeline_id (int) – 要描述的流水线
return_dict (bool) – 如果为 True,则返回关于流水线的字典信息。默认为 False。
- 返回
指定流水线的描述。包括流水线组件类型、问题、训练时间、交叉验证等信息。
- 引发
PipelineNotFoundError – 如果 pipeline_id 不是有效的 ID。
- property full_rankings(self)#
返回一个包含所有搜索到的流水线评分结果的 pandas.DataFrame。
- get_ensembler_input_pipelines(self, ensemble_pipeline_id)[源代码]#
给定集成流水线 ID,返回输入流水线 ID 列表。
- 参数
ensemble_pipeline_id (id) – 要从中获取输入流水线 ID 的集成流水线 ID。
- 返回
集成输入流水线 ID 的列表。
- 返回类型
list[int]
- 引发
ValueError – 如果 ensemble_pipeline_id 与有效的集成流水线 ID 不对应。
- get_pipeline(self, pipeline_id)[源代码]#
给定流水线训练结果的 ID,返回一个使用在 automl 搜索期间训练该流水线所用参数初始化的指定流水线的未训练实例。
- 参数
pipeline_id (int) – 要检索的流水线。
- 返回
与提供的 ID 关联的未训练流水线实例。
- 返回类型
PipelineBase
- 引发
PipelineNotFoundError – 如果 pipeline_id 不是有效的 ID。
- get_recommendation_score_breakdown(self, pipeline_id)[源代码]#
报告给定流水线推荐分数计算中使用的目标函数的评分。
请注意,这些分数以原始形式报告,未缩放到 0 到 1 之间。
- 参数
pipeline_id (int) – 要获取推荐分数详细信息的流水线 ID。
- 返回
一个字典,包含推荐分数计算中使用的每个目标函数的评分。
- 返回类型
dict
- get_recommendation_scores(self, priority=None, custom_weights=None, use_pipeline_names=False)[源代码]#
计算搜索结果中所有流水线的推荐分数。
- 参数
priority (str) – 优先目标函数的可选名称,应给予比其他有助于评分的目标函数更高的权重(0.5)。默认为 None,此时所有目标函数的权重相等。
custom_weights (dict[str,float]) – 一个将目标函数名称映射到 0 到 1 之间相应权重的字典。不应与 prioritized_objective 同时使用。默认为 None。
use_pipeline_names (bool) – 是否返回流水线名称而不是 ID 作为推荐分数字典的键。默认为 False。
- 返回
一个将流水线 ID 映射到推荐分数的字典
- static load(file_path, pickle_type='cloudpickle')[源代码]#
从文件路径加载 AutoML 对象。
- 参数
file_path (str) – 要加载文件的位置
pickle_type ({"pickle", "cloudpickle"}) – 要使用的序列化库。当前未使用,因为标准 pickle 库可以处理 cloudpickles。
- 返回
AutoSearchBase 对象
- property plot(self)#
返回包含最新分数的图表实例。
- property rankings(self)#
返回一个 pandas.DataFrame,其中包含与每个流水线一起使用的得分最高参数集的评分结果。
- property results(self)#
一个类,允许访问 automl_search 结果的副本。
- 返回
- 包含 pipeline_results 的字典,pipeline_results 是一个包含每个流水线结果的字典,
以及 search_order,一个描述流水线搜索顺序的列表。
- 返回类型
dict
- save(self, file_path, pickle_type='cloudpickle', pickle_protocol=cloudpickle.DEFAULT_PROTOCOL)[源代码]#
将 AutoML 对象保存到文件路径。
- 参数
file_path (str) – 保存文件的位置。
pickle_type ({"pickle", "cloudpickle"}) – 要使用的序列化库。
pickle_protocol (int) – pickle 数据流格式。
- 引发
ValueError – 如果 pickle_type 不是 “pickle” 或 “cloudpickle”。
- score_pipelines(self, pipelines, X_holdout, y_holdout, objectives)[源代码]#
在给定的保留数据上对流水线列表进行评分。
- 参数
pipelines (list[PipelineBase]) – 要训练的流水线列表。
X_holdout (pd.DataFrame) – 保留特征。
y_holdout (pd.Series) – 用于评分的保留目标。
objectives (list[str], list[ObjectiveBase]) – 用于评分的目标函数。
- 返回
以流水线名称为键,映射到评分字典的字典。请注意,任何在评分期间出错的流水线将不会包含在字典中,但异常和堆栈跟踪将显示在日志中。
- 返回类型
dict[str, Dict[str, float]]
- search(self, interactive_plot=True)[源代码]#
找到最适合数据集的流水线。
- 参数
interactive_plot (boolean, True) – 在 Jupyter notebook 中显示迭代 vs. 分数图。在非 Jupyter 环境中默认禁用。
- 引发
AutoMLSearchException – 如果当前 AutoML 批次中的所有流水线在主要目标函数上的得分均为 np.nan。
- 返回
以批次号为键的字典,映射到在该批次中运行的流水线的时间,以及每个批次的总时间。批次内的流水线以流水线名称标记。
- 返回类型
Dict[int, Dict[str, Timestamp]]
- evalml.automl.automl_search.build_engine_from_str(engine_str)[源代码]#
将并行引擎类型的便捷字符串转换为该引擎实例的函数。
- 参数
engine_str (str) – 表示请求的引擎的字符串。
- 返回
请求的引擎实例。
- 返回类型
(EngineBase)
- 引发
ValueError – 如果 engine_str 不是有效的引擎。
- evalml.automl.automl_search.search(X_train=None, y_train=None, problem_type=None, objective='auto', mode='fast', max_time=None, patience=None, tolerance=None, problem_configuration=None, n_splits=3, verbose=False, timing=False)[源代码]#
给定数据和配置,运行自动化机器学习搜索。
此方法将运行 EvalML 的默认数据检查套件。如果数据检查产生错误,将在运行 automl 搜索之前返回数据检查结果。在这种情况下,我们建议您修改数据以解决这些错误,然后重试。提供此方法是为了方便。如果您想更精细地控制这些步骤何时运行,可以考虑直接调用数据检查和 AutoMLSearch 等各个组件,而不是使用此方法。
- 参数
X_train (pd.DataFrame) – 输入训练数据,形状为 [n_samples, n_features]。必需的。
y_train (pd.Series) – 目标训练数据,长度为 [n_samples]。有监督学习任务必需的。
problem_type (str or ProblemTypes) – 有监督学习问题类型。请参阅 evalml.problem_types.ProblemType.all_problem_types 获取完整列表。
objective (str, ObjectiveBase) – 要优化的目标函数。用于提出和排序流水线,但在拟合阶段不用于优化每个流水线。当设置为 ‘auto’ 时,选择: - LogLossBinary 用于二元分类问题, - LogLossMulticlass 用于多元分类问题,以及 - R2 用于回归问题。
mode (str) – DefaultAlgorithm 的模式。有两种模式:fast 和 long,其中 fast 是 long 的子集。请参阅 DefaultAlgorithm 获取更多详细信息。
max_time (int, str) – 最大搜索流水线时间。持续时间过去后,将不会开始新的流水线搜索。如果为整数,则时间单位为秒。对于字符串,时间可以指定为秒、分钟或小时。
patience (int) – 在未改进情况下提前停止搜索的迭代次数。必须为正数。如果为 None,则禁用提前停止。默认为 None。
tolerance (float) – 符合提前停止评分改进条件的最小百分比差异。仅当 patience 不为 None 时适用。默认为 None。
problem_configuration (dict) – 配置搜索所需的附加参数。例如,在时间序列问题中,应为 time_index、gap、forecast_horizon 和 max_delay 变量传入值。
n_splits (int) – 与默认数据分割器一起使用的分割数量。
verbose (boolean) – 在搜索运行时是否向标准输出显示半实时更新。默认为 False。
timing (boolean) – 是否将流水线搜索时间写入日志。默认为 False。
- 返回
包含流水线和排名的自动化机器学习搜索对象,以及运行数据检查的结果。如果数据检查结果包含错误,则不会运行 automl 搜索,也不会返回自动化机器学习搜索对象。
- 返回类型
(AutoMLSearch, dict)
- 引发
ValueError – 如果搜索配置无效。
- evalml.automl.automl_search.search_iterative(X_train=None, y_train=None, problem_type=None, objective='auto', problem_configuration=None, n_splits=3, timing=False, **kwargs)[源代码]#
给定数据和配置,运行自动化机器学习搜索。
此方法将运行 EvalML 的默认数据检查套件。如果数据检查产生错误,将在运行 automl 搜索之前返回数据检查结果。在这种情况下,我们建议您修改数据以解决这些错误,然后重试。提供此方法是为了方便。如果您想更精细地控制这些步骤何时运行,可以考虑直接调用数据检查和 AutoMLSearch 等各个组件,而不是使用此方法。
- 参数
X_train (pd.DataFrame) – 输入训练数据,形状为 [n_samples, n_features]。必需的。
y_train (pd.Series) – 目标训练数据,长度为 [n_samples]。有监督学习任务必需的。
problem_type (str or ProblemTypes) – 有监督学习问题类型。请参阅 evalml.problem_types.ProblemType.all_problem_types 获取完整列表。
objective (str, ObjectiveBase) – 要优化的目标函数。用于提出和排序流水线,但在拟合阶段不用于优化每个流水线。当设置为 ‘auto’ 时,选择: - LogLossBinary 用于二元分类问题, - LogLossMulticlass 用于多元分类问题,以及 - R2 用于回归问题。
problem_configuration (dict) – 配置搜索所需的附加参数。例如,在时间序列问题中,应为 time_index、gap、forecast_horizon 和 max_delay 变量传入值。
n_splits (int) – 与默认数据分割器一起使用的分割数量。
timing (boolean) – 是否将流水线搜索时间写入日志。默认为 False。
**kwargs – 提供的其他关键字参数将传递给 AutoMLSearch。
- 返回
包含流水线和排名的自动化机器学习搜索对象,以及运行数据检查的结果。如果数据检查结果包含错误,则不会运行 automl 搜索,也不会返回自动化机器学习搜索对象。
- 返回类型
(AutoMLSearch, dict)
- 引发
ValueError – 如果搜索配置无效。