IBM Cloud Pak for Data as a Serviceを始めてみる（19.Modelerフローで不良品件数予測モデルを開発する ）

#### IBM Cloud Pak for Data の XaaS 版 as a Service の始め方をまとめました。

この記事は、<strong>データ利用者</strong>向けの内容となっています。SPSS Modelerフローを使用して製造ラインの不良品予測モデルを開発するというシナリオで、Modelerの様々なノードの使い方をご紹介しています。ご参考ください。

#IBM Cloud Pak for Data as a Serviceを始めてみる（19.Modelerフローで不良品件数予測モデルを開発する ）

### 目次
1. はじめに
2. データの事前準備
3. 二つのデータベースのデータをModelerを使って一つのデータにマージする。
4. NULL値を0に変換する。（データの前処理例）
5. 前処理したデータを新しいcsvとして出力する。
6. 予測モデルを作成する。
7. 予測モデルをデプロイする。

### シリーズ目次
-<strong>管理者向け</strong>
[IBM Cloud Pak for Data as a Serviceを始めてみる（1.プロビジョニング編）](https://qiita.com/Asuka_Saito/items/df3467dc4c9919772c63)
-<strong>全員</strong>
[IBM Cloud Pak for Data as a Serviceを始めてみる（2.ログイン編）](https://qiita.com/Asuka_Saito/items/457658cf9304e6adff38)
-<strong>データ利用者向け</strong>
[IBM Cloud Pak for Data as a Serviceを始めてみる（3.分析環境編）](https://qiita.com/Asuka_Saito/items/d01a1fc4c5ec5068daeb)
[IBM Cloud Pak for Data as a Serviceを始めてみる（4.データの前処理編）](https://qiita.com/Asuka_Saito/items/1354e7ecbe2b2fb75b3a)
[IBM Cloud Pak for Data as a Serviceを始めてみる（5.モデルの自動作成）](https://qiita.com/Asuka_Saito/items/17ba627abd81d421a8b7)
[IBM Cloud Pak for Data as a Serviceを始めてみる（6.モデルのデプロイと呼び出し）](https://qiita.com/Asuka_Saito/items/814b17acb7f8357bdfab)
[IBM Cloud Pak for Data as a Serviceを始めてみる（7.ダッシュボードの作成）]
(https://qiita.com/Asuka_Saito/items/79a3b9cd7f65b45d04a3)
-<strong>データ提供者向け</strong>
[IBM Cloud Pak for Data as a Serviceを始めてみる（8.カタログの作成）](https://qiita.com/Asuka_Saito/items/3890263e23e4814416a0)
[IBM Cloud Pak for Data as a Serviceを始めてみる（9.ビジネス用語の作成）](https://qiita.com/Asuka_Saito/items/bb6d98ff8cb76e3e19a9)
[IBM Cloud Pak for Data as a Serviceを始めてみる（10.メタデータのインポート）](https://qiita.com/Asuka_Saito/items/c7de6d112f45ea9dbe3b)
[IBM Cloud Pak for Data as a Serviceを始めてみる（11.ビジネス用語の割り当て）](https://qiita.com/Asuka_Saito/items/65da51d93a5433fefbf5)
-<strong>データ利用者向け</strong>
[IBM Cloud Pak for Data as a Serviceを始めてみる（12.カタログ検索してデータを見つける）](https://qiita.com/Asuka_Saito/items/acbc313f48044f8b96c0)
-<strong>管理者向け</strong>
[IBM Cloud Pak for Data as a Serviceを始めてみる（13.Db2のサービスを追加する）](https://qiita.com/Asuka_Saito/items/373e04aabe9dc173ed51)

-<strong>その他参考</strong>
[IBM Cloud Pak for Data as a Serviceを始めてみる（14.GoSalesのデータを使う）](https://qiita.com/Asuka_Saito/items/74a95ed99f6209380b34)
[IBM Cloud Pak for Data as a Serviceを始めてみる（15.コールセンターのデータセットを使う）](https://qiita.com/Asuka_Saito/items/8d436e1279e71d76ad4b)
[IBM Cloud Pak for Data as a Serviceを始めてみる（16.Modelerフローのサンプルを使ってみる - 薬剤研究例 ）](https://qiita.com/Asuka_Saito/items/44aa14bc12c84bdbed24)
[IBM Cloud Pak for Data as a Serviceを始めてみる（17.Db2のサービスへの接続情報を追加する）](https://qiita.com/Asuka_Saito/items/9a486cdad53ab675fa49)
[IBM Cloud Pak for Data as a Serviceを始めてみる（18.機能改善やアイディアを投稿する）](https://qiita.com/Asuka_Saito/items/81b60a7c361ae3e0face)
[IBM Cloud Pak for Data as a Serviceを始めてみる（19.Modelerフローで不良品件数予測モデルを開発する ）](https://qiita.com/Asuka_Saito/items/6f74dc885f6e54ca0caa)
[IBM Cloud Pak for Data as a Serviceを始めてみる（20.無償プランの枠を使い切った場合）](https://qiita.com/Asuka_Saito/items/1fae6bc10817986095bd)


### 1. はじめに 

この記事では、2つの異なるシステムから予測のもととなるデータを利用して、製造ラインの不良品予測モデルを開発するというシナリオとなっています。

この記事の目的は、Modelerフローでどのようなノードを使うと何ができるか、一つの開発を例にご紹介できればと思っています。皆様もいろいろなノードを使ってみてください。


#### このハンズオンのシナリオ
![19-1-1.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/a615c4a0-2073-dc90-5856-02f49d4fc894.png)



### 2. データの事前準備
モデルを作成する前に、
①不良品発生の製造ラインのデータ（DEFECTIVE_PRODUCT_LIST）と
②製造ロボットのデータ(ROBOT_MAINTENANCE_INFO)を
データベースにインポートする下準備から始めたいと思います。

IBM Cloud Pak for Data as a Serviceに Db2 のLiteプランをまだ追加していない場合は、こちらをご覧いただき、追加するところから実施してみてください。
[IBM Cloud Pak for Data as a Serviceを始めてみる（13.Db2のサービスを追加する）](https://qiita.com/Asuka_Saito/items/373e04aabe9dc173ed51)

次に、[こちらのGitHub](https://github.com/AsukaSaito0222/qiita)からDEFECTIVE_PRODUCT_LIST.csvとROBOT_MAINTENANCE_INFO.csvファイルをダウンロードして、Db2にインポートします。
インポート方法は[IBM Cloud Pak for Data as a Serviceを始めてみる（13.Db2のサービスを追加する）](https://qiita.com/Asuka_Saito/items/373e04aabe9dc173ed51)の「3.データのロード」をご参考ください。

また、プロジェクト内に、このデータベースへの接続情報を作成しておきます。作成方法は[IBM Cloud Pak for Data as a Serviceを始めてみる（17.Db2のサービスへの接続情報を追加する）](https://qiita.com/Asuka_Saito/items/9a486cdad53ab675fa49)をご確認ください。

### 3.二つのデータベースのデータをModelerを使って一つのデータにマージする。

3-1. IBM Cloud Pak for Data as a Serviceにログインし、TOPページを表示します。すでに、[IBM Cloud Pak for Data as a Serviceを始めてみる（3.分析環境編）](https://qiita.com/Asuka_Saito/items/d01a1fc4c5ec5068daeb)でプロジェクトを作成している場合は、「最近使用したプロジェクト」にプロジェクト名が表示されますので、クリックします。ない場合はプロジェクトを新規に作成してください。
![4-2-1.DR.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/f7db842f-9512-6196-da10-da9320de9bd1.png)

3-2. 資産タブに移動して「プロジェクトに追加」をクリックし「Modelerフロー」を追加します。
![16-2-1.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/5fa86b2c-8aae-c341-885a-7e92bb6043ee.png)

3-3.名前を入力して「作成」をクリックします。
![19-3-3.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/bc070f4d-1807-3ffe-ffe2-507784d35ac3.png)

3-4.Modelerフローのパレットが開きました。左側のメニューから「インポート > データ資産」を選択して、パレットに追加します。2個追加してください。
![19-3-4.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/4f182b5c-64ac-d3fc-8b0c-90c5ab4880d9.png)

3-5.一つ目に追加した「データ資産」のノードをクリックして、「データ資産の変更」をクリックします。
![19-3-5.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/38dd6df2-ddeb-26be-2604-1adef46e1207.png)

3-6. 「接続」をクリックし、事前に作成しておいた接続情報の名前をクリックして、事前にロードしておいたデータ(DEFECTIVE_PRODUCT_LIST)を選択し、「OK」をクリックします。
![19-3-6.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/99c3da52-1b8d-1c8e-5822-b60c4c47aaf3.png)

3-7.前の画面に戻るので、設定されたことを確認し「保存」をクリックします。
![19-3-7.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/ea794842-49dd-fff4-531e-4dfb82d3aa3f.png)

3-8.同様の手順で、2つ目のデータ資産ノードに、「ROBOT_MAINTENANCE_INFO」を設定します。
その後、左側のメニューの「レコード操作 > マージ」を追加し、それぞれのデータ資産ノードから矢印を引っ張ってつなぎます。
![19-3-8.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/7ab14181-5712-8517-70ba-899802afb066.png)

3-9. DEFECTIVE_PRODUCT_LISTとROBOT_MAINTENANCE_INFOは「ROBOT」「FACTORY_LINE」でJoinができるため、このキーを元に、これからデータをマージします。
マージノードをダブルクリックし、マージ法で「キー」を選んで、列の追加で「ROBOT」「FACTORY_LINE」を追加します。設定したら「保存」をクリックします。
![19-3-9.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/efd369c0-57d2-2928-3d42-1f08188bedb4.png)


3-10.ここまでで、データの傾向を確認したいので、パレットに「出力 > データ検査」を追加し、マージノードと矢印でつなぎます。データ検査ノードの右上で右クリックし「実行」をクリックします。
![19-3-10.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/408aff7d-3302-7d17-519f-acfc4fc5be67.png)

3-11.データが出力されたので、右側の「開く」のアイコンをクリックして中身を確認します。
![19-3-11.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/b6cd6012-4666-c58c-1203-109481504f9b.png)

3-12.それぞれの項目のデータの傾向を確認することができます。下の方にスクロールすると、QUANTITYにNULL値があることがわかりました。次にNULL値を0に変換していきたいと思います。
![19-3-12.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/98d5aed7-31b3-ec99-720a-a32d1eb770b5.png)
![19-3-13.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/59ef3d7a-e1f2-5db1-a06b-915e012f7bac.png)



### 4. NULL値を0に変換する。（データの前処理例）
4-1.「フローに戻る」をクリックして、Modelerフローのパレットに戻ります。
![19-4-1.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/c197a813-869e-70a4-9b06-0b74b5f9c4e2.png)

4-2. 左側のメニューから「フィールド操作 > 置換」を選択し、パレットに追加して、マージノードと矢印でつなぎます。
![19-4-2.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/df7640f7-9590-3f7d-0122-1789d202cc38.png)

4-3. 置換ノードをダブルクリックし、「列の追加」をクリックして「QUANTITY」を追加し、置換する値に「ヌル値」を指定します。
![19-4-3.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/369ce53c-af74-729b-5b1f-27f553058271.png)
下の方にスクロールして「置換文字列」に0をセットし「保存」をクリックします。
![19-4-4.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/0e924a81-1286-9d1c-025c-3404cd341a5e.png)

4-4.再度「出力 > データ検査」をパレットに追加し、置換ノードと矢印でつないで、データ検査ノードを実行します。
![19-4-5.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/ed6079dc-3c5f-dfd3-7874-da2d05a90807.png)


4-5.先ほどと同様に中身を確認します。QUANTITYのNULL値が0に変換されているので、NULL Valueの数が0になっているのを確認できます。
![19-4-6.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/e5e3aa6f-88b4-a594-2bc0-3c4b1fa82452.png)

4-6.次に、日付、ライン、ロボット別に不良品件数を集計し、これを予測の教師データとしたいと思います。「レコード操作  > 集計」をパレットに追加して、置換ノードとつなぎ、集計ノードをダブルクリックします。
![19-4-7.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/721604f8-6304-1fc9-5b45-ba237486c2db.png)

4-7.キー・フィールドで「列の追加」をクリックし、FACTORY_LINE、ROBOT、DATEを追加します。
集計フィールドでQUANTITYを追加します。meanは外して、sumだけにします。
![19-4-81.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/0a8cd92a-d665-51d9-d14d-fc8025523b48.png)

デフォルト・モードでもmeanは外して、sumだけにします。レコードカウントを含めるのチェックをはずし、保存をクリックします。
![19-4-82.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/82614bae-c07f-ed26-aa90-566ad10162a2.png)




4-8.データの中身を確認したいと思います。「出力 > 表」をパレットに追加して、表ノードを右クリックし、実行します。
![19-4-83.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/fa69744d-8787-5132-8e98-1dac63bb9143.png)


4-9.出力されたデータを確認します。QUANTITY_Sumに集計値がセットされています。
![19-4-20.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/4b55dceb-51dd-d18f-adc6-ec155a6a77e4.png)

![19-4-21.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/f79b4fc6-7e58-a32a-017c-2676378f9f03.png)



### 5. 前処理したデータを新しいcsvとして出力する。
5-1. 2つのデータベースのデータをマージし、NULL値を0に変換し、QUANTITYも集計したので、ここで、一旦データを新しいcsvに出力したいと思います。
左側のメニューから「エクスポート > データ資産エクスポート」を選択して、パレットに追加し、置換ノードを矢印でつなぎ、実行します。
(ファイルはデフォルトではoutput.csvというファイル名で出力されます。もしすでに同じファイル名でファイルが分析プロジェクトにある場合、エラーになるので、この場合は、データ資産エクスポートノードをダブルクリックして、出力ファイル名を別の名前にしてください。）
![19-5-10.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/62fdfed7-3d2b-7fa7-1dfd-1ddb67ec3411.png)



5-2.分析プロジェクトの資産タブに戻って、csvが出力されているか確認します。
![19-5-20.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/320b3f13-6700-1f31-75af-5488cc88c98a.png)




### 6. 予測モデルを作成する
6-1.先ほど出力したcsvを使って、不良品件数予測モデルを作成します。Modelerフローに戻って、パレットに、データ資産ノードを追加します。
![19-6-10.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/8abab64d-5428-8a9c-b18e-e9ca57092c0c.png)


6-2. 追加したデータ資産ノードをダブルクリックし、「データ資産の変更」をクリックして、先ほど出力したcsvファイルを指定します。
![19-6-20.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/f6116a35-1047-cd09-42ce-0c505318752b.png)




6-3. 左側のメニューから「フィールド操作 > タイプ」をパレットに追加し、データ資産ノードを矢印でつなぎます。
![19-6-30.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/8ca936f9-d75c-ae89-5946-0344d9a396d2.png)



6-4.タイプノードをダブルクリックし、「値の読み込み」をクリックします。
![19-6-41.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/e0f9e6bc-b596-9281-21aa-5a8f0fe367d6.png)


6-4. ロールの値を編集します。
ここでは、QUANTITY_SumをTargetにし保存します。
![19-6-42.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/4fc18db8-bbaa-8096-f1e8-dac471033bb6.png)




6-5. 左側のメニューから「モデル作成 > 自動数値」をパレットに追加して、タイプノードと矢印でつなぎ、自動数値ノードを実行します。
![19-6-61.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/e1ab690f-a38b-2faa-48f6-b860f0f3fac4.png)



6-6. 自動数値ノードを実行してモデルが作成されました。
![19-6-62.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/454fe904-2cf1-c7ba-f933-01bc4be1c74f.png)




6-7. 左側のメニューから「出力 > 表」を選び、パレットに追加して、作成したモデルと矢印でつなぎ、表ノードを実行します。
![19-6-70.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/956a6ed1-b5db-25ce-1adc-12384d7f1767.png)




6-8.出力結果を確認します。「\$XR-QUANTITY_Sum」が不良品の件数の予測値で、「\$XRE-QUANTITY_Sum」が予測誤差になります。
![19-6-80.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/30b60f38-a696-b2d0-d21e-bbfcf3427a2b.png)





### 7. 予測モデルをデプロイする。
7-1.最後に、作成したモデルをWebサービスとしてデプロイして、アプリケーションから呼び出しできるようにします。
Modelerフローのパレットで先ほど追加した表ノードを右クリックし、「ブランチをモデルとして保存」をクリックします。
![19-7-21.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/0f61d853-a060-846c-cfb0-8057e3c0e65a.png)



7-2.モデルの名前をつけて、保存をクリックします。
![19-7-22.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/307b97be-1041-612e-b551-7195a5b2c101.png)


以下の画面が表示されたら「閉じる」をクリックします。その後、Modelerフローが表示されますが、分析プロジェクトの資産タブに移ってください。
![19-7-23.SPSS.png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/e6dab671-dae3-eecb-8ef0-2ba5bdc76a79.png)




7-3.分析プロジェクトの資産タブの「モデル」のところに、先ほど保存したモデルが追加されています。追加されたモデルの右端をクリックし「プロモート」をクリックします。
![19-7-51.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/f9b0bbeb-d8f7-c1f6-8e0b-90f29a078118.png)


7-4.ターゲット・スペースを選択し、「プロモート」をクリックします。（プロモートするスペースを新規に作成する場合は、「新しいスペース」をクリックします。）
![19-7-60.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/02ea1de5-8ad9-0948-fb3b-af1dbf10f2e7.png)


7-5.プロモートされると右側にメッセージが表示されますので、リンクをクリックして、デプロイメント・スペースに移動します。
![19-7-61.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/ebac2fbc-21b9-80ae-6630-efe06d17cf5d.png)



7-6.プロモートしたモデルをデプロイします。
![19-7-80.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/5196f9f5-490b-05e8-e654-96c2b7aa4c7a.png)



7-7. オンラインか、バッチを選び、名前を入力し「作成」をクリックします。この記事では都度呼び出しのオンラインを選んでいます。
![19-7-81.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/e6c58cf3-77c8-683d-327f-50a8831e5695.png)


7-8.右上にデプロイ成功のメッセージが表示されたら、モデル名をクリックします。デプロイ済みと表示されているはずです。名前をクリックします。
![19-7-82.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/9761d43c-4f77-cf6a-519b-bfaa4e80a981.png)



7-9.他のアプリケーションからこのモデルを呼び出すためのコードが提供されています。「テスト」タブでは、すぐにモデルを実行して試すことができます。
![19-7-83.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/b6d4dfe1-3ca6-8248-9627-d788a0f91262.png)
![19-7-84.SPSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/9a036081-498f-41f3-e043-c1847910ce75.png)





以下は、不良品数の予測が27.43個で、予測誤差が5.32と結果が返ってきた例です。

````結果
{
    "predictions": [
        {
            "fields": [
                "FACTORY_LINE",
                "ROBOT",
                "DATE",
                "QUANTITY_Sum",
                "$XR-QUANTITY_Sum",
                "$XRE-QUANTITY_Sum"
            ],
            "values": [
                [
                    "L100001",
                    "R1011",
                    20210901,
                    0,
                    27.43161888837767,
                    5.321905452792361
                ]
            ]
        }
    ]
}
````




以上、Modelerフロー で製造ラインの不良品予測モデルの作成を通じて、いくつかのノードの使い方をご紹介させていただきました。ぜひこの機会にIBM Cloud Pak for Data as a ServiceのModelerフロー をお試しください。