2017年5月24日水曜日

第11回 オープンデータを利用した予測/分類(3/3)-3

~機械学習(Azure Machine Learning)の入門からビジネス活用へ~

~目次~ 
 3.2.入出力(対ローカルPC)
  3.2.1.R実行環境のインストール
   3.2.1.1.R本体のインストール
   3.2.1.2.R toolsのインストール
   3.2.1.3.RStudioのインストール
  3.2.2.Python実行環境のインストール
  3.2.3.Rによるダウンロード
  3.2.4.Pythonによるダウンロード
  3.2.5.データセットに対する操作
   3.2.5.1.Workspaceオブジェクトの取得
   3.2.5.2.データセット一覧の取得
   3.2.5.3.特定のデータセットのダウンロード
   3.2.5.4.データセットのアップロード
   3.2.5.5.データセットの削除
   3.2.5.6.実験一覧の取得
  
ブログアーカイブ 



3.2.     入出力 (対ローカルPC)


前節では、クラウドサービスやWebページとAzure Machine Learningとの間での入出力について、応用的な操作手順をご紹介してきました。本項では、ローカルPCAzure Machine Learningとの間でのファイルのやり取りに関する応用的な手順として、データセットを含むCSVファイルをブラウザ内でアップロード/ダウンロードする代わりに、ローカルPC上でスクリプト言語を実行して学習結果を含むデータセットにアクセスする方法をご紹介します。この方法をとることで、自動的に、タスクスケジューラー等を使用して定期的にファイルをアップロードしたり、何らかのトリガーを受けてダウンロードしたりすることができるようになります。

ローカルで動かすスクリプトは、Azure Machine Learning上で、自動的に生成されるひな型を使用することができます。このひな型にはアクセス用のAPIキーが含まれているため、生成後すぐにコピーアンドペーストして使い始めることができます。

スクリプト言語の話が出てきたので混同しやすいかもしれませんが、以下で示すスクリプトはAzure Machine Learning上で実行するものではなく、あくまでもローカルPC上で実行するものです。そのため、Azure Machine Learning上に用意されている、スクリプト言語の名前が含まれる2種類のモジュール (Execute R Script」モジュール、「Execute Python Script」モジュール)は、本節では関係ありません。

また、RまたはPythonの実行環境を、ローカルPC上にインストールしておく必要があります。

参考までに、それぞれのスクリプト言語の実行環境をインストールするための手順をご紹介します。

3.2.1.    R実行環境のインストール


ローカルPCRスクリプトを実行する場合、以下のソフトウェアをインストールすると効率的に開発できます。R本体だけでもスクリプトを実行することは可能ですが、デバッグ等の容易さを考えると、RStudioVisual StudioのようなIDE(統合開発環境)もインストールしておいたほうが良いといえます。今回は、RStudioを使用してRスクリプトを記述したり、実行したりします。

l  R本体 (必須)
l  Rtools
l  RStudio または Visual Studio + R Tools for Visual Studio

3.2.1.1. R本体のインストール


