欠損値を最頻値で置換する(SPSS Modeler データ加工逆引き5-5)

# 欠損値を最頻値で置換（欠損値の補完）

![スクリーンショット 2022-07-06 14.05.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/be69d3f8-7e91-247d-1162-26277dfbf50e.png)

## 1.想定される利用目的

・顧客属性データの補完
・設備IoTデータの欠損値の処理

## 2.サンプルストリームのダウンロード

https://github.com/yoichiro0903n/blue/blob/main/missing_values2mode.str?raw=true

## 3.サンプルストリームの説明

![スクリーンショット 2022-07-06 14.07.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/db253243-c86e-0484-f061-6ba3cdc0057f.png)

a.入力するデータは以下の通りです。

![スクリーンショット 2022-07-06 14.09.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e02de723-98ee-c1e0-6a63-c26a4c959c7e.png)

#### [データ検査]ノードを利用する方法

b.[データ検査]ノードを編集し赤枠にチェックをして実行します。
![スクリーンショット 2022-07-06 14.10.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/13eb5ca2-5e20-8362-788b-b5d0a43a1aef.png)

[欠損値検査]タブを開き[欠損値の代入]を[空白およびヌル値]に。[代入方法]は[固定]をクリックして[設定値のダイアログ]から[最頻値]を選択します。
![スクリーンショット 2022-07-06 14.14.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/bfca7fa4-0c02-2aa0-3318-edfe3aae867e.png)

[生成]メニューから[欠損値スーパーノード]を選択するとcと同じものがストリーム領域に生成されます。
![スクリーンショット 2022-07-06 14.16.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6369b3eb-7499-aa6d-742b-e3b05d878a2f.png)

c.スーパーノードの中見は以下の通りです。[データ検査]ノードで選択した時点で最頻値[a]が埋めこまれました。
![スクリーンショット 2022-07-06 14.37.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/81060f52-824e-7f69-3ea8-354eef25cb33.png)

[プレビュー]します。欠損値が最頻値に置き換わりました。
![スクリーンショット 2022-07-06 14.38.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/65fa359b-b31a-aeae-960a-05bb57b28bc1.png)

#### 統計値をテーブル結合してから置換える方法
ストリームが最新データを受けてCADSなどで自動化されることを考慮した方法です。

d.[レコード集計]ノードを編集します。[キー]に[種別]を選択します。
![スクリーンショット 2022-07-06 14.40.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/171bf3bb-dc5c-8067-a66c-9869aa402fbb.png)

[プレビュー]します。最頻値はaです。
![スクリーンショット 2022-07-06 14.40.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/16078fb1-21ea-aa97-9543-f322f614bcf8.png)

e.[ソート]ノードを編集します。[Record_Count]を降順ソートします。
![スクリーンショット 2022-07-06 14.41.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/66a127d8-cc28-e4d2-4dd8-3067f47eb0ac.png)

f.[サンプリング]ノードを編集します。ソート済みのため先頭レコードの1行だけ抽出します。
![スクリーンショット 2022-07-06 14.41.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/542e2dfc-55fa-6bbc-2896-d9ed258927db.png)

g.[フィルター]ノードを編集します。後続のフィールド名の重複を回避し、不要な列をフィルターします。
![スクリーンショット 2022-07-06 14.41.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/3d733863-8707-6da0-5a3d-c8691003d624.png)

h.[テーブル結合]ノードを編集します。[レコード結合方法]は[[キー]をブランクにしてN対Nの結合を行います。
![スクリーンショット 2022-06-29 17.33.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/89a5f157-8fba-ddea-2204-358f55f7046b.png)

[プレビュー]します。
![スクリーンショット 2022-07-06 14.42.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/f4966d02-eae5-9f1d-fe16-d0ddbbf040b1.png)

i.[置換]ノードで欠損値を最頻値に置換えます。
![スクリーンショット 2022-07-06 14.43.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/325a2463-d1f6-6a2b-ff58-5ab1cd49c436.png)

[プレビュー]します。欠損値が最頻値に置き換わりました。
![スクリーンショット 2022-07-06 14.43.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7d1f3c07-6388-8cd3-8fc3-8f3903cede47.png)

#### 注意点

dの処理で欠損値が最多のレコード数になる可能性がある場合には、それを排除する処理が必要です。

## 4.参考情報

#### [データ検査]ノードの解説記事

https://www.ibm.com/blogs/solutions/jp-ja/spssmodeler-push-node-3/

https://qiita.com/416nishimaki/items/27fc3b6a2e596726877c


#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/private/4bf813e6cba84b2a1008