Evalml#
EvalML.
子包#
- AutoML
- 数据检查
- class_imbalance_data_check
- data_check
- data_check_action
- data_check_action_code
- data_check_action_option
- data_check_message
- data_check_message_code
- data_check_message_type
- data_checks
- datetime_format_data_check
- default_data_checks
- id_columns_data_check
- invalid_target_data_check
- mismatched_series_length_data_check
- multicollinearity_data_check
- no_variance_data_check
- null_data_check
- outliers_data_check
- sparsity_data_check
- target_distribution_data_check
- target_leakage_data_check
- ts_parameters_data_check
- ts_splitting_data_check
- uniqueness_data_check
- utils
- 演示
- 异常
- 模型族
- 模型理解
- 目标
- 管道
- 预处理
- 问题类型
- 调优器
- 工具函数
包内容#
类摘要#
自动化管道搜索。 |
函数#
给定数据和配置,运行自动化机器学习搜索。 |
|
给定数据和配置,运行自动化机器学习搜索。 |
内容#
- class evalml.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, holdout_set_size=0, use_recommendation=False, include_recommendation=None, exclude_recommendation=None)[source]#
自动化管道搜索。
- 参数
X_train (pd.DataFrame) – 输入训练数据,形状为 [样本数, 特征数]。必需。
y_train (pd.Series) – 目标训练数据,长度为 [样本数]。监督学习任务必需。
X_holdout (pd.DataFrame) – 输入保留数据,形状为 [样本数, 特征数]。
y_holdout (pd.Series) – 目标保留数据,长度为 [样本数]。
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 列表。
一个字典,包含允许在搜索中使用的组件图列表或 ComponentGraphs。格式应遵循 { “Name_0”: [组件列表], “Name_1”: ComponentGraph(…) }
默认值 None 表示允许此问题类型的所有管道组件图。设置此字段将导致忽略 allowed_model_families。
例如 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() 出现错误并引发异常时调用的函数。回调函数接受三个位置参数:引发的异常、回溯以及 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) 个 CPU。
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 参数将用作组件参数。
- 例如 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。
方法
拟合并评估给定的管道,然后将结果添加到自动化机器学习排名中,前提是已经运行了自动化机器学习搜索。
返回在自动化机器学习搜索期间找到的最佳管道和参数的训练实例。如果 train_best_pipeline 设置为 False,则返回未训练的管道实例。
明确关闭引擎、客户端、并行资源的函数。
描述一个管道。
返回一个 pandas.DataFrame,包含所有搜索过的管道的评分结果。
给定集成器管道 ID,返回输入管道 ID 列表。
给定管道训练结果的 ID,返回使用在自动化机器学习搜索期间训练该管道所用参数初始化的指定管道的未训练实例。
报告给定管道的推荐分数计算中使用的目标的得分。
计算搜索结果中所有管道的推荐分数。
从文件路径加载 AutoML 对象。
返回包含最新分数的图表实例。
返回一个 pandas.DataFrame,包含与每个管道一起使用的得分最高参数集的评分结果。
允许访问 automl_search 结果副本的类。
将 AutoML 对象保存到文件路径。
使用给定的保留数据对管道列表进行评分。
找到适合数据集的最佳管道。
使用训练数据训练管道列表。
- add_to_rankings(self, pipeline)[source]#
拟合并评估给定的管道,然后将结果添加到自动化机器学习排名中,前提是已经运行了自动化机器学习搜索。
- 参数
pipeline (PipelineBase) – 要训练和评估的管道。
- property best_pipeline(self)#
返回在自动化机器学习搜索期间找到的最佳管道和参数的训练实例。如果 train_best_pipeline 设置为 False,则返回未训练的管道实例。
- 返回
返回在自动化机器学习搜索期间找到的最佳管道和参数的训练实例。如果 train_best_pipeline 设置为 False,则返回未训练的管道实例。
- 返回类型
PipelineBase
- 引发
PipelineNotFoundError – 如果在调用 .search() 之前调用此方法,则引发。
- describe_pipeline(self, pipeline_id, return_dict=False)[source]#
描述一个管道。
- 参数
pipeline_id (int) – 要描述的管道 ID。
return_dict (bool) – 如果为 True,返回包含管道信息的字典。默认为 False。
- 返回
指定管道的描述。包括管道组件类型、问题、训练时间、交叉验证等信息。
- 引发
PipelineNotFoundError – 如果 pipeline_id 不是有效 ID,则引发。
- property full_rankings(self)#
返回一个 pandas.DataFrame,包含所有搜索过的管道的评分结果。
- get_ensembler_input_pipelines(self, ensemble_pipeline_id)[source]#
给定集成器管道 ID,返回输入管道 ID 列表。
- 参数
ensemble_pipeline_id (id) – 要获取输入管道 ID 的集成管道 ID。
- 返回
集成输入管道 ID 列表。
- 返回类型
list[int]
- 引发
ValueError – If ensemble_pipeline_id 不对应于有效的集成管道 ID,则引发。
- get_pipeline(self, pipeline_id)[source]#
给定管道训练结果的 ID,返回使用在自动化机器学习搜索期间训练该管道所用参数初始化的指定管道的未训练实例。
- 参数
pipeline_id (int) – 要检索的管道 ID。
- 返回
与提供的 ID 相关联的未训练管道实例。
- 返回类型
PipelineBase
- 引发
PipelineNotFoundError – if pipeline_id 不是有效 ID,则引发。
- get_recommendation_score_breakdown(self, pipeline_id)[source]#
报告给定管道的推荐分数计算中使用的目标的得分。
请注意,这些分数以原始形式报告,未缩放到 0 到 1 之间。
- 参数
pipeline_id (int) – 要获取推荐分数分解的管道 ID。
- 返回
一个字典,包含推荐分数计算中使用的每个目标的得分。
- 返回类型
dict
- get_recommendation_scores(self, priority=None, custom_weights=None, use_pipeline_names=False)[source]#
计算搜索结果中所有管道的推荐分数。
- 参数
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')[source]#
从文件路径加载 AutoML 对象。
- 参数
file_path (str) – 要加载的文件位置。
pickle_type ({"pickle", "cloudpickle"}) – 要使用的 pickle 库。目前未使用,因为标准 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)[source]#
将 AutoML 对象保存到文件路径。
- 参数
file_path (str) – 保存文件的位置。
pickle_type ({"pickle", "cloudpickle"}) – 要使用的 pickle 库。
pickle_protocol (int) – pickle 数据流格式。
- 引发
ValueError – If pickle_type 不是“pickle”或“cloudpickle”,则引发。
- score_pipelines(self, pipelines, X_holdout, y_holdout, objectives)[source]#
使用给定的保留数据对管道列表进行评分。
- 参数
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)[source]#
找到适合数据集的最佳管道。
- 参数
interactive_plot (boolean, True) – 在 Jupyter notebook 中显示迭代次数与得分的图表。在非 Jupyter 环境中默认禁用。
- 引发
AutoMLSearchException – 如果当前 AutoML 批次中的所有管道在主要目标上得分均为 np.nan,则引发。
- 返回
以批次号为键的字典,映射到该批次中运行的管道的计时以及每个批次的总时间。批次内的管道按管道名称标记。
- 返回类型
Dict[int, Dict[str, Timestamp]]
- evalml.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)[source]#
给定数据和配置,运行自动化机器学习搜索。
此方法将运行 EvalML 的默认数据检查套件。如果数据检查产生错误,将在运行自动化机器学习搜索之前返回数据检查结果。在这种情况下,我们建议您修改数据以解决这些错误,然后重试。提供此方法是为了方便。如果您想更精细地控制每个步骤的运行时间,请考虑直接调用数据检查和 AutoMLSearch 等各个部分,而不是使用此方法。
- 参数
X_train (pd.DataFrame) – 输入训练数据,形状为 [样本数, 特征数]。必需。
y_train (pd.Series) – 目标训练数据,长度为 [样本数]。监督学习任务必需。
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。
- 返回
包含管道和排名的自动化机器学习搜索对象,以及运行数据检查的结果。如果数据检查结果包含错误,将不运行自动化机器学习搜索,也不会返回自动化机器学习搜索对象。
- 返回类型
(AutoMLSearch, dict)
- 引发
ValueError – 如果搜索配置无效,则引发。
- evalml.search_iterative(X_train=None, y_train=None, problem_type=None, objective='auto', problem_configuration=None, n_splits=3, timing=False, **kwargs)[source]#
给定数据和配置,运行自动化机器学习搜索。
此方法将运行 EvalML 的默认数据检查套件。如果数据检查产生错误,将在运行自动化机器学习搜索之前返回数据检查结果。在这种情况下,我们建议您修改数据以解决这些错误,然后重试。提供此方法是为了方便。如果您想更精细地控制每个步骤的运行时间,请考虑直接调用数据检查和 AutoMLSearch 等各个部分,而不是使用此方法。
- 参数
X_train (pd.DataFrame) – 输入训练数据,形状为 [样本数, 特征数]。必需。
y_train (pd.Series) – 目标训练数据,长度为 [样本数]。监督学习任务必需。
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。
- 返回
包含管道和排名的自动化机器学习搜索对象,以及运行数据检查的结果。如果数据检查结果包含错误,将不运行自动化机器学习搜索,也不会返回自动化机器学习搜索对象。
- 返回类型
(AutoMLSearch, dict)
- 引发
ValueError – 如果搜索配置无效,则引发。