まず、R本体のインストーラーをダウンロードします。CRAN(R公式Webサイト)日本ミラーサイト(https://cran.ism.ac.jp/bin/windows/base/)にアクセスし、「Download R X.X.X for Windows(以下、「X.X.X」はバージョン番号)をクリックします。ベータ版や以前のバージョンのインストーラーが必要な場合を除き、このリンクから入手します。


ダウンロードしたR-X.X.X-win.exeをダブルクリックし、インストーラーを起動します。ユーザーアカウント制御のダイアログが表示された場合は「はい」をクリックします。



「日本語」が選択されていることを確認し、「OK」をクリックします。



「次へ」をクリックします。

 
 
 

任意のインストール先を指定し、「次へ」をクリックします。既定値ではProgram Files配下にインストールするように設定されていますが、今後追加するパッケージによっては、インストール先のパスに半角スペースが含まれていると正常に動作しない可能性があるため、半角スペースを含まないようなパスに変更してから進むことを推奨します。



「次へ」をクリックします。





 
 
 
「完了」をクリックします。



3.2.1.2. R toolsのインストール


まず、Rtoolsのインストーラーをダウンロードします。CRAN(R公式Webサイト)日本ミラーサイトのRtoolsのページ(https://cran.ism.ac.jp/bin/windows/Rtools/)にアクセスし、先ほどインストールしたR本体のバージョンに合わせたexeファイルをダウンロードします。今回は、R本体のバージョンが3.3.3だったので、Rtools34.exeをダウンロードします。


ダウンロードしたRtoolsXX.exe(XX」はバージョン番号)をダブルクリックし、インストーラーを起動します。ユーザーアカウント制御のダイアログが表示された場合は「はい」をクリックします。



「日本語」が選択されていることを確認し、「OK」をクリックします。


「次へ」をクリックします。





任意のインストール先を指定し、「次へ」をクリックします。今回は、先ほどインストールしたR本体のインストールパスに合わせて変更しました。


「次へ」をクリックします。



「追加タスクの選択」画面で、必ず「Edit the system PATH」のチェックボックスにマークをつけてから、「次へ」をクリックします。




単体のRが既にインストールされていたり、Visual Studioの拡張機能であるPython Tools for Visual Studioが既にインストールされていたりする場合には注意が必要になります。PATHに指定された検索順によっては、今回インストールしたPython実行環境ではなく以前から存在するPython実行環境が呼び出されてしまうことがあるためです。基本的には「Edit the system PATH」を有効化してセットアップを完了すれば今回インストールしたPython実行環境が呼び出されるように自動的に環境変数を書き換えてくれるようになっていますが、必要に応じて「Where」コマンドを使用してPython.exePATH指定が重複していないか確認したり、手動で書き換えたりしてください。

「次へ」をクリックします。



「インストール」をクリックする。



「完了」をクリックします。


3.2.1.3. RStudioのインストール


Rの統合開発環境であるRStudioをインストールします。RStudioWebサイトを開き、「Download」をクリックします。


RStudio Desktop」の「Download」をクリックします。すると、下部のインストーラー一覧に遷移するので、ローカルPCOSに合わせてファイルを選択します。今回は、RStudio-1.0.143.exeをダウンロードしました。
ライセンスについてはサポートの必要性の有無などに応じて選択しますが、試用のためであればOpen Source Licenseで充分です。


ダウンロードしたRStudio-X.X.XXX.exeをダブルクリックし、インストーラーを起動します。ユーザーアカウント制御のダイアログが表示された場合は、「はい」をクリックします。



「次へ」をクリックします。


 
「インストール」をクリックします。



「完了」をクリックします。


デスクトップに作成されたショートカットをダブルクリックして、RStudioが起動することを確認します。「Console」欄を見ると、先ほどインストールしたR本体が出力する内容が表示されていることを確認できます。


RStudioでは、左上のエディタ画面にスクリプトを入力したあと、範囲選択を行った上で「Ctrl」キーと「Enter」キーを同時に押すだけでスクリプトを実行することができます。エディタに入力した内容をConsole欄にコピーアンドペーストする必要はありません。



また、グラフを出力する関数を実行した場合は、右側のパネルにある「Plots」タブに表示されます。



3.2.2.    Python実行環境のインストール


ローカルPCPythonスクリプトを実行する場合、Python公式のインストーラーを使用してインストールするよりも、Python本体や関連パッケージを一括でインストールすることができる「ディストリビューション」を使用した方が容易に環境構築を行うことができます。

今回は、Pythonディストリビューションの1つである「Anaconda」を使用してPython実行環境を構築する手順をご紹介します。


まず、Anacondaの開発元であるContinuum AnalyticsWebサイトにアクセスし、「DOWNLOAD ANACONDA」をクリックします。

ダウンロードページで、「Python 3.X version」の「64-BIT INSTALLER」をクリックします。



ダウンロードしたexeファイルをダブルクリックし、インストーラーを起動します。
Next」をクリックします。



I Agree」をクリックします。


Next」をクリックします。




Install」をクリックします。


プログレスバーが100%まで進んだ後、「Next」をクリックします。


必要に応じてチェックボックスを切り替えた後、「Finish」をクリックします。


コマンドプロンプトを起動して、以下のコマンドを入力した後、「Enter」キーを押します。インストールしたAnacondaに含まれるPythonのバージョンが表示されることを確認します。


python --version

 


スタートメニューの「Anaconda」フォルダを開くと、Pythonの他にもいくつかのツールがインストールされていることを確認できます。Azure Machine Learning上でも使用したJupyter Notebookも含まれており、Azure Machine Learningの時と同様の手順で使用することができます。



Anacondaやそこに含まれる各ソフトウェアは、現在でも活発に開発が続けられているため、しばらく使用していると新しいバージョンのソフトウェアが公開されて更新する機会が出てくると思います。そこで以下では、各種ソフトウェアの更新をGUIから行う手順をご紹介します。一般にPythonやパッケージ類の更新にはpipコマンドを用いますが、Anacondaに同梱されているアップデーターを使用することによって、Windows特有の権限や文字コードの不整合によって発生するエラーを防ぐことができます。

 

まず、スタートメニューを開き、「Anaconda3 (64bit)」→「Anaconda Navigator」をクリックします。


 
Anaconda Navigatorの起動時に更新チェックが行われ、新しいバージョンが公開されている場合にはダイアログボックスが表示されるので、Yesをクリックします。


 
Anaconda Navigatorの更新が終了した後、Anacondaに含まれる各ソフトウェアの更新を行います。アプリケーション名のすぐ下に、矢印が表示されているものが更新可能なソフトウェアです。


 
各アプリケーションのパネル右上にある歯車アイコンをクリックし、「Update application」をクリックします。


 
処理が終了し、バージョン番号が変化していることを確認します。



他のアプリケーションも必要に応じて更新します。
 

 

3.2.3.    Rによるダウンロード


まず、Azure Machine Learningの実験を開き、「Convert to CSV」モジュール下部の丸印からメニューを開き、「Generate Data Access Code」メニューを実行します。


Data Access Codeが表示されます。「R」タブを選択し、サンプルコードをコピーします。

インストールしたRStudioを起動します。


コピーしたRスクリプトを実行する前に、予めいくつかのパッケージをインストールしておきます。Rスクリプトから直接呼び出すパッケージは「AzureML」パッケージのみですが、AzureMLパッケージと依存関係があるパッケージもインストールしておく必要があります。

左上のエディタに、以下のコマンドを入力した後、「Ctrl」キーと「Enter」キーを同時に押します。
 

install.packages("AzureML", dependencies = TRUE)

パッケージのインストール処理が終了し、Consoleに「package ‘AzureML’ successfully unpacked and MD5 sums checked」と出力されていることを確認します。


左上のエディタに、先程コピーしたRスクリプトをペーストします。


エディタ内の文字列を全選択した後、「Ctrl」キーと「Enter」キーを同時に押します。


最終行の「head」関数の出力結果として、データセットの先頭6個のデータが表示されることを確認します。


3.2.4.    Pythonによるダウンロード


まず、Azure Machine Learningの実験を開き、「Convert to CSV」モジュール下部の丸印からメニューを開き、「Generate Data Access Code」メニューを実行します。


Data Access Codeが表示されます。「R」タブを選択し、サンプルコードをコピーします。


 
コマンドプロンプトを起動します。


コピーしたPythonスクリプトを実行する前に、予めいくつかのモジュールをインストールしておきます。Python用のモジュールをインストールするためには「pip」コマンドを使用します。コマンドプロンプトに以下のコマンドを入力して「Enter」キーを押します。


pip install azureml




インストール処理が完了し、「Successfully installed azureml-X.X.X」と表示されることを確認します。依存関係のあるパッケージも自動的にインストールされます。


 
azureml」モジュールのインストールが完了した後、pythonを起動します。
コマンドプロンプトに以下のコマンドを入力して「Enter」キーを押します。


python

 


Pythonのコンソール(行の左端に「>>>」と表示される)が開くので、先程コピーしたPythonスクリプトをペーストします。すべての行をまとめてペーストしても各行ごとにペーストしても構いません。Pythonスクリプトの最終行までペーストした後、「Enter」キーを押します。以下のような表示内容となっていることを確認します。


ここまでの手順でData Access Codeとしてコピーアンドペーストしたソースコードにはデータセットの中身を表示させる処理が含まれていないため、以下のいずれかのコードを追加する必要があります。
 

データセットの中身を全て表示

frame

データセットの先頭5件を表示

frame.head()

frame = ds.to_dataframe()」の次の行に、上記のいずれかの関数を入力した後、「Enter」キーを押します。


前項のRでアクセスした場合の結果と、本項のPythonでアクセスした場合の結果を比較した表を以下に示します。


行インデックスが0始まりか1始まりかという違いや、小数点以下の四捨五入位置の違いはありますが、ほぼ同様の結果を得ることができました。

3.2.5.    データセットに対する操作


ここまでの手順では、実験の中に配置された「Convert to CSV」モジュールの出力結果をデータセットとしてローカルPCにダウンロードする手順をご紹介しました。しかしAzureMLパッケージ/モジュールを使用することによって、他にもデータセットや実験に対する様々な操作を行うことができます。

3.2.5.1.   Workspaceオブジェクトの取得


指定されたIDを持つワークスペースのオブジェクトを取得します。Azure Machine Learningに対する操作は、基本的にWorkspaceオブジェクトを引数に指定した関数またはWorkspaceオブジェクトのプロパティを使用して行います。

ワークスペースIDや承認トークンは、先程コピーアンドペーストしたサンプルコードに記載されているものです。


R

 

ws <- workspace(

  id = "ワークスペースID",

  auth = "承認トークン"

)

Python

 

ws = Workspace(workspace_id='ワークスペースID',

               authorization_token='承認トークン')

3.2.5.2.   データセット一覧の取得


指定されたワークスペース上に保管されているデータセットの一覧を取得・表示します。


R

 

list <- datasets(ws) # 取得

list # 表示

Python

 

list = ws.datasets # 取得

list # 表示

3.2.5.3.   特定のデータセットのダウンロード


指定されたワークスペース上に保管されている、指定された名称のデータセットを取得・表示します。


R

 

ds <- download.datasets(ws, name = "データセット名", quote="\"") # 取得

ds # 表示

Python

 

ds2 = ws.datasets['データセット名'] # 取得

 

# Rスクリプトで得られるのと同様のdataframeオブジェクトへ変換

ds = ds2.to_dataframe()

 

ds # 表示

Pythonスクリプトの場合、to_dataframe関数の代わりにread_as_text関数やread_as_binary関数を使用して、異なる型のオブジェクトへ変換することもできます。

3.2.5.4.   データセットのアップロード


ローカルPC上のRPythonの実行環境で読み込んだデータセットをAzure Machine Learningへアップロードします。

以下に、「Boston Housing Data」というデータセットを、RPythonのそれぞれからアップロードするスクリプト例をご紹介します。このデータセットは、ボストンの住宅価格と周辺環境に関する様々な変数を集めたものです。R言語のMASSライブラリとPythonscikit-learnライブラリにほぼ同等のデータが含まれており、言語間の処理方法や結果の差異に注目しやすいため、今回アップロード対象とするデータセットに選択しました。以前の記事で扱ってきたアヤメのデータセット(これもscikit-learnライブラリに含まれています)を使用したり、その他の新しいデータセットを使用したりする場合も同様の手順で実施できます。
 

R

 

# データセットの取得

library(MASS)

frame <- Boston

colnames(frame) <- toupper(colnames(frame)) # 列名をPythonと揃える

 

# データセットのアップロード

upload.dataset(frame, ws, name = "Boston Housing Data1")

Python

 

from azureml import DataTypeIds

from sklearn.datasets import load_boston

import pandas as pd

 

# データセットの取得

boston = load_boston()

frame = pd.DataFrame(boston.data, columns=boston.feature_names)

 

# データセットのアップロード

dataset = ws.datasets.add_from_dataframe(

    dataframe=frame,

    data_type_id=DataTypeIds.GenericCSV,

    name='Boston Housing Data2',

    description='Boston Housing Data2'

)

 

3.2.5.5.   データセットの削除


指定されたワークスペース上に保管されている、指定された名称のデータセットを削除します。現状Python client libraryにはデータセットを削除する機能が実装されていないようです。


R

 

delete.datasets(ws, name="Boston Housing Data1")

3.2.5.6.   実験一覧の取得


指定されたワークスペース上に保管されている実験の一覧を取得・表示します。


R

 

list <- experiments(ws) # 取得

list # 表示

Python

 

list = ws.experiments # 取得

list # 表示

 

この他にも、RスクリプトやPythonスクリプトで記述された関数をWebサービスとして発行するための関数等も用意されています。これらについては、次回以降ご紹介させていただきます。

今回は、ブラウザを使用してAzure Machine Learningへデータセットをアップロード/ダウンロードするのではなく、クラウドサービスからインポート/エクスポートしたり、スクリプト言語によってローカルPCからアップロード/ダウンロードしたりすることによって入出力を行うための手順をご紹介してきました。手作業でデータセットの入出力を行う必要がなくなれば、Webサービスが出力するログデータやIoTセンサーデータのように大量のデータが蓄積される用途での活用の幅が広がるでしょう。

次回の記事では、これまでにAzure Machine Learning上で作成した実験をもとに、Webサービスを公開する手順や、公開したWebサービスを呼び出すクライアントアプリケーションを作成するための手順をご紹介します。


ブログアーカイブ


前回までのブログと今後の予定
 
機械学習(Azure Machine Learning)の入門からビジネス活用へ
 
 第12回 Azure Machine LearningによるWebサービスのインターネット公開 6月初旬公開予定
 
 
その他以下ブログを発信中です。