共用方式為


AutoML Python API 參考

本文說明 AutoML Python API,其提供開始分類、回歸和預測 AutoML 執行的方法。 每個方法呼叫都會訓練一組模型,並為每個模型產生試用筆記本。

如需 AutoML 的詳細資訊,包括低程式碼 UI 選項,請參閱什麼是 AutoML?

分類

databricks.automl.classify 方法會設定 AutoML 執行來訓練分類模型。

注意

max_trials 參數在 Databricks Runtime 10.4 ML 中已被取代,而且 Databricks Runtime 11.0 ML 和更新版本不支援此參數。 請使用 timeout_minutes 來控制 AutoML 執行的持續時間。

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

分類參數

參數名稱 類型 描述
dataset str、 、 pandas.DataFramepyspark.DataFramepyspark.sql.DataFrame 輸入資料表名稱或包含訓練特徵和目標的 DataFrame。 對於非 Unity Catalog 的資料表,資料表名稱的格式可以是 "<database_name>.<table_name>" 或 "<schema_name>.<table_name>"。
target_col str 目標標籤的資料行名稱。
primary_metric str 用來評估和排名模型效能的計量。
迴歸支援的計量:"r2" (預設)、"mae"、"rmse"、"mse"
分類支援的指標:"f1"(預設)、"log_loss"、"precision"、"accuracy"、"roc_auc"
data_dir 格式 strdbfs:/<folder-name> 選擇性。 用來儲存訓練資料集的 DBFS 路徑。 驅動節點和工作節點都可以看到此路徑。
Databricks 建議將此欄位保留空白,因此 AutoML 可以將訓練資料集儲存為 MLflow 成品。
如果指定自定義路徑,數據集不會繼承 AutoML 實驗的訪問許可權。
experiment_dir str 選擇性。 儲存產生的筆記本和實驗的工作區目錄路徑。 如果您使用指派給群組的計算資源,請將此設定為群組有權寫入的資料夾。
預設:/Users/<username>/databricks_automl/
experiment_name str 選擇性。 AutoML 建立的 MLflow 實驗的名稱。
預設:系統會自動產生名稱。
exclude_cols List[str] 選擇性。 在 AutoML 計算期間要忽略的資料行清單。
預設:[]
exclude_frameworks List[str] 選擇性。 AutoML 在開發模型時不應考慮的演算法框架清單。 可能值:空清單或其中一個或多個 "sklearn"、"lightgbm"、"xgboost"。
預設:[] (考慮所有架構)
feature_store_lookups List[Dict] 選擇性。 代表特徵存放區中用於資料增強的特徵的字典清單。 每個字典中的有效索引鍵為:
  • table_name (str): 必要。 特徵資料表的名稱。
  • lookup_key (list 或 str): 必要。 將特徵資料表與傳入 dataset 參數的資料聯結時,要用作索引鍵的資料行名稱。 欄位名稱的順序必須符合特徵資料表主鍵的順序。
  • timestamp_lookup_key (str):如果指定的數據表是 時間序列功能數據表,則為必要項。 在特徵資料表上執行時間點查閱時所要使用的資料行名稱,以及傳入 dataset 參數的資料。

