AutoMLConfig 类

表示用于提交 Azure 机器学习中的自动化 ML 试验的配置。

此配置对象包含并保留用于配置试验运行的参数,以及运行时使用的训练数据。 有关选择设置的指南,请参阅 https://aka.ms/AutoMLConfig

继承
builtins.object
AutoMLConfig

构造函数

AutoMLConfig(task: str, path: Optional[str] = None, iterations: Optional[int] = None, primary_metric: Optional[str] = None, positive_label: Optional[Any] = None, compute_target: Optional[Any] = None, spark_context: Optional[Any] = None, X: Optional[Any] = None, y: Optional[Any] = None, sample_weight: Optional[Any] = None, X_valid: Optional[Any] = None, y_valid: Optional[Any] = None, sample_weight_valid: Optional[Any] = None, cv_splits_indices: Optional[List[List[Any]]] = None, validation_size: Optional[float] = None, n_cross_validations: Optional[Union[int, str]] = None, y_min: Optional[float] = None, y_max: Optional[float] = None, num_classes: Optional[int] = None, featurization: Union[str, azureml.automl.core.featurization.featurizationconfig.FeaturizationConfig] = 'auto', max_cores_per_iteration: int = 1, max_concurrent_iterations: int = 1, iteration_timeout_minutes: Optional[int] = None, mem_in_mb: Optional[int] = None, enforce_time_on_windows: bool = True, experiment_timeout_hours: Optional[float] = None, experiment_exit_score: Optional[float] = None, enable_early_stopping: bool = True, blocked_models: Optional[List[str]] = None, blacklist_models: Optional[List[str]] = None, exclude_nan_labels: bool = True, verbosity: int = 20, enable_tf: bool = False, model_explainability: bool = True, allowed_models: Optional[List[str]] = None, whitelist_models: Optional[List[str]] = None, enable_onnx_compatible_models: bool = False, enable_voting_ensemble: bool = True, enable_stack_ensemble: Optional[bool] = None, debug_log: str = 'automl.log', training_data: Optional[Any] = None, validation_data: Optional[Any] = None, test_data: Optional[Any] = None, test_size: Optional[float] = None, label_column_name: Optional[str] = None, weight_column_name: Optional[str] = None, cv_split_column_names: Optional[List[str]] = None, enable_local_managed: bool = False, enable_dnn: Optional[bool] = None, forecasting_parameters: Optional[azureml.automl.core.forecasting_parameters.ForecastingParameters] = None, **kwargs: Any)

参数

task
strTasks
必需

要运行的任务的类型。 值可以是“classification”、“regression”或“forecasting”,具体取决于要解决的自动化机器学习问题类型。

path
str
必需

Azure 机器学习项目文件夹的完整路径。 如果未指定,则默认使用当前目录或“.”。

iterations
int
必需

在自动化机器学习试验期间要测试的不同算法和参数组合的总数。 如果未指定,则默认值为 1000 次迭代。

primary_metric
strMetric
必需

自动化机器学习将为模型选择优化的指标。 自动化机器学习收集的指标比它可以优化的指标要多。 可以使用 get_primary_metrics 获取给定任务的有效指标列表。 有关如何计算指标的详细信息,请参阅 https://docs.microsoft.com/azure/machine-learning/how-to-configure-auto-train#primary-metric

如果未指定,则准确度用于分类任务,规范化均方根用于预测和回归任务,准确度用于图像分类和图像多标签分类,平均精度用于图像对象检测。

positive_label
<xref:Any>
必需

自动化机器学习将用于计算二进制指标的正类标签。 在分类任务的两个条件下计算二进制指标:

  1. 标签列由两个类组成,指示二元分类任务 AutoML 在传入 positive_label 时将使用指定的正类,否则 AutoML 将基于标签编码值选取正类。
  2. 指定了 positive_label 的多类分类任务

有关分类详细信息,请参阅分类方案的指标

compute_target
AbstractComputeTarget
必需

用于运行自动化机器学习试验的 Azure 机器学习计算目标。 有关计算目标的详细信息,请参阅 https://docs.microsoft.com/en-us/azure/machine-learning/concept-automated-ml#local-remote

