☆誰でもできる　IBMのWatson studioで機械学習(Machine Learning)をやってみた

#目的
IBM Watson studioを使って、機械学習をしてみよう！
クレジットカードの登録が不必要なライトアカウントを使って、無料で簡単に実装してみたいと思います。

#Watson Studioのセットアップ
私は、以下のサイトを参考に作成する事ができました！
[10分でできるPython機械学習環境! Watson Studioセットアップガイド](https://qiita.com/makaishi2/items/b666f847a98c2e42dfbb)
Azure同様、有料版もありますが、実験やデモ程度なら無料版で色々試す事ができるのは嬉しいです。

# 機械学習で使用するデータの準備 
機械学習ではお馴染みのあやめのデータを使って識別を行います。

[アイリスデータ](https://gist.github.com/netj/8836201#file-iris-csv)
今回は、このWebサイトにあったデータを使ってみます。データ数は合計で150程度ですが、機械学習に触れてみるにはこれくらいで良いと思います。

データの中身は、こんな感じ
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/d18ce493-9654-8e05-0ab0-ed596e6dc49b.png)

CSVの形式になっており、一番右が識別を行う対象のあやめの名称。
他のデータは、あやめの特徴を表すデータです。
1行目のデータを表す名前が日本語だと文字化けしてしまうので注意です。
![88.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/a54bfe4e-3abe-e22a-5f62-4bf349f1030b.png)

次は、データをWatson Studioに取り込む作業です。
projectの画面から、この部分をクリックするとデータを取り込む事ができます
![キャプチャ6.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/3c632f98-9418-da3a-f551-58f6be2ea075.png)

無事、データを取り入れる事ができました。
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/267677/2fd921d0-fcce-31a0-a820-0b23e74fd84b.png)

#Watson studio New Modeler flow作成まで
New Modeler flowを選択
New Modeler flowは、Azure Machine Learningみたいにドラック&ドロップの感覚で作成できます。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/de4952ef-fc52-9c5a-1ae5-ce4ac21a750f.png)


project名(任意)を書いて、createをクリック。
Select flow typeはデフォルトのままで行きたいと思います。
![キャプチャ1.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/57b1bb64-fff4-ae11-7faa-97dad5bd310c.png)

数秒待つと、真っ白なキャンバスみたいなページになります。
![キャプチャ2.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/6e9b4fd3-5aff-f8db-d573-da50383c8ee0.png)

#Watson studio アルゴリズムの選択まで
この白いキャンバスに必要なモジュールをドラック&ドロップしていきます。

左のImportをクリックすると以下のようなモジュールが出てきます。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/50aae5a3-dfd7-0ff9-aab0-f198c7379639.png)

その後、Data Assetをクリックしたままキャンバスまでドラック&ドロップ
![１キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/5c0291a2-d70b-f16e-8e43-37fa0aa9608c.png)

Data Assetをダブルクリックし、Change data assetをクリック
その後、先ほどのデータを選択、以下のようになったのを確認したら、
![８キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/ad0b4ae1-d8cb-e64b-047c-d0aab6cdd1f3.png)

下のほうにあるsaveをクリックします！
![キャプチャ9.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/935d30c8-1ecd-c398-4fad-91d685e038d4.png)

次に、データの分割と何を識別するのかWatsonに教えてあげましょう！
教師あり学習で識別するので、今回は半分のデータで学習させて、半分のデータで評価をします。

Field OperationからPartitionはデータの分割、Typeは識別するターゲットを選択します。
今回は、あやめの種類がターゲットとなります。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/f703031e-6bc3-3265-c33e-13a83fd6c459.png)

こんな感じで並べて、Azure Machine Learningのようにモジュールを繋げていきましょう。
Data Assetの丸い部分をクリックしたまま、Partitionの左側の丸い部分まで持っていくと線を引くことができます。
![キャプチャ2.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/ebdcb855-8a6a-e310-d29b-e9dfb6831961.png)

繋げ終わったら、Partitionをダブルクリック。
デフォルトでTrainingとTestは半分ずつのようです。
Seedの部分は、データを分割する時のRandom seedで、Generateを押すとRandomで数字が変わります(指定も可能)。
![キャプチャ3.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/fb0eec71-5604-83d1-68e0-073b69dd26ed.png)

Typeをダブルクリックすると右にこんなものがでてきます。
![キャプチャ4.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/a8d4048d-450d-85c0-1244-dad1a75cf8b2.png)

Configure Typesをクリックします。この時には、まだデータがこのモジュールまでやってきていないので、Read Valuesを押して、データをこのモジュールまで到達させてあげます。
![５キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/bf669835-d07b-487b-948c-af6b7d36f30e.png)

今回は、あやめを識別するので、Targetにします。
![１キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/e76bd315-644f-ffbe-bfa8-4cba4b1880a4.png)

#Watson Studio アルゴリズムの選択から実行まで
データを識別する為のアルゴリズムを選択していきます。
![キャプチャ3.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/b1851534-0362-d8ef-89c3-ed29b237dd45.png)
様々用意されており、今回はRandom Treesを利用していきます。
[Random Treesの概要](https://dataplatform.ibm.com/docs/content/analyze-data/spss-viz-random.html?audience=wdp&context=analytics)

繋げたら、いよいよRunを押して実行してみます。
![キャプチャ55.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/09cf7f58-72bf-bd03-9793-63841bdc38f8.png)

数秒待つと、黄色いモジュールが出てきました。これで機械学習による識別は終わりです。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/75490cc0-e874-7935-de58-37b8e0daad0b.png)

#学習モデルの評価
黄色いモジュールを右クリックをして、View Modelをクリックしてみましょう。

識別の精度は84%、ほどほどって感じですかね。
![キャプチャte.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/10ef49f1-7647-088b-1374-63c74ad4eeee.png)

もちろん、Confusion Matrixも見る事ができます。
![キャプチャdsada.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/e3927054-033b-319a-fda4-dba2f0dff2ac.png)

これはモデルを作成した時の、特徴量の重要度を示すグラフです。
Azure Machine Learningでは、このようなものが無かったのですが、Watsonでは知る事ができます。petal.lengthが一番重要度が高いことが分かりました。

![キャプチャfgsgs.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/270f09bb-0857-ad9c-2843-eb08bbd644ce.png)

これは、Random Treesで作成した決定木のルールをみる事ができます。
Top Decision Rulesのタブを押すと他にも、Top Rules by Insightでは、あやめの種類ごとの作成した決定木、All Rulesで全ての決定木を見る事ができます。
![キャプチャcasdcd.PNG](https://qiita-image-store.s3.amazonaws.com/0/267677/14ef1e51-a96a-6ca4-e030-4d8f5075aa2f.png)

#まとめ
機械学習のシンプルな部分を簡単に実装できました！

今回使った、あやめのデータを3次元のグラフにしてみました。
[IBMのWatson studioでデータの可視化をノンプログラミングでやってみる](https://qiita.com/koichi_hiphopdream/items/28d6c41f5863a59f77d6)