預設:[]
imputers Dict[str, Union[str, Dict[str, Any]]] 選擇性。 字典,其中每個鍵都是欄位名稱,而每個值都是字符串或字典,用於描述插補策略。 如果指定為字串,則值必須是 "mean"、"median" 或 "most_frequent"。 若要以已知值插補,請將值指定為字典{"strategy": "constant", "fill_value": <desired value>}。 您也可以將字串選項指定為字典,例如 {"strategy": "mean"}
如果未提供資料行的插補策略,AutoML 會根據資料行類型和內容選取預設策略。 如果您指定非預設插補方法,AutoML 不會執行語意類型偵測。
預設:{}
pos_label Union[int, bool, str] (僅限分類) 正類別。 這對於計算精確度和召回率等指標很有用。 應僅針對二元分類問題指定。
time_col str 在 Databricks Runtime 10.1 ML 和更新版本中可用。
選擇性。 時間欄位名稱。
如果提供,AutoML 會嘗試按時間順序將資料集分割成訓練、驗證和測試集,使用最早的時間點做為訓練資料,並將最新的時間作為測試集。
接受的資料行類型是時間戳記和整數。 使用 Databricks Runtime 10.2 ML 和更新版本時,也支援字串資料行。
如果資料行類型是字串,AutoML 會嘗試使用語意偵測將其轉換成時間戳記。 如果轉換失敗,AutoML 執行即會失敗。
split_col str 選擇性。 分割資料行的名稱。 僅適用於 API 工作流程的 Databricks Runtime 15.3 ML 和更新版本。 如果提供,AutoML 會嘗試依使用者指定的值分割訓練/驗證/測試集,而且此資料行會自動從訓練特徵中排除。
接受的資料行類型為字串。 此資料行中每個項目的值都必須是下列其中一項:"train"、"validate" 或 "test"。
sample_weight_col str 在 Databricks Runtime 15.4 ML 和更新版本中可用於分類 API 工作流程。
選擇性。 資料集中的資料行名稱,其中包含每個資料列的樣本權數。 分類支援每個類別的樣本權重。 這些權數會在模型訓練期間調整每個類別的重要性。 類別中的每個樣本都必須具有相同的樣本權數,而權數必須是非負數十進位或整數值,範圍從 0 到 10,000。 具有較高樣本權數的類別會被視為更重要,並對學習演算法產生更大的影響。 如果未指定此資料行,則會假設所有類別的權數相等。
max_trials int 選擇性。 要執行的試用數目上限。 此參數可在 Databricks Runtime 10.5 ML 和更低版本中使用,但從 Databricks Runtime 10.3 ML 開始已被取代。 在 Databricks Runtime 11.0 ML 和更新版本中,不支援此參數。
預設值:20
如果 timeout_minutes=None,AutoML 會執行最大次數的試用。
timeout_minutes int 選擇性。 等候 AutoML 試用完成的時間上限。 較長的逾時可讓 AutoML 執行更多試用,並識別更精確的模型。
預設:120 分鐘
最小值:5 分鐘
如果超時太短而無法讓至少一次測試完成,就會報告錯誤。

迴歸

databricks.automl.regress 方法會設定 AutoML 執行來訓練迴歸模型。 這個方法會傳回 AutoMLSummary

注意

max_trials 參數在 Databricks Runtime 10.4 ML 中已被取代,而且 Databricks Runtime 11.0 ML 和更新版本不支援此參數。 請使用 timeout_minutes 來控制 AutoML 執行的持續時間。

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

迴歸參數

參數名稱 類型 描述
dataset str、 、 pandas.DataFramepyspark.DataFramepyspark.sql.DataFrame 輸入資料表名稱或包含訓練特徵和目標的 DataFrame。 對於非 Unity Catalog 的資料表,資料表名稱的格式可以是 "<database_name>.<table_name>" 或 "<schema_name>.<table_name>"。
target_col str 目標標籤的資料行名稱。
primary_metric str 用來評估和排名模型效能的計量。
迴歸支援的計量:"r2" (預設)、"mae"、"rmse"、"mse"
分類支援的指標:"f1"(預設)、"log_loss"、"precision"、"accuracy"、"roc_auc"
data_dir 格式 strdbfs:/<folder-name> 選擇性。 用來儲存訓練資料集的 DBFS 路徑。 驅動節點和工作節點都可以看到此路徑。
Databricks 建議將此欄位保留空白,因此 AutoML 可以將訓練資料集儲存為 MLflow 成品。
如果指定自定義路徑,數據集不會繼承 AutoML 實驗的訪問許可權。
experiment_dir str 選擇性。 儲存產生的筆記本和實驗的工作區目錄路徑。
預設:/Users/<username>/databricks_automl/
experiment_name str 選擇性。 AutoML 建立的 MLflow 實驗的名稱。
預設:系統會自動產生名稱。
exclude_cols List[str] 選擇性。 在 AutoML 計算期間要忽略的資料行清單。
預設:[]
exclude_frameworks List[str] 選擇性。 AutoML 在開發模型時不應考慮的演算法框架清單。 可能值:空清單或其中一個或多個 "sklearn"、"lightgbm"、"xgboost"。
預設:[] (考慮所有架構)
feature_store_lookups List[Dict] 選擇性。 代表特徵存放區中用於資料增強的特徵的字典清單。 每個字典中的有效索引鍵為:
  • table_name (str): 必要。 特徵資料表的名稱。
  • lookup_key (list 或 str): 必要。 將特徵資料表與傳入 dataset 參數的資料聯結時,要用作索引鍵的資料行名稱。 欄位名稱的順序必須符合特徵資料表主鍵的順序。
  • timestamp_lookup_key (str):如果指定的數據表是 時間序列功能數據表,則為必要項。 在特徵資料表上執行時間點查閱時所要使用的資料行名稱,以及傳入 dataset 參數的資料。