spark_context
<xref:SparkContext>
必需

Spark 上下文。 仅当在 Azure Databricks/Spark 环境中使用时才适用。

X
DataFramendarrayDatasetTabularDataset
必需

在试验期间拟合管道时使用的训练特征。 此设置即将弃用。 请改用 training_data 和 label_column_name。

y
DataFramendarrayDatasetTabularDataset
必需

在试验期间拟合管道时使用的训练标签。 这是模型将预测的值。 此设置即将弃用。 请改用 training_data 和 label_column_name。

sample_weight
DataFramendarrayTabularDataset
必需

运行拟合管道时为每个训练样本指定的权重,每行应该对应于 X 和 Y 数据中的一行。

指定 X 时请指定此参数。 此设置即将弃用。 请改用 training_data 和 weight_column_name。

X_valid
DataFramendarrayDatasetTabularDataset
必需

在试验期间拟合管道时使用的验证特征。

如果指定,则还必须指定 y_validsample_weight_valid。 此设置即将弃用。 请改用 validation_data 和 label_column_name。

y_valid
DataFramendarrayDatasetTabularDataset
必需

在试验期间拟合管道时使用的验证标签。

必须一起指定 X_validy_valid。 此设置即将弃用。 请改用 validation_data 和 label_column_name。

sample_weight_valid
DataFramendarrayTabularDataset
必需

运行评分管道时为每个验证样本指定的权重,每行应该对应于 X 和 Y 数据中的一行。

指定 X_valid 时请指定此参数。 此设置即将弃用。 请改用 validation_data 和 weight_column_name。

cv_splits_indices
<xref:List>[<xref:List>[ndarray]]
必需

用于交叉验证的拆分训练数据的索引。 每行都是单独的交叉折叠,在每个交叉折叠内,提供 2 个 numpy 数组,第一个数组包含用于训练数据的样本索引,第二个数组包含用于验证数据的索引。 例如 [[t1, v1], [t2, v2], …],其中 t1 是第一个交叉折叠的训练索引,v1 是第一个交叉折叠的验证索引。

若要将现有数据指定为验证数据,请使用 validation_data。 若要改为让 AutoML 从训练数据中提取验证数据,请指定 n_cross_validationsvalidation_size。 如果 training_data 中包含交叉验证列,请使用 cv_split_column_names

validation_size
float
必需

未指定用户验证数据时,要保留用于验证的数据部分。 此值应介于 0.0 和 1.0 之间(不含)。

指定 validation_data 以提供验证数据,否则设置 n_cross_validationsvalidation_size 以从指定的训练数据中提取验证数据。 对于自定义交叉验证折叠,请使用 cv_split_column_names

有关详细信息,请参阅在自动化机器学习中配置数据拆分和交叉验证

n_cross_validations
int
必需

未指定用户验证数据时要执行多少次交叉验证。

指定 validation_data 以提供验证数据,否则设置 n_cross_validationsvalidation_size 以从指定的训练数据中提取验证数据。 对于自定义交叉验证折叠,请使用 cv_split_column_names

有关详细信息,请参阅在自动化机器学习中配置数据拆分和交叉验证

y_min
float
必需

回归试验的 y 最小值。 y_miny_max 的组合用于根据输入数据范围规范化测试集指标。 此设置即将弃用。 而是从数据计算此值。

y_max
float
必需

回归试验的 y 最大值。 y_miny_max 的组合用于根据输入数据范围规范化测试集指标。 此设置即将弃用。 而是从数据计算此值。

num_classes
int
必需

分类试验的标签数据中的类数。 此设置即将弃用。 而是从数据计算此值。

featurization
strFeaturizationConfig
必需

'auto' / 'off' / FeaturizationConfig 指示器,指示是否应自动执行特征化步骤,或者是否应使用自定义特征化。 备注:如果输入数据是稀疏的,则无法启用特征化。

