Watson Openscaleでscikit-learn モデルの説明性を確認する　【セットアップ編】

# はじめに
Watson Openscaleの機能を一通り試してみたい場合、[チュートリアル　対話式セットアップ](https://cloud.ibm.com/docs/services/ai-openscale?topic=ai-openscale-gs-obj&locale=ja#gs-obj)の手順に従うのが早道です。
しかし、この手順では、自分で作ったモデルをデプロイする際必要になる手順で一部省略されている箇所があり、自分で作ったモデルを管理対象にしたい場合わからない点がでてきます。
当記事は、この足りない部分を補う目的で記載しました。
記事がかなり長くなったので、当記事はセットアップ手順のみ記載します。
動作確認用の記事は別途[「動作確認編」](https://qiita.com/makaishi2/items/a3f9330fe17b5eaf8d26)として掲載しています。

[2020-04-25] セットアップ手順修正

# 対象モデル
**iris data set**を利用した**多値分類(三値)モデル**を作ります。
利用するモデルはロジスティック回帰モデルです。
フレームワークに関しては、つい最近**scikit-learn**が対応するようになったので、動作確認を兼ねてこのフレームワークを利用することにします。

# 前提環境
下記の環境は設定済みであることを前提としています。インスタンスはすべて**ダラス**で作成して下さい。

* Watson Studio
* Object Cloud Storage
* Watson Machine Learning
* Db2 on Cloud
* Watson OpenScale

ちなみに、すべてのサービスは、Liteプランで作成可能です。

こちらの細かい手順については、以下の別記事を参考にして下さい。

* [無料でなんでも試せる! Watson Studioセットアップガイド](https://qiita.com/makaishi2/items/b666f847a98c2e42dfbb)
* [Watson Studioで追加サービスの登録を行う](https://qiita.com/makaishi2/items/39393d27d71301bafae5)

**Db2 on Cloud**は、**「データベース」**カテゴリに、**Watson OpenScale**は**「AI」**カテゴリに含まれています。

これらのインスタンスがすべてできたら、上記ガイドに従い、Studioのプロジェクトを作成します。Watson Machine Learningのインスタンスは、作成したプロジェクトと関連付けます。
(Db2とOpenScaleについては、この対応は不要です)

# セットアップ用ファイルの準備
以下のファイルを下記サイトからダウンロードしておきます。




|ファイル名  |リンク  |目的  |
|---|---|---|
|``iris-all.csv``  |[iris-all.csv](https://raw.githubusercontent.com/makaishi2/sample-data/master/data/iris-all.csv)  |Db2テーブル作成用  |
|``make-iris-model.ipynb``  |[make-iris-model.ipynb](https://raw.githubusercontent.com/makaishi2/sample-data/master/notebooks/make-iris-model.ipynb)  |モデル構築・保存用スクリプト  |
|``iris-web-test.json`` |[iris-web-test.json](https://raw.githubusercontent.com/makaishi2/sample-data/master/data/iris-web-test.json) |Webサービステスト用 |

Notebook全体を確認したい場合は、以下のリンクを参照してください。

https://github.com/makaishi2/sample-data/blob/master/notebooks/make-iris-model.ipynb


# 認証情報の取得
この後の手順で必要になるので、以下の認証情報を取得しておきます。

* Watson Machine Learning
* Db2 on Cloud

https://cloud.ibm.com/resources から該当するサービスを選択し、

①　サービス資格情報をクリック
② (資格情報がなければ)「新規資格情報」をクリックしてデフォルト設定で資格情報作成
③　資格情報の表示をクリック

![スクリーンショット 2019-07-04 19.10.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/82d2c925-89c1-d973-aad4-5dd99ad9389f.png)

クリップボードのアイコンをクリックすると、資格情報全体がコピーされるので、テキストエディタなどに保存しておきます。

# 機械学習モデルの構築からWebサービスの生成まで


## Jupyter Notebookの読み込み
Watson Stdioのプロジェクト管理画面を表示し、「Add to project」->「Notebook」を選択します。

![スクリーンショット 2019-07-04 20.12.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/201ca943-5c4e-caae-95ae-7995ab394026.png)

下の画面で
① 「From file」タブをクリックします。
②　画面右上の「選択」ボタンをクリックして事前に準備した``make-iris-model.ipynb``ファイルを読み込みます。
③ 「Create Notebook」ボタンをクリックします。

![スクリーンショット 2019-07-04 20.13.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/0ebcf808-a86e-7b2d-816f-6862fd59c9eb.png)

## Machine Learning認証情報の設定
事前準備したWatson Machine Learningの認証情報を下の画面のように``wml_credentails``のセルに張り付けます。

![スクリーンショット 2019-07-04 20.24.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/300944fe-4dcf-29d7-6561-ed34af9f4bf0.png)

## Notebookの実行
後は上から順にnotebookのセルを実行します。
一番上の``!pip install scikit-learn==0.19``コマンドも必ず実行するようにして下さい。
正常に実行できると、Modelの登録、Webサービスの登録、テストまでできるはずです。

![スクリーンショット 2019-07-04 20.31.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/acfcfa56-941d-1b28-80f9-87bf8b81ad28.png)

最後の実行結果が、上の画面のようになっていることを確認して下さい。
予測値が**確率値付き**で戻ってきていることがわかります。

# 学習用テーブルの用意
モデルの登録ができたら、学習用データの入ったテーブルの準備をします。

https://cloud.ibm.com/resources でIBM Cloudのリソース・リストを表示し、**Cloud Foundryサービス**の配下にある**Db2 on Cloud-xx**を選択します。

![スクリーンショット 2019-07-04 20.35.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/b404ee6b-d2ea-976e-ce42-b31364de7c94.png)

下の画面になったら、「Open Console」をクリックします。

![スクリーンショット 2019-07-04 20.38.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/b3faa2e0-9fa2-a904-97ef-2f990a7aaa05.png)

下の画面になったら、画面下方の「Load」ボタンをクリックします。

![スクリーンショット 2019-07-04 20.41.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/595ad81a-8edd-fd87-cfcd-08d9b149a5a9.png)

更に、事前準備した``iris-all.csv``をdrag and dropして、「**Next**」ボタンをクリックして下さい。

![スクリーンショット 2019-07-04 20.41.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/dd870a28-9afb-c65e-2c44-d4259b3b9b4d.png)

下の画面になったら、
①一番上の「**Schema**」を選択します。
②「**New Table**」をクリックします。

![スクリーンショット 2019-07-04 20.44.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/fdef2a86-6fd7-f0de-f178-2db60d184350.png)

テーブル名は「**IRIS**」と入れて、「**Create**」します。

![スクリーンショット 2019-07-04 20.45.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/20bb1106-4776-c28f-2d12-bab91491206b.png)

下の画面になったら「**Next**」をクリック

![スクリーンショット 2019-07-04 20.45.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/488caa48-7b02-8ea7-7e7e-4a56eabedeb4.png)

次の画面では「**Begin Load**」をクリックします。

![スクリーンショット 2019-07-04 20.45.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/490b7483-b909-fb7d-217f-8fda66fe1a5a.png)

これで自動的にテーブル作成とデータロードが行われます。下の画面になったら、登録に成功していますので、画面を閉じます。

![スクリーンショット 2019-07-04 20.46.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/3b966098-d7fe-7eed-57a6-5ae71b55e385.png)

# OpenScaleのセットアップ

これで、必要な準備は一通り終わりました。いよいよOpenScaleの設定を始めます。

https://cloud.ibm.com/resources の管理画面から「**Watson OpenScale-xx**」をクリックします。

![スクリーンショット 2019-07-04 20.54.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/f07ad992-a7be-9260-a8b0-0050bcedec11.png)

下の画面で「**Launch Application**」をクリックします。

![スクリーンショット 2019-07-04 20.55.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/f7cfbef7-7eab-984c-189a-dab9004842f8.png)

次の画面では「**実行しない**」を選択します。

![スクリーンショット 2019-07-04 20.58.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/c858f629-dc0c-a048-1682-4c611ed466a6.png)

その次の「**データベースの選択**」では、「**無料のライト・プラン**」を選択し、画面右下の「**保存**」ボタンをクリックして下さい。

![スクリーンショット 2019-07-04 20.59.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/c53d8da4-54b9-ee4a-f92d-2a6914d7c2b5.png)

引き続き、「**Select Provider**」を選択します。

![スクリーンショット 2019-07-04 21.00.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/bb732fc7-60ba-4e1e-bf2e-0de4ca013f7e.png)

次の画面では「**Add machine learning provider**」をクリックします。

![スクリーンショット 2019-07-04 21.00.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/9ed05ec9-5271-0ef1-cc81-09408a38798e.png)

その次の画面では、左上の「**Watson Machine Learning**」を選択します。

![スクリーンショット 2019-07-04 21.00.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/aaa9b324-afd7-d5c7-d68c-f390488c86e5.png)

その次の画面では、インスタンス名に``pm-20-xx``があるはずなので、それを選択した後、その下の「**Service provider instance name**」に**watson ml**など適当な名前を設定して、画面右下の「**保存**」をクリックします。

![スクリーンショット 2019-07-04 21.03.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/9c5ce4fa-7f3e-3074-d9e5-0b20864e313d.png)

その次の画面では「**Go to Dashboard**」をクリックして下さい。

![スクリーンショット 2019-07-04 21.03.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/46297820-8480-ac28-e246-0d4d1df2b4c5.png)

続けて、画面中央の「**Add*」ボタンをクリックします。これは、管理対象のモデル選択処理になります。

![スクリーンショット 2019-07-04 21.04.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/c1250c01-8f8c-e67a-e698-c73393c40acf.png)

先ほど登録した``scikit-learn``のモデルがあるはずなので、それを選択して「**Configure**」をクリックします。

![スクリーンショット 2019-07-04 21.07.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/07724d35-4368-6491-8b05-e48fea162133.png)

次の画面になったら、「**Configure monitors**」をクリックします。

![スクリーンショット 2019-07-04 21.07.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/319b6224-3925-cccb-3a14-b350c5a62c94.png)

下の画面になるはずなので、Data type は「**Numerical/Categorical**」を、Algorithm typeは「**多項分類**」を選択して、「**Save**」ボタンをクリックします。

![スクリーンショット 2019-07-04 21.07.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/6e32acb3-653e-a934-fddb-e82fd664d1ba.png)

下の画面が表示されるはずです。

![スクリーンショット 2019-07-04 21.20.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/2bbcc32b-86cf-77bf-690f-4b7289649322.png)

ここで**Studioのプロジェクト管理画面**に戻って、「**Deployment**」タブを表示します。先ほど登録したWebサービスがあるはずなので、それをクリックします。

![スクリーンショット 2019-07-04 21.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/a96b1dcc-f79b-4c46-bfd7-ed80e9241fc0.png)

下の画面で
① **Test**タブを表示
② 事前に用意した``iris-web-test.json``の内容を丸ごと入力エリアにコピペ
③ **Predict**ボタンをクリック
します。うまくいくと予測結果が右側に表示されます。
この手順が、この後のセットアップのために重要となります。

![スクリーンショット 2019-07-04 21.48.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/95a2166d-49c6-5f99-b25d-b615598a224c.png)


その後で、**OpenScale設定画面**に戻り、画面左の「**Model Details**」をクリックします。

![スクリーンショット 2019-07-04 21.20.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/08732b4e-88ef-ffde-6b86-759c34d809a9.png)

次の画面右下で、「**Begin**」のボタンが有効になっているはずなのでクリックします。もし、有効になっていない場合は再度Webサービス呼出しを行って下さい。

![スクリーンショット 2019-07-04 21.30.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/13d7b75f-9b54-29fe-4255-fc4bb1f7527c.png)

モニタリングの構成は左側の「**手動構成**」として、「**次へ**」をクリックします。

![スクリーンショット 2019-07-04 21.31.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/db68c187-5331-157d-75b4-bb647be720be.png)

次の画面では**場所**を**Db2**として下さい。その後の接続情報は事前に調べておいたDb2の認証情報を順に入力し、最後に「**テスト**」をクリックします。
テストが正常に終わると、画面右下の「**次へ**」ボタンが選べるようになります。

![スクリーンショット 2019-07-04 21.33.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/3d9b18d9-c6f3-fab7-ff7c-ee0c66e6a444.png)

**スキーマ名**と**テーブル名**は事前に作成したものを選びます。

![スクリーンショット 2019-07-04 21.37.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/64b23863-e802-d1e0-26e5-b73ee4615b68.png)

「**ラベル列の選択**」では、**class**を選択します。

![スクリーンショット 2019-07-04 21.38.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/6d9396a5-d716-3d05-f058-db8c39467e5b.png)

次の画面では4つの項目すべてを選択します。

![スクリーンショット 2019-07-04 21.38.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/86f27d39-afc7-de58-fab8-da1ecfcb66e9.png)

その次の画面は何も選択せずに先に「**次へ**」をクリックします。

![スクリーンショット 2019-07-04 21.38.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/1dcf3e21-40da-e2ed-3145-5f7ee0023ba3.png)

**予測列の選択**では**prediction**を選択します。

![スクリーンショット 2019-07-04 21.45.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/60b53f02-2374-a64e-478b-7b475c3c9742.png)

その次の**予測確率列の選択**では、**probability**を選択します。

![スクリーンショット 2019-07-04 21.45.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/716ccdc4-c6a0-d274-dce5-6f51cd1964bf.png)

設定がうまくいくと下のような確認画面になるので、「保存」をクリックします。

![スクリーンショット 2019-07-04 21.45.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/dd34f475-d113-8d08-bb76-c78535832c61.png)

お疲れ様でした。これで設定は完了となります。

![スクリーンショット 2019-07-04 21.46.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/63a05ee1-e1f9-a0f8-d083-abad1ad000ce.png)

動作確認については、[「動作確認編」](https://qiita.com/makaishi2/items/a3f9330fe17b5eaf8d26)を参照してください。