預設:[]
imputers Dict[str, Union[str, Dict[str, Any]]] 選擇性。 字典,其中每個鍵都是欄位名稱,而每個值都是字符串或字典,用於描述插補策略。 如果指定為字串,則值必須是 "mean"、"median" 或 "most_frequent"。 若要以已知值插補,請將值指定為字典{"strategy": "constant", "fill_value": <desired value>}。 您也可以將字串選項指定為字典,例如 {"strategy": "mean"}
如果未提供資料行的插補策略,AutoML 會根據資料行類型和內容選取預設策略。 如果您指定非預設插補方法,AutoML 不會執行語意類型偵測。
預設:{}
time_col str 在 Databricks Runtime 10.1 ML 和更新版本中可用。
選擇性。 時間欄位名稱。
如果提供,AutoML 會嘗試按時間順序將資料集分割成訓練、驗證和測試集,使用最早的時間點做為訓練資料,並將最新的時間作為測試集。
接受的資料行類型是時間戳記和整數。 使用 Databricks Runtime 10.2 ML 和更新版本時,也支援字串資料行。
如果資料行類型是字串,AutoML 會嘗試使用語意偵測將其轉換成時間戳記。 如果轉換失敗,AutoML 執行即會失敗。
split_col str 選擇性。 分割資料行的名稱。 僅適用於 API 工作流程的 Databricks Runtime 15.3 ML 和更新版本。 如果提供,AutoML 會嘗試依使用者指定的值分割訓練/驗證/測試集,而且此資料行會自動從訓練特徵中排除。
接受的資料行類型為字串。 此資料行中每個項目的值都必須是下列其中一項:"train"、"validate" 或 "test"。
sample_weight_col str 在 Databricks Runtime 15.3 ML 和更新版本中可用於迴歸 API 工作流程。
選擇性。 資料集中的資料行名稱,其中包含每個資料列的樣本權數。 這些權重在模型訓練過程中調整每個資料列的重要性。 權數必須是非負數十進位或整數值,範圍從 0 到 10,000。 具有較高樣本權數的資料列會被視為更重要,並對學習演算法產生更大的影響。 如果未指定此資料行,則會假設所有資料列的權數相等。
max_trials int 選擇性。 要執行的試用數目上限。 此參數可在 Databricks Runtime 10.5 ML 和更低版本中使用,但從 Databricks Runtime 10.3 ML 開始已被取代。 在 Databricks Runtime 11.0 ML 和更新版本中,不支援此參數。
預設值:20
如果 timeout_minutes=None,AutoML 會執行最大次數的試用。
timeout_minutes int 選擇性。 等候 AutoML 試用完成的時間上限。 較長的逾時可讓 AutoML 執行更多試用,並識別更精確的模型。
預設:120 分鐘
最小值:5 分鐘
如果超時太短而無法讓至少一次測試完成,就會報告錯誤。