自动检测列类型。 基于检测到的下述列类型执行预处理/特征化:

  • 分类:目标编码,一种热编码,删除高基数类别,插补缺失值。

  • 数字:插补缺失值,群集距离,证据权重。

  • 日期/时间:多个特征,例如天、秒、分钟、小时等。

  • 文本:词袋,预先训练的字词嵌入,文本目标编码。

有关更多详细信息,请参阅在 Python 中配置自动化机器学习试验一文。

若要自定义特征化步骤,请提供 FeaturizationConfig 对象。 自定义特征化目前支持阻止一组转换器、更新列用途、编辑转换器参数和删除列。 有关详细信息,请参阅自定义特征工程

备注:将任务类型设置为独立于此参数进行预测时,将单独处理时序特征。

max_cores_per_iteration
int
必需

用于给定训练迭代的最大线程数。 可接受的值:

  • 大于 1 且小于或等于计算目标上的最大核心数。

  • 等于 -1,即,为每个子运行的每次迭代使用所有可能的核心。

  • 等于 1(默认值)。

max_concurrent_iterations
int
必需

表示将并行执行的最大迭代数。 默认值为 1。

  • AmlCompute 群集支持为每个节点运行一次迭代。 对于在单个 AmlCompute 群集上并行执行的多个 AutoML 试验父运行,所有试验的 max_concurrent_iterations 值之和应小于或等于最大节点数。 否则,运行将排队到节点可用为止。

  • DSVM 支持为每个节点执行多次迭代。 max_concurrent_iterations 应小于或等于 DSVM 上的核心数。 对于在单个 DSVM 上并行运行的多个试验,所有试验的 max_concurrent_iterations 值之和应小于或等于最大节点数。

  • Databricks - max_concurrent_iterations 应小于或等于 Databricks 上的工作器节点数。

max_concurrent_iterations 不适用于本地运行。 以前,此参数命名为 concurrent_iterations

iteration_timeout_minutes
int
必需

每次迭代在终止之前可以运行的最长时间(分钟)。 如果未指定,则使用 1 个月或 43200 分钟作为值。

mem_in_mb
int
必需

每次迭代在终止之前可以消耗的最大内存使用量。 如果未指定,则使用 1 PB 或 1073741824 MB 作为值。

enforce_time_on_windows
bool
必需

是否对 Windows 上每次迭代的模型训练强制实施时间限制。 默认值为 True。 如果从 Python 脚本文件 (.py) 运行,请参阅有关在 Windows 上允许资源限制的文档。

experiment_timeout_hours
float
必需

在试验结束之前,所有合并的迭代所花费的最大时间量(以小时为单位)。 可以是十进制值,如 0.25,表示 15 分钟。 如果未指定,则默认试验超时为 6 天。 若要指定小于或等于 1 小时的超时,请确保数据集的大小不大于 10,000,000(行数乘以列数),否则会出错。

experiment_exit_score
float
必需

试验的目标评分。 达到此评分后,试验将终止。 如果未指定(无条件),则试验将一直运行到主要指标没有进一步变化为止。 有关退出条件的详细信息,请参阅此文

enable_early_stopping
bool
必需

如果评分在短期内没有提高,是否启用提前终止。 默认值为 True。

提前停止逻辑:

  • 对于前 20 次迭代(特征点)不提前停止。

  • 提前停止窗口从第 21 次迭代开始,并查找 early_stopping_n_iters 迭代

    (当前设置为 10)。 这意味着可能发生停止的首个迭代是第 31 次迭代。

  • AutoML 仍会在提前停止之后计划 2 次集成迭代,这可能会导致

    评分更高。

  • 如果计算的最佳评分的绝对值与过去相同,则触发提前停止

    early_stopping_n_iters 迭代,即,early_stopping_n_iters 迭代的评分没有提高。

blocked_models
list(str) 或 list(Classification)<xref: for classification task,> 或 list(Regression)<xref: for regression task,> 或 list(Forecasting)<xref: for forecasting task>
必需

要为试验忽略的算法列表。 如果 enable_tf 为 False,则在 blocked_models 中包含 TensorFlow 模型。

