データ分析
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を使っている様子は、こんな感じです。 このAzureML上にあるJupyter環境で利用できるモジュール一覧はここにある表で●がついているものです。 併せて、AzureMLのExperimentsで利用出来るモジュール一覧も列挙してあります。 実は、Notebooksにはディープラーニング用ライブラリでお馴染みのtheanoも入っているんです!実践:Pythonで機械学習サービスをウェブサービス化
前置き
今回実験したスクリプトはPython2で実装しています。 ここでは、統計・機械学習の世界でお馴染みのirisのデータを使います。 このデータは、オープンデータでUCI Machine Learning Repositoryからダウンロードできます。 このデータセットには品種毎に、花弁(花びら)と萼(野菜で言うヘタの部分)の幅と長さがそれぞれ記録されています。2-1. データをアップロードしてPythonへロード
irisデータを予めローカルマシンにダウンロードしておき、AzureMLへアップロードします。 DATASETS→New→FROM LOCAL FILE でアップロードが完了です。 アップロードしたデータは、DATASETSに保存されています。 Pythonで使いたいファイルをチェックして、 GENERATE DATA ACCESS CODE…ボタンを押すと、自動的にデータをロードするPythonスクリプトが生成されます。 このソースをJupyterにコピペするだけで、データロードの準備は完了です。 これとは別に、OPEN IN NOTEBOOKで開いても、自動的にロード用コードが生成されます。 この場合は、Jupyter Notebookも自動的に作成されます。 それでは、先ほどのコードを使ってデータを読み込んで、print()で表示してみましょう。 問題なくロードできていますね!2-2. Python + scikit-learnで機械学習のコードを書く
先ほどのソースに続けて、機械学習を行うコードを書きます。 AzureMLのJupyterには、scikit-learnが用意されています。 なので、一般的に使われる機械学習アルゴリズムがほんの数行のコーディングで利用できます。 実際のケースでは、前処理やモデルの精度検証といった作業を行いますが、今回は割愛します。 今回は、多項ロジスティック回帰でモデリングしています。 scikit-learnがあるので、ほんの少しコードを書くだけで済みました!2-3. 出来上がったモデルをAPI化し、サービスとして公開
これも、AzureML環境に用意されているモジュールを使えばすぐ終わります。 予測する処理を関数でまとめて、デコレータに- 接続情報(Workspace IDとPrimary authorization token)
- 入力
- 出力