jupyter notebookでazure MLを動かす


前提

・jupyter notebookでazure machine learningの実験を実行
・azureのワークスペースの作成などは省略
・動作環境はmacOS

手順

1.jupyter notebookを起動

1-1.仮想環境を作成 conda -n create 仮想環境名
1-2.仮想環境を有効化 conda activate 仮想環境名
1-3.upyter notebookを起動 jupyter notebook

2.準備

2-1.Azure mlのパッケージをインストール 
pip install azureml,pip install sklearn
2-2.Azureのワークスペースをimport
この時、Azureのワークスペースでconfigファイルをダウンロードして、ipynobファイルと同じフォルダに格納しておく

from azureml.core.workspace import Workspace
ws = Workspace.from_config()
%matplotlib inline
import matplotlib.pyplot as plt
import sklearn
from sklearn import preprocessing, metrics, model_selection
from sklearn.preprocessing import MinMaxScaler, StandardScaler, LabelEncoder, OneHotEncoder, LabelBinarizer 
from sklearn.model_selection import KFold, StratifiedKFold, GridSearchCV, train_test_split
from datetime import datetime, date, timezone, timedelta
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import os, gc

3.データの読み込み

PATH = '/Users/〇〇/Desktop/jupyter/〇〇/'

## ファイル読み込み
data = pd.read_csv(PATH+'〇〇.csv')

## 学習、バリデーション、テストデータに分割
from sklearn.model_selection import train_test_split
train_data, test_data = train_test_split(data, test_size=0.4 ,shuffle=False)
train_data, validation_data = train_test_split(train_data, train_size=0.66 ,shuffle=False)

## 不要なデータを削除
no_label = "CO"
train_data = train_data.drop(no_label,axis=1)
test_data = test_data.drop(no_label,axis=1)
validation_data = validation_data.drop(no_label,axis=1)

## ターゲットカラムを選択
label =  "NOX"

test_labels = test_data.pop(label).values

4.モデル作成

モデル作成のプログラムを示します。
今回はタスクを回帰にしたかったので、task='regression'を指定
 (分類タスクなら'classification'、時系列解析なら'forecasting')
その他、AzureのGUIで変更できない設定を変えられるところが魅力です。
ちなみに私はデータ分割を指定したかったためjupyter notebookより実行しています。
 (デフォルトでは行数に応じた分割数の交差検証)

from azureml.train.automl import AutoMLConfig

automl_config = AutoMLConfig(task='regression',
                             primary_metric='r2_score',
                             experiment_timeout_minutes=60,
                             training_data=train_data,
                             label_column_name=label,
                             validation_data = validation_data,
                             debug_log='automated_ml_errors.log')

実験の開始(モデルの作成と検証)

from azureml.core.experiment import Experiment
experiment = Experiment(ws, "〇〇")
local_run = experiment.submit(automl_config, show_output=True)

〇〇には任意の実験名を入れてください

最後に

私は、モデル作成の際の設定で参照できるサイトが少なく、時間を使ってしまったので、同じことを実装したい方がすぐにできるよう、一例としてコード付きで記事を書かせていただきました。
ライブラリのバージョン管理やpythonのインポートのパスを通す作業にも少し手こずりました。
まだまだエンジニアとしてわからないことが多いですが、少しずつ勉強していきます。^ ^

参考サイト

microsoftドキュメント
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-configure-cross-validation-data-splits
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-auto-train-forecast

ブログ記事
https://www.simpletraveler.jp/2019/12/08/tried-azuremachinelearning-on-local-jupyter/