blacklist_models
list(str) 或 list(Classification)<xref: for classification task,> 或 list(Regression)<xref: for regression task,> 或 list(Forecasting)<xref: for forecasting task>
必需

已弃用的参数,请改用 blocked_models。

exclude_nan_labels
bool
必需

是否排除标签中包含 NaN 值的行。 默认值为 True。

verbosity
int
必需

写入日志文件的详细级别。 默认值为 INFO 或 20。 可接受的值在 Python 日志记录库中定义。

enable_tf
bool
必需

已弃用的参数,用于启用/禁用 Tensorflow 算法。 默认值为 False。

model_explainability
bool
必需

是否在所有 AutoML 训练迭代结束时启用最佳 AutoML 模型解释。 默认值为 True。 有关详细信息,请参阅可解释性:自动化机器学习中的模型说明

allowed_models
list(str) 或 list(Classification)<xref: for classification task,> 或 list(Regression)<xref: for regression task,> 或 list(Forecasting)<xref: for forecasting task>
必需

用于搜索试验的模型名称列表。 如果未指定,则使用任务支持的所有模型,减去 blocked_models 中指定的任何模型或已弃用的 TensorFlow 模型。 SupportedModels 类中描述了每种任务类型支持的模型。

whitelist_models
list(str) 或 list(Classification)<xref: for classification task,> 或 list(Regression)<xref: for regression task,> 或 list(Forecasting)<xref: for forecasting task>
必需

已弃用的参数,请改用 allowed_models。

enable_onnx_compatible_models
bool
必需

是启用还是禁用强制执行 ONNX 兼容的模型。 默认值为 False。 有关 Open Neural Network Exchange (ONNX) 和 Azure 机器学习的详细信息,请参阅此文

forecasting_parameters
ForecastingParameters
必需

ForecastingParameters 对象,用于保存所有预测特定的参数。

time_column_name
str
必需

时间列的名称。 预测时需要使用此参数来指定输入数据中用于生成时序并推理其频率的日期/时间列。 此设置即将弃用。 请改用 forecasting_parameters。

max_horizon
int
必需

所需的最大预测范围,以时序频率为单位。 默认值为 1。

单位基于训练数据的时间间隔,例如,预测人员应每月、每周预测。当任务类型为 forecasting 时,此参数是必需的。 有关设置预测参数的详细信息,请参阅自动训练时序预测模型。 此设置即将弃用。 请改用 forecasting_parameters。

grain_column_names
strlist(str)
必需

用于对时序进行分组的列的名称。 它可用于创建多个时序。 如果未定义粒度,则假定数据集为一个时序。 此参数与任务类型 forecasting 结合使用。 此设置即将弃用。 请改用 forecasting_parameters。

target_lags
intlist(int)
必需

滞后于目标列的过去周期数。 默认值为 1。 此设置即将弃用。 请改用 forecasting_parameters。

预测时,此参数表示基于数据频率将目标值滞后的行数。 这表示为一个列表或整数。 默认情况下,在独立变量和依赖变量之间的关系不匹配或关联时,应使用滞后。 例如,在尝试预测某产品的需求时,任何月份的需求可能取决于之前 3 个月特定商品的价格。 在此示例中,可将目标(需求)的滞后负 3 个月,以便针对正确的关系训练模型。 有关详细信息,请参阅自动训练时序预测模型

feature_lags
str
必需

用于为数字特征生成滞后的标志。 此设置即将弃用。 请改用 forecasting_parameters。

target_rolling_window_size
int
必需

用于创建目标列的滚动窗口平均值的过去周期数。 此设置即将弃用。 请改用 forecasting_parameters。

预测时,此参数表示用于生成预测值的 n 个历史周期,小于等于训练集大小。 如果省略,则 n 为完整训练集大小。 如果训练模型时只想考虑一定量的历史记录,请指定此参数。

country_or_region
str
必需

用于生成节假日特征的国家/地区。 这些值应该是 ISO 3166 双字母国家/地区代码,例如“US”或“GB”。 此设置即将弃用。 请改用 forecasting_parameters。

use_stl
str
必需