趨勢預測

databricks.automl.forecast 方法會設定 AutoML 運行以訓練預測模型。 這個方法會傳回 AutoMLSummary。 若要使用 Auto-ARIMA,時間序列必須有一般頻率 (也就是說,任何兩個點之間的間隔在整個時間序列中都必須相同)。 頻率必須符合 API 呼叫中指定的頻率單位。 AutoML 會用先前的值填入這些值,以處理遺漏的時間步驟。

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

預測參數

參數名稱 類型 描述
dataset str、 、 pandas.DataFramepyspark.DataFramepyspark.sql.DataFrame 輸入資料表名稱或包含訓練特徵和目標的 DataFrame。
資料表名稱的格式可以是 ".." 或 "." 非 Unity Catalog 的資料表
target_col str 目標標籤的資料行名稱。
time_col str 預測時間欄的名稱。
primary_metric str 用來評估和排名模型效能的計量。
支援的計量:"smape" (預設)、"mse"、"rmse"、"mae" 或 "mdape"。
country_code str 在 Databricks Runtime 12.0 ML 和更新版本中可用。 僅受 Prophet 預測模型支援。
選擇性。 兩個字母的國家/地區代碼,指出預測模型應該使用的國家/地區假日。 若要略過假日,請將此參數設定為空字串 ("")。
支援的國家/地區
預設:美國 (美國假日)。
frequency str 用於預測的時間序列頻率。 這是預期會發生事件的期間。 預設設定為 "D" 或每日資料。 如果您的資料有不同的頻率,請務必變更設定。
可能的值:
"W"(週)
"D" / "天數" / "天"
"小時" / "小時" / "小時" / "小時"
"m" / "分鐘" / "分" / "分鐘" / "T"
"S" / "秒" / "秒" / "秒"
只有在 Databricks Runtime 12.0 ML 及以上版本中,才可使用以下功能:
"M" / "月" / "月"
"Q" / "季" / "季"
“年” / “年” / “年”
預設:"D"
horizon int 應傳回未來預測的期數。
單位是時間序列頻率。
預設值:1
data_dir 格式 strdbfs:/<folder-name> 選擇性。 用來儲存訓練資料集的 DBFS 路徑。 驅動節點和工作節點都可以看到此路徑。
Databricks 建議將此欄位保留空白,因此 AutoML 可以將訓練資料集儲存為 MLflow 成品。
如果指定自定義路徑,數據集不會繼承 AutoML 實驗的訪問許可權。
experiment_dir str 選擇性。 儲存產生的筆記本和實驗的工作區目錄路徑。
預設:/Users/<username>/databricks_automl/
experiment_name str 選擇性。 AutoML 建立的 MLflow 實驗的名稱。
預設:系統會自動產生名稱。
exclude_frameworks List[str] 選擇性。 AutoML 在開發模型時不應考慮的演算法框架清單。 可能的值:空白清單,或一或多個 'prophet'、'arima'。
預設:[] (考慮所有架構)
feature_store_lookups List[Dict] 選擇性。 字典清單,代表特徵存放區中用於變項資料增強的特徵。 每個字典中的有效索引鍵為:
  • table_name (str): 必要。 特徵資料表的名稱。
  • lookup_key (list 或 str): 必要。 將特徵資料表與傳入 dataset 參數的資料聯結時,要用作索引鍵的資料行名稱。 欄位名稱的順序必須符合特徵資料表主鍵的順序。
  • timestamp_lookup_key (str):如果指定的數據表是 時間序列功能數據表,則為必要項。 在特徵資料表上執行時間點查閱時所要使用的資料行名稱,以及傳入 dataset 參數的資料。

