機械学習: データの欠損を見える化する

こんにちは。Arkです。

今回はKaggleのチュートリアルの一つであるHouse Pricesのデータの欠損についてみてみました。欠損データを見える化する方法があってびっくりしました。初心者なりの驚きを提供できればと思います。

 

データの欠損って機械学習を行う上で必ず必要になってくるそうですね。確かに、集めたデータが完全なものであるのは体感的にあり得ない気がします。そこで今回は、欠損データを見える化する方法を書きます。

 

missingnoというモジュールは知っていますか?これが見える化を一瞬で行ってくれます。以下、
①一般的な欠損値を調べる方法
②missingnoを使った方法
の二本立てで書きます。


- 一般的な欠損値を調べる方法

まずはデータを読み込んで欠損が一つ以上あるデータを表示します。
データの読み込み方が分からない方はこちらを見てください。

import numpy as np
import pandas as pd
train = pd.read_csv('C:/Users/owner/Kaggle/HousePrice/train.csv')
print(train.isnull().sum()[train.isnull().sum()>0].sort_values())

三行目ではファイルを読み込み、四行目ではisnull().sum()というオプションを使って欠損データの個数を調べたのち、
欠損データ数が0個こより大きいものを抽出し、sortしています。

するとこうなります。

f:id:Ark11111:20200429232932p:plain
normal
これが、一般的な方法です(主観)


- missingnoを使った方法

これは、すごいです。

import numpy as np
import pandas as pd
import missingno as msno
train = pd.read_csv('C:/Users/owner/Kaggle/HousePrice/train.csv')

msno.matrix(df=train, figsize=(20,5), color=(0.5,0,0), labels=True)

七行目ではいろんな変数が入っていると思いますが、ここはmsno.matrix(train)だけでも大丈夫です。
色を付けて見やすくしているだけです。

f:id:Ark11111:20200429235807p:plain
missingno
するとこうなります。(上二行は無視してください><)

この白くなっている部分が欠損データの場所です。とても視覚的でわかりやすいですよね~~
ただしこれには欠点があり、ラベル数が増えると全部は表示されなくなるんですよね。加えてラベルがとても読みにくくなります。
欠損データの多い順にソートして表示する方法をご存知の上級者の方がいれば教えてください(o*。_。)oペコッ

今回はこんな感じです。ありがとうございました。