配置时序目标列的 STL 分解。 use_stl 可以取三个值:None(默认值)- 不进行 STL 分解;season - 仅生成季节组件;season_trend - 生成季节和趋势组件。 此设置即将弃用。 请改用 forecasting_parameters。

seasonality
intstr
必需

设置时序季节性。 如果将季节性设置为 auto,将推断出该季节性。 此设置即将弃用。 请改用 forecasting_parameters。

short_series_handling_configuration
str
必需

定义 AutoML 应如何处理短时序的参数。

可能的值:"auto"(默认)、"pad"、"drop" 和“无”。

  • auto 如果没有长时序,将会填充短时序,否则将删除短时序。
  • pad 所有短时序都将填充。
  • drop 所有短时序都将被删除。
  • None 不会修改短时序。 如果设置为“pad”,则表将填充回归量为零的空值,目标为随机值,其平均值等于给定时序 ID 的目标值中值。如果中值多或等于零,最小填充值将剪裁为零:输入:

输出假设最小值为 4:

备注:我们有两个参数 Short_series_handling_configuration 和旧 short_series_handling。 如果同时设置了这两个参数,则将按下表中所示对其进行同步(为简洁起见,short_series_handling_configuration 和 short_series_handling 分别标记为 handling_configuration 和 handling)。

freq
strNone
必需

预测频率。

预测时,此参数表示预测所需的时间段,例如每日、每周、每年等。默认情况下,预测频率为数据集频率。 可以选择将其设置为比数据集频率大,不能比数据集频率小。 我们将聚合数据并生成预测频率的结果。 例如,对于每日数据,可以将频率设置为每日、每周或每月,但不能设置为每小时。 频率必须是 pandas 偏移别名。 有关详细信息,请参阅 pandas 文档:https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#dateoffset-objects

target_aggregation_function
strNone
必需

用于聚合时序目标列以符合用户指定频率的函数。 如果设置了 target_aggregation_function,但未设置 freq 参数,则会引发错误。 可能的目标聚合函数包括:sum、max、min 和 mean。

enable_voting_ensemble
bool
必需

是启用还是禁用 VotingEnsemble 迭代。 默认值为 True。 有关集成的详细信息,请参阅集成配置

enable_stack_ensemble
bool
必需

是启用还是禁用 StackEnsemble 迭代。 默认值为 None。 如果设置了 enable_onnx_compatible_models 标志,则会禁用 StackEnsemble 迭代。 同样,对于时序任务,默认将禁用 StackEnsemble 迭代,以避免由于在拟合元学习器时使用小型训练集而导致过度拟合的风险。 有关集成的详细信息,请参阅集成配置

debug_log
str
必需

要将调试信息写入到的日志文件。 如果未指定,则使用“automl.log”。

training_data
DataFrameDatasetDatasetDefinitionTabularDataset
必需

要在试验中使用的训练数据。 应该包含训练特征和标签列(可以选择性地包含样本权重列)。 如果指定了 training_data,则还必须指定 label_column_name 参数。

training_data 是在版本 1.0.81 中引入的。

validation_data
DataFrameDatasetDatasetDefinitionTabularDataset
必需

要在试验中使用的验证数据。 应该包含训练特征和标签列(可以选择性地包含样本权重列)。 如果指定了 validation_data,则必须指定 training_datalabel_column_name 参数。

validation_data 是在版本 1.0.81 中引入的。 有关详细信息,请参阅在自动化机器学习中配置数据拆分和交叉验证

test_data
DatasetTabularDataset
必需

使用测试数据集或测试数据拆分的模型测试功能处于预览阶段,随时可能会更改。 要用于测试运行的测试数据,将在模型训练完成后自动启动该测试。 测试运行将使用最佳模型来获取预测结果,并将根据这些预测生成指标。

如果未指定此参数或 test_size 参数,则模型训练完成后将不会自动执行任何测试运行。 测试数据应包含功能和标签列。 如果指定了 test_data,则还必须指定 label_column_name 参数。

test_size
float
必需