預設:[]
identity_col Union[str, list] 選擇性。 用於識別多序列預測中時間序列的欄位。 AutoML 依據這些資料行和時間資料行進行預測的分組。
sample_weight_col str 適用於 Databricks Runtime 16.0 ML 和更新版本。 僅適用於多時間序列工作流程。
選擇性。 指定數據集中的數據列,其中包含樣本權重。 這些權數表示模型定型和評估期間每個時間序列的相對重要性。
具有較高權數的時間序列對模型有更大的影響。 如果未提供,則會將所有時間序列以相等權重來處理。
屬於相同時間序列的所有數據列都必須具有相同的權數。
權數必須是非負值,可以是小數或整數,且介於0到10,000之間。
output_database str 選擇性。 如果提供,AutoML 會將最佳模型的預測儲存至指定資料庫中的新資料表。
預設:不會儲存預測。
timeout_minutes int 選擇性。 等候 AutoML 試用完成的時間上限。 較長的逾時可讓 AutoML 執行更多試用,並識別更精確的模型。
預設:120 分鐘
最小值:5 分鐘
如果超時太短而無法讓至少一次測試完成,就會報告錯誤。

匯入筆記本

databricks.automl.import_notebook 方法會匯入已儲存為 MLflow 成品的筆記本。 這個方法會傳回 ImportNotebookResult

databricks.automl.import_notebook(
  artifact_uri: str,
  path: str,
  overwrite: bool = False
) -> ImportNotebookResult:
參數 類型 描述
artifact_uri str 包含試用筆記本的 MLflow 成品的 URI。
path str Databricks 工作區中應匯入筆記本的路徑。 這必須是絕對路徑。 如果該目錄不存在,則會予以建立。
overwrite bool 如果筆記本已經存在,是否要予以覆寫。 預設為 False

匯入筆記本範例

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

AutoML 執行的摘要物件,描述每個試用的計量、參數和其他詳細資料。 您也可以使用此物件來載入在特定試驗中訓練的模型。

屬性 類型 描述
experiment mlflow.entities.Experiment 用來記錄試用的 MLflow 實驗。
trials List[TrialInfo] TrialInfo 物件清單,其中包含所有已執行的試用的相關資訊。
best_trial TrialInfo TrialInfo 物件,包含關於使主要指標獲得最佳加權分數的試用相關資訊。
metric_distribution str 所有試用中主要計量的加權分數分佈。
output_table_name str 只有在提供 output_database 時,才能搭配預測使用。
在 output_database 中包含模型預測的數據表的名稱。

TrialInfo

每個個別試驗的摘要物件。

屬性 類型 描述
notebook_path Optional[str] 工作區中針對此測試生成的 Notebook 的路徑。
對於分類和迴歸,此值只會針對最佳試用設定,而所有其他試用的值會設定為 None
對於預測,所有試驗都存在這個值。
notebook_url Optional[str] 針對此試用產生的筆記本的 URL。
對於分類和迴歸,此值只會針對最佳試用設定,而所有其他試用的值會設定為 None
對於預測,所有試驗都存在這個值。
artifact_uri Optional[str] 生成的筆記本的 MLflow 項目 URI。
mlflow_run_id str 與此試用執行關聯的 MLflow 執行識別碼。
metrics Dict[str, float] 此試用的 MLflow 中記錄的計量。
params Dict[str, str] 在 MLflow 中記錄的用於此試用的參數。
model_path str 在此試驗中訓練的模型的 MLflow 工件 URL。
model_description str 模型和用於訓練此模型的超參數的簡短描述。
duration str 訓練持續時間,以分鐘為單位。
preprocessors str 訓練模型之前執行的前置處理器的描述。
evaluation_metric_score float 針對驗證資料集評估的主要計量分數。

TrialInfo 有一種方法可載入針對試用產生的模型。

方法 描述
load_model() 載入此試用中產生的模型,並記錄為 MLflow 成品。

ImportNotebookResult

屬性 類型 描述
path str Databricks 工作區中應匯入筆記本的路徑。 這必須是絕對路徑。 如果該目錄不存在,則會予以建立。
url str 包含試用筆記本的 MLflow 成品的 URI。