iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
AI & Data

一起學習 Azure Machine Learning 系列 第 27

[DAY27] 用 Azure Machine Learning SDK 來做 AutoML

DAY27 用 Azure Machine Learning SDK 來做 AutoML

之前我們用 AML 的介面來做 AutoML,現在我們就來用 SDK 做 AutoML 啦!目前主要支援分類、迴歸、時間序列預測這三種題目。今天我們繼續拿鐵達尼號出來測試。今天的內容會包含很多之前講過的 SDK 功能哦!如果看不懂程式碼的話,我們再來重讀前面的內容吧!

  1. pip install azureml-train-automl

  2. 我們先來取得之前建立好的鐵達尼號資料集。

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)
  1. 接著我們可以用 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
  1. 接著我們用 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'
                             )
  1. 接著我們就把這個 config 送給 experiment 做 submit 吧!我們這裡就等待一段時間。
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 裡的話,會看到類似下面的畫面,一直會變化哦:
AutoML in Azure machine learning SDK

  1. 完成後,我們可以用下面程式碼,印出 Run 的所有資訊。
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 裡去看,如下圖。
AutoML in Azure machine learning SDK

  1. 也可以用程式碼去取得表現最好的模型。
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)
  1. 取得最好的模型後,我們可以去看前處理的步驟。主要是顯示出 scikit-learn 怎麼去處理資料的。
for step_ in fitted_model.named_steps:
    print(step_)
  1. 最後我們可以把表現最好的模型註冊到 AML。
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']})
  1. 可以用下面程式碼列出你所有註冊的 Model:
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 in Azure machine learning SDK

有沒有覺得 AutoML SDK 依然很容易操作上手呢?今天我們把之前學的 SDK 內容大部份都用上了囉!更多 AutoML 的設定參數可以看這裡。

明天我們要再更深入來看 SDK 怎麼輔助我們調整訓練 AI 模型時的超參數哦!


上一篇
[DAY26] 用 Azure Machine Learning SDK 來做 Pipeline
下一篇
[DAY28] 用 hyperdrive 來微調超參數
系列文
一起學習 Azure Machine Learning 30

尚未有邦友留言

立即登入留言