【Python】散布図行列でデータを可視化する

今回は、散布図行列について見ていこうと思います。

今記事では、以下の内容について触れていきます。

  • 散布図行列とは
  • 散布図行列の読み方
  • Pythonでの散布図行列の書き方

散布図行列とは

散布図行列は、複数の変数をまとめて可視化する際に用います。全ての2変数同士の組み合わせで散布図を作成し、それを行列にまとめます

同一変数の組み合わせの場合は、その変数のヒストグラムを描画します。

散布図行列の例

この図によって、データセット内の複数の変数の相関関係をまとめて把握することができます。

つまり、データセットの全体像を一気に把握することができるのです。

散布図行列の特徴として、同じ散布図が2つ描かれます。例えば、右上の散布図と左下の散布図は、向きこそ違いますが同じ散布図です。

なので、一見情報量が多そうに見えますが、ヒストグラムから上側だけまたは、下側だけを見ることで、全体の内容を把握することができます。

1つ1つの散布図を見ていき、相関のありそうなものを探す

散布図行列を描いたあとは、どの変数間に相関関係がありそうかを1つ1つ見ていきます。

上の図の場合、縦や横一直線に点が並ぶような散布図は、相関性があるとは言えないので無視できます。

このようにある程度使えそうな変数をピックアップし、さらに分析を進めていきたい場合などに非常に便利な図だと思います。

Pythonで散布図行列を描く

実際に散布図行列を描いていきます。

使用するデータ

今回は、ボストンの住宅価格データセットの一部を使います。

import pandas as pd
from sklearn.datasets import load_boston


data = load_boston()
name = pd.DataFrame(data.target).rename(columns={0:"name"})
df = pd.DataFrame(data.data, columns=data.feature_names).merge(name, left_index=True, right_index=True)

df = pd.DataFrame(data.data, columns=data.feature_names)

df = df.iloc[:, :5]
dfの中身

グラフを描く

Pythonで散布図行列を描くときは、seabornを使います。

import seaborn as sns

sns.pairplot(df)
散布図行列

たったこれだけで、簡単に散布図行列を描画することができます。

カテゴリごとに色分け

カテゴリデータがある場合は、その列を指定することで、カテゴリごとに分類してプロットすることができます。

カテゴリデータとなる列は、hue= で指定します。

sns.pairplot(df, hue="CHAS")
カテゴリに分類して散布図行列を描画

例では、カテゴリとなるデータに”CHAS”列を指定しています。

結果では、青と橙のプロットに分かれているのがわかります。

hue=を用いてカテゴリ分類すると、デフォルトの設定でヒストグラムがカーネル密度推定になるようです。

ヒストグラムのままにしたい場合は、以下のようにします。

sns.pairplot(df, hue='CHAS', <span class="red">diag_kind="hist"</span>)
カテゴリ分類でヒストグラムを表示する

Pythonでデータサイエンスするなら

Pythonでデータサイエンスをするなら、以下の書籍がおすすめです。Pandas、matplotlib、Numpy、scikit-learnといったデータサイエンスに必要なライブラリを、体系立てて一通り学ぶことができます。

ややお値段高めですが、これ1冊で十分という内容・ボリュームなので、損はしないと思います^^

まとめ

散布図行列とは?ということから、Pythonでの描き方までを紹介しました。

変数間の相関を調べたい場合に、一気にまとめて描画できるのが何よりの利点です。

いちいち散布図を描かなくていいので手間が省けます。

また、カテゴライズして描画することもできるので、使い方次第でデータセットの特徴を把握するのに非常に役立つのではないでしょうか^^

是非読み方を理解して、使ってみてください!

ではでは👋