之前我們用 AML 的介面來做 AutoML,現在我們就來用 SDK 做 AutoML 啦!目前主要支援分類、迴歸、時間序列預測這三種題目。今天我們繼續拿鐵達尼號出來測試。今天的內容會包含很多之前講過的 SDK 功能哦!如果看不懂程式碼的話,我們再來重讀前面的內容吧!
先 pip install azureml-train-automl
。
我們先來取得之前建立好的鐵達尼號資料集。
import azureml.core
from azureml.core import Workspace,Dataset
ws = Workspace.from_config()
titanic_ds = ws.datasets.get("titanic")
train_ds, test_ds = titanic_ds.random_split(percentage=0.7, seed=5566)
automl_utils.get_primary_metrics
來看有什麼指標可以讓我們使用。import azureml.train.automl.utilities as automl_utils
for metric in automl_utils.get_primary_metrics('classification'):
print(metric)
# 會印出下面幾種,我們選 AUC 吧!
# norm_macro_recall
# precision_score_weighted
# accuracy
# average_precision_score_weighted
# AUC_weighted
AutoMLConfig
來設定我們的 AutoML:from azureml.train.automl import AutoMLConfig
automl_config = AutoMLConfig(name='AutoML SDK Titanic ',
task='classification', # 這是我們要做的分類問題
compute_target='AutoMLCompute', # 這裡是 cluster
training_data = train_ds,
validation_data = test_ds,
label_column_name='Survived', # 這裡是你要預測的 column
iterations=10, # 如果未指定,預設值為1000次反覆運算。
primary_metric = 'AUC_weighted', # 這是我們剛剛選定的指標
max_concurrent_iterations=2,
featurization='auto'
)
from azureml.core.experiment import Experiment
from azureml.widgets import RunDetails
print('Submitting Auto ML experiment...')
automl_experiment = Experiment(ws, 'AutoML-SDK-Titanic')
automl_run = automl_experiment.submit(automl_config)
RunDetails(automl_run).show()
automl_run.wait_for_completion(show_output=True)
在 Notebook 裡的話,會看到類似下面的畫面,一直會變化哦:
for run in automl_run.get_children():
print('Run ID', run.id)
for metric in run.get_metrics():
print('\t', run.get_metrics(metric))
也可以到 AML 介面裡的 Automated ML 裡去看,如下圖。
best_run, fitted_model = automl_run.get_output()
best_run_metrics = best_run.get_metrics()
for metric_name in best_run_metrics:
metric = best_run_metrics[metric_name]
print(metric_name, metric)
for step_ in fitted_model.named_steps:
print(step_)
from azureml.core import Model
best_run.register_model(model_path='outputs/model.pkl', model_name='titanic-automl-sdk',
tags={'Training strategy':'Auto ML'},
properties={'AUC': best_run_metrics['AUC_weighted'], 'Accuracy': best_run_metrics['accuracy']})
for model in Model.list(ws):
print(model.name, 'version:', model.version)
for tag_name in model.tags:
tag = model.tags[tag_name]
print ('\t',tag_name, ':', tag)
for prop_name in model.properties:
prop = model.properties[prop_name]
print ('\t',prop_name, ':', prop)
print('\n')
或是去圖形化介面看,可以看到我們剛剛跑好的最佳模型已經被註冊了。
有沒有覺得 AutoML SDK 依然很容易操作上手呢?今天我們把之前學的 SDK 內容大部份都用上了囉!更多 AutoML 的設定參數可以看這裡。
明天我們要再更深入來看 SDK 怎麼輔助我們調整訓練 AI 模型時的超參數哦!