51
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Azure Machine LearningのJupyter Notebookを使ってみる

Last updated at Posted at 2015-09-19

Azure Machine LearningはMicrosoftが提供しているクラウドベースの機械学習のサービスです。

Azure Machine LearningではGUIを使って様々な機械学習の手法を実行することができますがJupyterを使用することも可能となっています。

Azure Machine LearningでJupyter Notebookを使う

Azure Machine LearningのはMicrosoftアカウントをもっていれば無料で試すことができます。Jupyterも無料のプランで使えます。

価格についての詳細は下記のリンクを参照してください。

料金 - Machine Learning | Microsoft Azure

Microsoftアカウント作成

Microsoftアカウントをもっていない場合にはリンク先から作成します。

ホーム|Microsoft アカウント

ワークスペース作成

下記リンクを開き「Get Started」ボタンをクリックし、Microsoftアカウントにサインインします。

Microsoft Azure Machine Learning Studio

「Workspace Not Found」と表示された画面になったら再びブラウザでMicrosoft Azure Machine Learning Studioを開いて「Get Started」ボタンを押します。

成功していれば無料のワークスペースが作成されており以下のような画面が開きます。

スクリーンショット 2015-09-06 21.28.26.png

Jupyter Notebookの作成

画面左下の「+NEW」をクリックすると以下のような画面が開くのでNOTEBOOKからPythonのバージョンを選択します。

スクリーンショット 2015-09-06 21.32.36.png

今回はPython2を選択してみます。Notebookの名前を訊かれるので適当に入力します。

NOTEBOOKSに作成したJupyter Notebookが表示されているのでクリックして開きます。

スクリーンショット 2015-09-06 21.34.39.png

空のNotebookが開きます。この後は通常通り使用できます。

スクリーンショット 2015-09-06 21.37.55.png

使用可能なライブラリ

Azure Machine LearningのJupyterはAnacondaを使用しており、以下のリストのパッケージが使用可能となっています。

Anaconda Package List — Continuum documentation

Anacondaのバージョンが2.1と少し古くパッケージによっては最新ではない場合があります。

Azure Machine LearningとJupyter Notebookの連携

Azure Machine LearningのJupyter NotebookにはAzure Machine LearningのPythonクライアントがインストールされています。これを利用してAzure Machine Learningの操作やデータのやり取りが可能です。

Azure/Azure-MachineLearning-ClientLibrary-Python

ワークスペースに接続する

まず現在使用しているワークスペースに接続します。接続のために必要なワークスペースのIDとトークンはstudioのSETTINGSから確認することができます。

from azureml import Workspace
ws = Workspace(
    workspace_id="YOUR_WORKSPACE_ID", 
    authorization_token="YOUR_AUTHORIZATION_TOKEN",
    endpoint="https://studio.azureml.net"
)

データセットを使用する

使用できるデータセットは以下のようにして確認できます。

ws.datasets

使用したいデータセットの名前を指定してデータを取得し、to_dataframeでデータフレームに変換することができます。

df = ws.datasets['Bike Rental UCI dataset'].to_dataframe()

Experimentからデータを取得する

Experimentの中間データをJupyterで取得するためには「Convert to CSV」にデータを入力します。

スクリーンショット 2015-09-19 15.22.39.png

「Convert to CSV」の出力ポートをクリックし「Generate Data Access Code」を選択すると中間データをデータフレームとして取得するためのコードが表示されます。
(ワークスペースへの接続のコードも表示されますがendpointが設定されていないとエラーがでました。上記のようにendpointを追加したら動きました。)

JupyterのデータをAzure Machine Learningのデータセットに追加する

Jupyterで操作しているデータをAzure Machine Learningのデータセットに追加することができます。

データセットに追加する際にはadd_from_dataframeを使用します。

import pandas as pd
import numpy as np
from sklearn.datasets import load_boston

boston = load_boston()
df = pd.DataFrame(
  np.column_stack([boston.data, boston.target]),
  columns=boston.feature_names
)

dataset = ws.datasets.add_from_dataframe(
    dataframe=df,
    data_type_id='GenericCSV',
    name='boston',
    description=boston.DESCR,
)

Webサービスを作成する

JupyterからWebサービスを作成することもできます。

例えば次のコードを実行するとaddというするWebサービスが作成されます。

from azureml import services

@services.publish(ws.workspace_id, ws.authorization_token)
@services.types(a = float, b = float)
@services.returns(float)
def add(a, b):
    return a + b

既存のWebサービスを使用する

既存のWebサービスをJupyterから使用することもできます。

Jupyterで作成したWebサービスを使用すると認証が通らずうまくいかなかったためGUIで
足し算をするサービスを作成しJupyterから使ってみます。

スクリーンショット 2015-09-20 0.39.27.png

「Execute Python Script」の中身は次のようになっています。

def azureml_main(dataframe1 = None):
    dataframe1['c'] = dataframe1.a + dataframe1.b
    return dataframe1

これをWebサービスとしてデプロイすると次のように2つの数字を足し算してくれるサービスができます。

スクリーンショット 2015-09-20 0.42.41.png

スクリーンショット 2015-09-20 0.43.37.png

このWebサービスをNotebookから使用するためには次のようにデコレータを使って関数を定義します。
urlとapi_keyは作成したWebサービスのダッシュボート、REQUEST/RESPONSEのヘルプページから取得できます。

from azureml import services

url = 'WEB_SERVICE_URL'
api_key = 'WEB_SERVICE_API_KEY'
@services.service(url, api_key)
@services.types(a = float, b = float)
@services.returns(float)
def add(a, b):
    pass

この関数をWebサービスとして使用することができます。(初回は実行まで少し時間がかかります。)

スクリーンショット 2015-09-20 0.53.04.png

最後に

まだクライアント・Jupyterからできないことも多いですが、今後連携機能が強化されていきそうなので楽しみです。Azure Machine Learningは例が多く用意されているのでJupyterで途中結果を詳しくみたり、グラフを書いたりすると面白そうです。

参考資料

51
54
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?