Cortana Intelligence Suiteを構築（第5回）- Azure Machine Learningを使ってデータを予測してみる（サインアップ＆データの準備編）

#概要
今回は[Cortana Intelligence Suiteを構築（第4回）](URL http://qiita.com/taiki_yoshida/items/2b965232045ca2abdc89)で出力した東京メトロの各路線の運航情報データと、[気象庁の気象データ](URL http://www.data.jma.go.jp/gmd/risk/obsdl/index.php)を組み合わせて、天気、曜日をもとに予測される各路線の遅延時間を算出する機械学習モデルを、Azure Machine Learningで構築してみます。

#事前に準備するもの
* Azure サブスクリプション
* [Cortana Intelligence Suiteを構築（第4回）](URL http://qiita.com/taiki_yoshida/items/2b965232045ca2abdc89)で出力したデータ

#設定手順

##気象庁データの準備
気象庁では、過去気象庁が観測したすべての気象情報がCSV形式でダウンロードできるサイトを提供しています。今回はこのサイトからダウンロードしたCSVファイルを東京メトロの運航データと組み合わせてみます。

1. http://www.data.jma.go.jp/gmd/risk/obsdl/index.php へアクセスし、地点を選択します。今回は東京を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/1d91d038-b38d-fec4-171b-1cfcd555952c.png)

2. 詳細の地域が選べるので、「東京」にチェックを入れます。全地点も選択可能ですが、一度にダウンロードできるデータ量は制限があるため、なるべく小さい範囲と項目を選びましょう。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/60c5a6b0-3ed7-47c9-93c3-f9261552acdc.png)

3. 出力したい、項目を選びます。今回利用するのは、気温、降水量、風向・風速と天気です。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/4303524b-6eec-8085-a6dd-aba253cbfe72.png)

4. 出力する期間を選択します。ここは、[Cortana Intelligence Suiteを構築（第4回）](URL http://qiita.com/taiki_yoshida/items/2b965232045ca2abdc89)で出力した期間を選択しましょう。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/55a1d75d-e44f-7ee1-6c8e-afd6340fa47d.png)

5. 表示オプションはそのままの状態で、「CSVファイルをダウンロード」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/55138f3d-7b00-ee6e-6806-9f1640637697.png)

6. このままではデータが利用できないので、Excelで加工します。品質情報、均質番号の列は削除します。
天気の列は、数字で表されているので、[こちらに記載されている](URL http://www.data.jma.go.jp/gmd/risk/obsdl/top/help4.html#data_tenki)、表と文字列を置き換えます。
Before：
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/721a07b1-198e-916f-4f4c-0025aea44b6e.png)
After：
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/7978b32b-5a2c-b1c9-2f60-3572097941a9.png)

7. 加工したCSVは後程使うので、デスクトップ等に保存しておきます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/df95b8a9-cd5e-0703-dff1-2a6f1cfa3567.png)

8. このままだと文字化けするので、メモ帳で開きなおし、文字コードを「UTF-8」にして上書き保存します。
これで、天気情報の準備が整いました。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/1ab3741b-5d5f-2905-8315-4121d7d50541.png)

##Azure Machine Learningの準備
利用するためには、まず、Azure Machine Learningを「[クラシックポータル](URL https://manage.windowsazure.com/)」からサインアップする必要があります。

1. https://manage.windowsazure.com/  へアクセスし、「Machine Learning」をクリックし、「ML ワークスペースの作成」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/3536ceaf-9b37-8c1a-7e19-7c245f0298a5.png)

2. 画面下から新規作成画面が表示されます。ワークスペース名を記入し、場所は日本に一番近い「Southeast Asia」を選択します。ストレージアカウントは「新しいストレージアカウントを作成する」にして、ご希望のストレージアカウント名を記入します。すべて記入し終えたら、「ML ワークスペースの作成」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/13616978-4e62-d02e-9b0c-7e0863aac259.png)

3. デプロイが開始されます。１～３分ほどで完了します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/758dde5d-472c-40fb-53a8-db8ae8d322f3.png)
デプロイが完了すると、以下のように表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/7257dbe4-fb78-b19e-5132-ab47fa4330b1.png)

4. 新しく作成したAzure Machine Learningの環境が選択できるようになりました。矢印（→）をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/7006eabf-fa17-e3e1-7f5d-2972ed7f3812.png)

5. 「ML Studioにサインイン」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/a07f4182-f02f-28bd-6284-f105bc6f7a33.png)

6. Microsoft Azure Machine Learning Studioの画面が別ウィンドウで表示されました。これでAzure Machine Learning環境の準備は整いました。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/8183e3da-b198-33bf-054e-300c90e705d4.png)

