散布図行列で多次元を俯瞰する

入門

6.4.2

散布図行列で多次元を俯瞰する

最終更新 2020-02-12 読了時間 1 分
まとめ
  • 散布図行列で多次元データの全ペアの関係と分布を一覧する。
  • sns.pairplot でクラス別に色分けし、分離度や外れ値を同時に確認する。
  • 分類モデル構築前の探索的データ分析で特徴量の有用性を見極めるのに使う。

seaborn.pairplot を使うと、特徴量の組み合わせごとの散布図と対角の分布をまとめて描画できます。クラス別に色分けすると、分類の分離度も同時に把握できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")

g = sns.pairplot(
    iris,
    vars=["sepal_length", "sepal_width", "petal_length", "petal_width"],
    hue="species",
    plot_kws={"alpha": 0.8, "s": 50},
    diag_kind="hist",
    corner=True,
)
g.fig.suptitle("Iris データの散布図行列", y=1.02)

plt.show()

クラス別に色分けすると、分類の分離度も同時に把握できますの図

使いどころ #

  • 分類タスクでクラスタが綺麗に分かれているかを事前に確認する。
  • モデル化前に外れ値や非線形な関係がないかチェックする。
  • corner=True にすると上三角のダブりを省けるため、大きな特徴量数でも見やすい。

いつ使うか #

  • 適している場面: 多次元データの全変数ペアの関係を一覧で把握したいとき。非線形な関係も視覚的に発見できます。
  • 不向きな場面: 変数が10個を超えるとプロットが膨大になり、個々のセルが小さくて読めなくなります。
  • 代替手段: 変数が多い場合は相関ヒートマップで全体像を確認し、注目ペアだけ散布図で深掘りする方法が効率的です。

よくある失敗パターン #

  • 変数が多すぎて個々のセルが小さい: 10 変数以上だと 100 個以上のセルになり、各セルが小さすぎて判読できません。事前に相関ヒートマップで絞り込んでください。
  • 対角要素の活用不足: 対角にヒストグラムや KDE を配置しないと各変数の分布情報が抜け落ちます。対角に分布プロットを入れましょう。