使用测试数据集或测试数据拆分的模型测试功能处于预览阶段,随时可能会更改。 为测试运行提供的测试数据的训练数据的一部分,在模型训练完成后将自动启动。 测试运行将使用最佳模型来获取预测结果,并将根据这些预测生成指标。

此值应介于 0.0 和 1.0 之间(不含)。 如果 test_size 同时指定为 validation_size,则在拆分验证数据之前,将从 training_data 拆分测试数据。 例如,如果 validation_size=0.1test_size=0.1 和原始训练数据包含 1000 行,则测试数据将包含 100 行,验证数据将包含 90 行,训练数据将包含 810 行。

对于回归任务,使用随机采样。 对于分类任务,使用分层采样。 预测目前不支持使用训练/测试拆分指定测试数据集。

如果未指定此参数或 test_data 参数,则模型训练完成后将不会自动执行任何测试运行。

label_column_name
Union[str, int]
必需

标签列的名称。 如果输入数据来自没有列名的 pandas.DataFrame,则可以使用以整数表示的列索引。

此参数适用于 training_datavalidation_datatest_data 参数。 label_column_name 是在版本 1.0.81 中引入的。

weight_column_name
Union[str, int]
必需

样本权重列的名称。 自动化机器学习支持使用加权列作为输入,这会导致增大或减小数据中行的权重。 如果输入数据来自没有列名的 pandas.DataFrame,则可以使用以整数表示的列索引。

此参数适用于 training_datavalidation_data 参数。 weight_column_names 是在版本 1.0.81 中引入的。

cv_split_column_names
list(str)
必需

包含自定义交叉验证拆分的列的名称列表。 每个 CV 拆分列代表一个 CV 拆分,其中每行标记为 1(用于训练)或 0(用于验证)。

此参数适用于自定义交叉验证使用的 training_data 参数。 cv_split_column_names 是在版本 1.6.0 中引入的

使用 cv_split_column_namescv_splits_indices

有关详细信息,请参阅在自动化机器学习中配置数据拆分和交叉验证

enable_local_managed
bool
必需

已禁用的参数。 目前无法启用本地托管运行。

enable_dnn
bool
必需

在模型选择期间是否包括基于 DNN 的模型。 init 中的默认值为 None。 不过,对于 DNN NLP 任务,默认值为 True,对于所有其他 AutoML 任务,默认值为 False。

注解

以下代码演示了创建 AutoMLConfig 对象并提交试验进行回归测试的基本示例:


   automl_settings = {
       "n_cross_validations": 3,
       "primary_metric": 'r2_score',
       "enable_early_stopping": True,
       "experiment_timeout_hours": 1.0,
       "max_concurrent_iterations": 4,
       "max_cores_per_iteration": -1,
       "verbosity": logging.INFO,
   }

   automl_config = AutoMLConfig(task = 'regression',
                               compute_target = compute_target,
                               training_data = train_data,
                               label_column_name = label,
                               **automl_settings
                               )

   ws = Workspace.from_config()
   experiment = Experiment(ws, "your-experiment-name")
   run = experiment.submit(automl_config, show_output=True)

完整示例可从回归获取

以下笔记本中提供了使用 AutoMLConfig 进行预测的示例:

在这些自动化机器学习笔记本中可以找到对所有任务类型使用 AutoMLConfig 的示例。

有关自动化机器学习的背景信息,请参阅以下文章:

有关用于为自动化机器学习、AutoML、试验配置训练/验证数据拆分和交叉验证的不同选项的详细信息,请参阅在自动化机器学习中配置数据拆分和交叉验证

方法

get_supported_dataset_languages

获取支持的语言及其遵守 ISO 639-3 标准的对应语言代码。

get_supported_dataset_languages

获取支持的语言及其遵守 ISO 639-3 标准的对应语言代码。

get_supported_dataset_languages(use_gpu: bool) -> Dict[Any, Any]

参数

cls
必需

AutoMLConfig 的类对象。

use_gpu
必需

用于指示是否正在使用 GPU 计算的布尔值。

返回

{: } 格式的字典。 语言代码遵守 ISO 639-3 标准,具体请参阅 https://en.wikipedia.org/wiki/List_of_ISO_639-3_codes