AutoML Python API reference
This article describes the AutoML Python API, which provides methods to start classification, regression, and forecasting AutoML runs. Each method call trains a set of models and generates a trial notebook for each model.
For more information on AutoML, including a low-code UI option, see What is AutoML?.
Classify
The databricks.automl.classify
method configures an AutoML run to train a classification model.
Note
The max_trials
parameter is deprecated in Databricks Runtime 10.4 ML and is not supported in Databricks Runtime 11.0 ML and above. Use timeout_minutes
to control the duration of an AutoML run.
databricks.automl.classify(
dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
*,
target_col: str,
primary_metric: str = "f1",
data_dir: Optional[str] = None,
experiment_dir: Optional[str] = None, # <DBR> 10.4 LTS ML and above
experiment_name: Optional[str] = None, # <DBR> 12.1 ML and above
exclude_cols: Optional[List[str]] = None, # <DBR> 10.3 ML and above
exclude_frameworks: Optional[List[str]] = None, # <DBR> 10.3 ML and above
feature_store_lookups: Optional[List[Dict]] = None, # <DBR> 11.3 LTS ML and above
imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
pos_label: Optional[Union[int, bool, str]] = None, # <DBR> 11.1 ML and above
time_col: Optional[str] = None,
split_col: Optional[str] = None, # <DBR> 15.3 ML and above
sample_weight_col: Optional[str] = None # <DBR> 15.4 ML and above
max_trials: Optional[int] = None, # <DBR> 10.5 ML and below
timeout_minutes: Optional[int] = None,
) -> AutoMLSummary
Classify parameters
Parameter name | Type | Description |
---|---|---|
dataset |
str , pandas.DataFrame , pyspark.DataFrame , pyspark.sql.DataFrame |
Input table name or DataFrame that contains training features and target. Table name can be in format “<database_name>.<table_name>” or “<schema_name>.<table_name>” for non Unity Catalog tables. |
target_col |
str |
Column name for the target label. |
primary_metric |
str |
Metric used to evaluate and rank model performance. Supported metrics for regression: “r2” (default), “mae”, “rmse”, “mse” Supported metrics for classification: “f1” (default), “log_loss”, “precision”, “accuracy”, “roc_auc” |
data_dir |
str of format dbfs:/<folder-name> |
Optional. DBFS path used to store the training dataset. This path is visible to both driver and worker nodes. Databricks recommends leaving this field empty, so AutoML can save the training dataset as an MLflow artifact. If a custom path is specified, the dataset does not inherit the AutoML experiment’s access permissions. |
experiment_dir |
str |
Optional. Path to the directory in the workspace to save the generated notebooks and experiments. Default: /Users/<username>/databricks_automl/ |
experiment_name |
str |
Optional. Name for the MLflow experiment that AutoML creates. Default: Name is automatically generated. |
exclude_cols |
List[str] |
Optional. List of columns to ignore during AutoML calculations. Default: [] |
exclude_frameworks |
List[str] |
Optional. List of algorithm frameworks that AutoML should not consider as it develops models. Possible values: empty list, or one or more of “sklearn”, “lightgbm”, “xgboost”. Default: [] (all frameworks are considered) |
feature_store_lookups |
List[Dict] |
Optional. List of dictionaries that represent features from Feature Store for data augmentation. Valid keys in each dictionary are: - table_name (str): Required. Name of the feature table.- lookup_key (list or str): Required. Column name(s) to use as key when joining the feature table with the data passed in the dataset param. The order of the column names must match the order of the primary keys of the feature table.- timestamp_lookup_key (str): Required if the specified table is a time series feature table. The column name to use when performing point-in-time lookup on the feature table with the data passed in the dataset param.Default: [] |
imputers |
Dict[str, Union[str, Dict[str, Any]]] |
Optional. Dictionary where each key is a column name, and each value is a string or dictionary describing the imputation strategy. If specified as a string, the value must be one of “mean”, “median”, or “most_frequent”. To impute with a known value, specify the value as a dictionary {"strategy": "constant", "fill_value": <desired value>} . You can also specify string options as dictionaries, for example {"strategy": "mean"} .If no imputation strategy is provided for a column, AutoML selects a default strategy based on column type and content. If you specify a non-default imputation method, AutoML does not perform semantic type detection. Default: {} |
pos_label |
Union[int, bool, str] |
(Classification only) The positive class. This is useful for calculating metrics such as precision and recall. Should only be specified for binary classification problems. |
time_col |
str |
Available in Databricks Runtime 10.1 ML and above. Optional. Column name for a time column. If provided, AutoML tries to split the dataset into training, validation, and test sets chronologically, using the earliest points as training data and the latest points as a test set. Accepted column types are timestamp and integer. With Databricks Runtime 10.2 ML and above, string columns are also supported. If column type is string, AutoML tries to convert it to timestamp using semantic detection. If the conversion fails, the AutoML run fails. |
split_col |
str |
Optional. Column name for a split column. Only available in Databricks Runtime 15.3 ML and above for API workflows. If provided, AutoML tries to split train/validate/test sets by user-specified values, and this column is automatically excluded from training features. Accepted column type is string. The value of each entry in this column must be one of the following: “train”, “validate”, or “test”. |
sample_weight_col |
str |
Available in Databricks Runtime 15.4 ML and above for classification API workflows. Optional. Column name in the dataset that contains the sample weights for each row. Classification supports per-class sample weights. These weights adjust the importance of each class during model training. Each sample within a class must have the same sample weight and weights must be non-negative decimal or integer values, ranging from 0 to 10,000. Classes with higher sample weights are considered more important, and have a greater influence on the learning algorithm. If this column is not specified, all classes are assumed to have equal weight. |
max_trials |
int |
Optional. Maximum number of trials to run. This parameter is available in Databricks Runtime 10.5 ML and below, but is deprecated starting in Databricks Runtime 10.3 ML. In Databricks Runtime 11.0 ML and above, this parameter is not supported. Default: 20 If timeout_minutes=None, AutoML runs the maximum number of trials. |
timeout_minutes |
int |
Optional. Maximum time to wait for AutoML trials to complete. Longer timeouts allow AutoML to run more trials and identify a model with better accuracy. Default: 120 minutes Minimum value: 5 minutes An error is reported if the timeout is too short to allow at least one trial to complete. |
Regress
The databricks.automl.regress
method configures an AutoML run to train a regression model. This method returns an AutoMLSummary.
Note
The max_trials
parameter is deprecated in Databricks Runtime 10.4 ML and is not supported in Databricks Runtime 11.0 ML and above. Use timeout_minutes
to control the duration of an AutoML run.
databricks.automl.regress(
dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
*,
target_col: str,
primary_metric: str = "r2",
data_dir: Optional[str] = None,
experiment_dir: Optional[str] = None, # <DBR> 10.4 LTS ML and above
experiment_name: Optional[str] = None, # <DBR> 12.1 ML and above
exclude_cols: Optional[List[str]] = None, # <DBR> 10.3 ML and above
exclude_frameworks: Optional[List[str]] = None, # <DBR> 10.3 ML and above
feature_store_lookups: Optional[List[Dict]] = None, # <DBR> 11.3 LTS ML and above
imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
time_col: Optional[str] = None,
split_col: Optional[str] = None, # <DBR> 15.3 ML and above
sample_weight_col: Optional[str] = None, # <DBR> 15.3 ML and above
max_trials: Optional[int] = None, # <DBR> 10.5 ML and below
timeout_minutes: Optional[int] = None,
) -> AutoMLSummary
Regress parameters
Parameter name | Type | Description |
---|---|---|
dataset |
str , pandas.DataFrame , pyspark.DataFrame , pyspark.sql.DataFrame |
Input table name or DataFrame that contains training features and target. Table name can be in format “<database_name>.<table_name>” or “<schema_name>.<table_name>” for non Unity Catalog tables. |
target_col |
str |
Column name for the target label. |
primary_metric |
str |
Metric used to evaluate and rank model performance. Supported metrics for regression: “r2” (default), “mae”, “rmse”, “mse” Supported metrics for classification: “f1” (default), “log_loss”, “precision”, “accuracy”, “roc_auc” |
data_dir |
str of format dbfs:/<folder-name> |
Optional. DBFS path used to store the training dataset. This path is visible to both driver and worker nodes. Databricks recommends leaving this field empty, so AutoML can save the training dataset as an MLflow artifact. If a custom path is specified, the dataset does not inherit the AutoML experiment’s access permissions. |
experiment_dir |
str |
Optional. Path to the directory in the workspace to save the generated notebooks and experiments. Default: /Users/<username>/databricks_automl/ |
experiment_name |
str |
Optional. Name for the MLflow experiment that AutoML creates. Default: Name is automatically generated. |
exclude_cols |
List[str] |
Optional. List of columns to ignore during AutoML calculations. Default: [] |
exclude_frameworks |
List[str] |
Optional. List of algorithm frameworks that AutoML should not consider as it develops models. Possible values: empty list, or one or more of “sklearn”, “lightgbm”, “xgboost”. Default: [] (all frameworks are considered) |
feature_store_lookups |
List[Dict] |
Optional. List of dictionaries that represent features from Feature Store for data augmentation. Valid keys in each dictionary are: - table_name (str): Required. Name of the feature table.- lookup_key (list or str): Required. Column name(s) to use as key when joining the feature table with the data passed in the dataset param. The order of the column names must match the order of the primary keys of the feature table.- timestamp_lookup_key (str): Required if the specified table is a time series feature table. The column name to use when performing point-in-time lookup on the feature table with the data passed in the dataset param.Default: [] |
imputers |
Dict[str, Union[str, Dict[str, Any]]] |
Optional. Dictionary where each key is a column name, and each value is a string or dictionary describing the imputation strategy. If specified as a string, the value must be one of “mean”, “median”, or “most_frequent”. To impute with a known value, specify the value as a dictionary {"strategy": "constant", "fill_value": <desired value>} . You can also specify string options as dictionaries, for example {"strategy": "mean"} .If no imputation strategy is provided for a column, AutoML selects a default strategy based on column type and content. If you specify a non-default imputation method, AutoML does not perform semantic type detection. Default: {} |
time_col |
str |
Available in Databricks Runtime 10.1 ML and above. Optional. Column name for a time column. If provided, AutoML tries to split the dataset into training, validation, and test sets chronologically, using the earliest points as training data and the latest points as a test set. Accepted column types are timestamp and integer. With Databricks Runtime 10.2 ML and above, string columns are also supported. If column type is string, AutoML tries to convert it to timestamp using semantic detection. If the conversion fails, the AutoML run fails. |
split_col |
str |
Optional. Column name for a split column. Only available in Databricks Runtime 15.3 ML and above for API workflows. If provided, AutoML tries to split train/validate/test sets by user-specified values, and this column is automatically excluded from training features. Accepted column type is string. The value of each entry in this column must be one of the following: “train”, “validate”, or “test”. |
sample_weight_col |
str |
Available in Databricks Runtime 15.3 ML and above for regression API workflows. Optional. Column name in the dataset that contains the sample weights for each row. These weights adjust the importance of each row during model training. Weights must be non-negative decimal or integer values, ranging from 0 to 10,000. Rows with higher sample weights are considered more important, and have a greater influence on the learning algorithm. If this column is not specified, all rows are assumed to have equal weight. |
max_trials |
int |
Optional. Maximum number of trials to run. This parameter is available in Databricks Runtime 10.5 ML and below, but is deprecated starting in Databricks Runtime 10.3 ML. In Databricks Runtime 11.0 ML and above, this parameter is not supported. Default: 20 If timeout_minutes=None, AutoML runs the maximum number of trials. |
timeout_minutes |
int |
Optional. Maximum time to wait for AutoML trials to complete. Longer timeouts allow AutoML to run more trials and identify a model with better accuracy. Default: 120 minutes Minimum value: 5 minutes An error is reported if the timeout is too short to allow at least one trial to complete. |
Forecast
The databricks.automl.forecast
method configures an AutoML run for training a forecasting model. This method returns an AutoMLSummary.
To use Auto-ARIMA, the time series must have a regular frequency (that is, the interval between any two points must be the same throughout the time series). The frequency must match the frequency unit specified in the API call. AutoML handles missing time steps by filling in those values with the previous value.
databricks.automl.forecast(
dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
*,
target_col: str,
time_col: str,
primary_metric: str = "smape",
country_code: str = "US", # <DBR> 12.0 ML and above
frequency: str = "D",
horizon: int = 1,
data_dir: Optional[str] = None,
experiment_dir: Optional[str] = None,
experiment_name: Optional[str] = None, # <DBR> 12.1 ML and above
exclude_frameworks: Optional[List[str]] = None,
feature_store_lookups: Optional[List[Dict]] = None, # <DBR> 12.2 LTS ML and above
identity_col: Optional[Union[str, List[str]]] = None,
sample_weight_col: Optional[str] = None, # <DBR> 16.0 ML and above
output_database: Optional[str] = None, # <DBR> 10.5 ML and above
timeout_minutes: Optional[int] = None,
) -> AutoMLSummary
Forecasting parameters
Parameter name | Type | Description |
---|---|---|
dataset |
str , pandas.DataFrame , pyspark.DataFrame , pyspark.sql.DataFrame |
Input table name or DataFrame that contains training features and target. Table name can be in format “..” or “.” for non Unity Catalog tables |
target_col |
str |
Column name for the target label. |
time_col |
str |
Name of the time column for forecasting. |
primary_metric |
str |
Metric used to evaluate and rank model performance. Supported metrics: “smape” (default), “mse”, “rmse”, “mae”, or “mdape”. |
country_code |
str |
Available in Databricks Runtime 12.0 ML and above. Only supported by the Prophet forecasting model. Optional. Two-letter country code that indicates which country’s holidays the forecasting model should use. To ignore holidays, set this parameter to an empty string (“”). Supported countries. Default: US (United States holidays). |
frequency |
str |
Frequency of the time series for forecasting. This is the period with which events are expected to occur. The default setting is “D” or daily data. Be sure to change the setting if your data has a different frequency. Possible values: “W” (weeks) “D” / “days” / “day” “hours” / “hour” / “hr” / “h” “m” / “minute” / “min” / “minutes” / “T” “S” / “seconds” / “sec” / “second” The following are only available with Databricks Runtime 12.0 ML and above: “M” / “month” / “months” “Q” / “quarter” / “quarters” “Y” / “year” / “years” Default: “D” |
horizon |
int |
Number of periods into the future for which forecasts should be returned. The units are the time series frequency. Default: 1 |
data_dir |
str of format dbfs:/<folder-name> |
Optional. DBFS path used to store the training dataset. This path is visible to both driver and worker nodes. Databricks recommends leaving this field empty, so AutoML can save the training dataset as an MLflow artifact. If a custom path is specified, the dataset does not inherit the AutoML experiment’s access permissions. |
experiment_dir |
str |
Optional. Path to the directory in the workspace to save the generated notebooks and experiments. Default: /Users/<username>/databricks_automl/ |
experiment_name |
str |
Optional. Name for the MLflow experiment that AutoML creates. Default: Name is automatically generated. |
exclude_frameworks |
List[str] |
Optional. List of algorithm frameworks that AutoML should not consider as it develops models. Possible values: empty list, or one or more of “prophet”, “arima”. Default: [] (all frameworks are considered) |
feature_store_lookups |
List[Dict] |
Optional. List of dictionaries that represent features from Feature Store for covariate data augmentation. Valid keys in each dictionary are: - table_name (str): Required. Name of the feature table.- lookup_key (list or str): Required. Column name(s) to use as key when joining the feature table with the data passed in the dataset param. The order of the column names must match the order of the primary keys of the feature table.- timestamp_lookup_key (str): Required if the specified table is a time series feature table. The column name to use when performing point-in-time lookup on the feature table with the data passed in the dataset param.Default: [] |
identity_col |
Union[str, list] |
Optional. Column(s) that identify the time series for multi-series forecasting. AutoML groups by these column(s) and the time column for forecasting. |
sample_weight_col |
str |
Available in Databricks Runtime 16.0 ML and above. Only for multi-time-series workflows. Optional. Specifies the column in the dataset that contains sample weights. These weights indicate the relative importance of each time series during model training and evaluation. Time series with higher weights have a greater influence on the model. If not provided, all time series are treated with equal weight. All rows belonging to the same time series must have the same weight. Weights must be non-negative values, either decimals or integers, and be between 0 and 10,000. |
output_database |
str |
Optional. If provided, AutoML saves predictions of the best model to a new table in the specified database. Default: Predictions are not saved. |
timeout_minutes |
int |
Optional. Maximum time to wait for AutoML trials to complete. Longer timeouts allow AutoML to run more trials and identify a model with better accuracy. Default: 120 minutes Minimum value: 5 minutes An error is reported if the timeout is too short to allow at least one trial to complete. |
Import notebook
The databricks.automl.import_notebook
method imports a notebook that has been saved as an MLflow artifact. This method returns an ImportNotebookResult.
databricks.automl.import_notebook(
artifact_uri: str,
path: str,
overwrite: bool = False
) -> ImportNotebookResult:
Parameters | Type | Description |
---|---|---|
artifact_uri |
str |
The URI of the MLflow artifact that contains the trial notebook. |
path |
str |
The path in the Databricks workspace where the notebook should be imported. This must be an absolute path. The directory will be created if it does not exist. |
overwrite |
bool |
Whether to overwrite the notebook if it already exists. It is False by default. |
Import notebook example
summary = databricks.automl.classify(...)
result = databricks.automl.import_notebook(summary.trials[5].artifact_uri, "/Users/you@yourcompany.com/path/to/directory")
print(result.path)
print(result.url)
AutoMLSummary
Summary object for an AutoML run that describes the metrics, parameters, and other details for each of the trials. You also use this object to load the model trained by a specific trial.
Property | Type | Description |
---|---|---|
experiment |
mlflow.entities.Experiment |
The MLflow experiment used to log the trials. |
trials |
List[TrialInfo] |
A list of TrialInfo objects containing information about all the trials that were run. |
best_trial |
TrialInfo |
A TrialInfo object containing information about the trial that resulted in the best weighted score for the primary metric. |
metric_distribution |
str |
The distribution of weighted scores for the primary metric across all trials. |
output_table_name |
str |
Used with forecasting only and only if output_database is provided. Name of the table in output_database containing the model’s predictions. |
TrialInfo
Summary object for each individual trial.
Property | Type | Description |
---|---|---|
notebook_path |
Optional[str] |
The path to the generated notebook for this trial in the workspace. For classification and regression, this value is set only for the best trial, while all other trials have the value set to None .For forecasting, this value is present for all trials. |
notebook_url |
Optional[str] |
The URL of the generated notebook for this trial. For classification and regression, this value is set only for the best trial, while all other trials have the value set to None .For forecasting, this value is present for all trials. |
artifact_uri |
Optional[str] |
The MLflow artifact URI for the generated notebook. |
mlflow_run_id |
str |
The MLflow run ID associated with this trial run. |
metrics |
Dict[str, float] |
The metrics logged in MLflow for this trial. |
params |
Dict[str, str] |
The parameters logged in MLflow that were used for this trial. |
model_path |
str |
The MLflow artifact URL of the model trained in this trial. |
model_description |
str |
Short description of the model and the hyperparameters used for training this model. |
duration |
str |
Training duration in minutes. |
preprocessors |
str |
Description of the preprocessors run before training the model. |
evaluation_metric_score |
float |
Score of primary metric, evaluated for the validation dataset. |
TrialInfo
has a method to load the model generated for the trial.
Method | Description |
---|---|
load_model() |
Load the model generated in this trial, logged as an MLflow artifact. |
ImportNotebookResult
Property | Type | Description |
---|---|---|
path |
str |
The path in the Databricks workspace where the notebook should be imported. This must be an absolute path. The directory will be created if it does not exist. |
url |
str |
The URI of the MLflow artifact that contains the trial notebook. |