データ分析
Microsoft Azure Machine Learnin(以下、AzureML)では、Pythonで独自の機械学習アルゴリズムを開発し、簡単にAPI化する事が可能です。
AzureMLはPythonで機械学習もできる
1-1. ところで、なぜPython?
最近、機械学習の領域ではRやMATLABだけでなく、Pythonもよく使われる様になってきました。理由は様々ですが、データ分析者の目線だと、 numpy, SciPy, pandas, matplotlib, scikit-learn といった、分析用ライブラリの充実によって分析が行いやすくなった点が挙げられます。 他にも、ディープラーニング周りで Dato社のgraphlabや Google Brain TeamのTensorFlowといった、強力なライブラリが使えるのが魅力的です。 ちなみに、弊社ではgraphlabやTensorFlowを用いたソリューション例もございます。さて、AzureMLといえば下の画面の様な、GUIで素早く前処理→モデリングが出来る所が特徴だと言うのはよく知られていると思います。 AzureMLには他にもPythonの開発が簡単だという利点もあります。 この記事では、実際にウェブサービスとして公開する所まで、手順を追って見ていきます。
1-2. Jupyter on AzureML
Jupyter(IPython Notebook)とは、ブラウザ内で動くPythonの開発環境の一つです。 AzureMLでは、NOTEBOOKSという名前で用意されています。 NOTEBOOKSでは、Python2とPython3の両方が使用可能です。 この環境の中で、Pythonのコードを組み、アルゴリズムの実験をして、サービスとして公開するまでの作業を行うことになります。 ちなみに、グラフの出力や計算結果を直接DBへ蓄積するといったタスクもこの環境内で実現できます。 更にJupyterでは、コードと一緒に文章も保存しておく事ができます。 つまり、文芸的プログラミングができる環境ということです。 なので、データと文章がバラバラで扱うのが大変… といった事が起きにくくなります。 実際にJupyterを使っている様子は、こんな感じです。

実践:Pythonで機械学習サービスをウェブサービス化
前置き
今回実験したスクリプトはPython2で実装しています。 ここでは、統計・機械学習の世界でお馴染みのirisのデータを使います。 このデータは、オープンデータでUCI Machine Learning Repositoryからダウンロードできます。 このデータセットには品種毎に、花弁(花びら)と萼(野菜で言うヘタの部分)の幅と長さがそれぞれ記録されています。2-1. データをアップロードしてPythonへロード
irisデータを予めローカルマシンにダウンロードしておき、AzureMLへアップロードします。 DATASETS→New→FROM LOCAL FILE でアップロードが完了です。


2-2. Python + scikit-learnで機械学習のコードを書く
先ほどのソースに続けて、機械学習を行うコードを書きます。 AzureMLのJupyterには、scikit-learnが用意されています。 なので、一般的に使われる機械学習アルゴリズムがほんの数行のコーディングで利用できます。 実際のケースでは、前処理やモデルの精度検証といった作業を行いますが、今回は割愛します。 今回は、多項ロジスティック回帰でモデリングしています。
2-3. 出来上がったモデルをAPI化し、サービスとして公開
これも、AzureML環境に用意されているモジュールを使えばすぐ終わります。 予測する処理を関数でまとめて、デコレータに- 接続情報(Workspace IDとPrimary authorization token)
- 入力
- 出力


2-4. 公開したAPIが動いているか確認してみる
AzureMLには、作成したAPIサービスの動作を確認する為の機能があります。 この機能で、先ほど公開したサービスが正しく動いているか、実際に動かしてみます。 今回は、I. setosaのデータを1つ選び、元の値から0.1だけズラした値を投入してみます。