##Azure Machine Learningで予測モデルを構築する
Azure Machine Learningは、データ元として、複数の選択肢が用意されており、Azureストレージアカウントや、Azure SQLデータベース、Azure Data Lake等のAzureサービスはもちろんのこと、それ以外にもローカルに保存しているファイルを直接アップロードしてしまうことも可能です。今回は、[Cortana Intelligence Suiteを構築（第4回）](URL http://qiita.com/taiki_yoshida/items/2b965232045ca2abdc89)で出力先として利用したAzureストレージアカウントと、事前に用意した気象情報（weather_data.csv）をアップロードする方法、2つをご紹介します。

####ローカルにあるファイル
1. 画面左下の「＋NEW」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/fee4597e-1e21-28d1-1cba-8152d7e13942.png)

2. 「DATASET」> 「FROM LOCAL FILE」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/c1e4a607-5dc7-2b92-84b3-04471dc411a0.png)

3. 「ファイルを選択」をクリックし、デスクトップにある、「weather_data.csv」を選択します。アップロードを始めるにはチェックをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/6c97940e-8ca3-cdc8-f97a-25858e5c4287.png)

4. アップロードが始まると、以下のメッセージが表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/e2a58d83-ef29-0879-76c2-48598ca97c1a.png)
完了すると、以下のように表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/02288753-5a0d-da35-dd19-372d4852bc0b.png)

####Azure ストレージアカウントから
Azureストレージアカウントをデータ元にする場合は、ストレージアカウントキーを事前に取得する必要があります。
そのあと、新しい「実験（Experiment）」をAzure Machine Learning Studioで作成し、その実験の中で、データ元をAzureストレージアカウントにする必要があります。

1. Azure Portal から[Cortana Intelligence Suiteを構築（第4回）](URL http://qiita.com/taiki_yoshida/items/2b965232045ca2abdc89)で作成したストレージアカウントへアクセスします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/43ebada1-f013-f87a-611e-931ba9a6fbed.png)

2. 「アクセスキー」をクリックし、「ストレージアカウント名」と「key1」のキーをコピーし、メモ帳等へ貼り付けておきます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/74854bb7-9f26-dc43-efec-71bf622c2909.png)

3. http://studio.azureml.comへアクセスし、「my experiments」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/64cdcb64-bdf7-2dd5-abf9-0d20d1688057.png)

4.  画面左下の「＋NEW」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/fee4597e-1e21-28d1-1cba-8152d7e13942.png)

5. 「Experiment」を選択し、「Blank Experiment」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/9e1a3de0-28b1-bce2-712c-ec8a93914e53.png)

6. これが、実験（Experiment）の画面です。まずは実験名が「Experiment created on <作成日>」になっているので、わかりやすい名前に変更します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/eb8a8363-edad-2cb6-cba2-c892e21e9827.png)

7. 左側にモジュールのカテゴリーが表示されています。クリックすると、カテゴリーの中に含まれる、各モジュールが表示されます。Azure ストレージアカウントを接続するには、「Data Input and Output」のカテゴリーにある、「Import Data」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/c6f5d689-f611-e946-6711-62e8ae2cd16e.png)

8. 「Import Data」をドラッグ＆ドロップで、中央へ持っていきます。画面右側に「Import Data」のプロパティが表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/40947773-e943-2916-4254-e37e730bc352.png)

9. 「Data Source」を「Azure Blob Storage」にし、「Authentication Type」は「Storage Account」にします。（2）で取得した、ストレージアカウント名を「Account name」に、キーは「Account key」へ貼り付けます。
Path to containerは、[Cortana Intelligence Suiteを構築（第4回）](URL http://qiita.com/taiki_yoshida/items/2b965232045ca2abdc89)で定義した、ファイルの出力先のパスです。
私の場合は、「tyqiita/output/result.txt」です。「Use cached results」にチェックを入れることで、Azure Machine Learningが毎回Azure Blob Storageからデータを取得せず、キャッシュを保管し、後の構築作業がより早くAzure Machine Learning内で処理できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/a10667c4-505e-db1c-b6b7-8ee9da61ac67.png)

10. アクセスできるか、「Run」をクリックして、実行してみます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/05aa6b4e-6205-ded9-1dc9-52fc8a9e856f.png)

11. 処理が完了すると、「Finished Running」と画面右上に表示されます。実際に取り込まれたデータを確認するには「Import Data」を右クリックし、「Results dataset」から「Visualize」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/c4f12cd5-d1c7-46e3-58ad-3f21e9f0bcbf.png)

12. 画面に表が表示されました。これが実際に取り込まれたデータのプレビュー画面です。列をクリックすると、一意の値は何件あるか、どんなタイプの列なのか（値、文字列、日付なのか等）の情報も確認できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/116da4fc-8d1d-8395-29c6-f02f9e5a8748.png)

13. これで、データの準備は整いました。次回はこのデータを利用して、機械学習モデルを作成します。