EnsekiTT Blog

EnsekiTTが書くブログです。

カテゴリデータがあってもpandasのscatter_matrixで表示するといいよって話

つまりなにしたの?

pandas.plotting.scatter_matrixを使うと散布図行列が作れるけど、カテゴリデータも含めて表示したほうがいいなって思って紹介した。
f:id:ensekitt:20180612232203j:plain

scatter_matrixってなに?

各データ間でどんな相関があるかをざっくり見るために使う図
f:id:ensekitt:20180612225755p:plain:w300

対角要素は各データのヒストグラムが出てくれる。
カテゴリ値のない定量的データに使うことが多かったし、定性的データは箱ひげ図だろ?って思ってた。
ただ、うっかりカテゴリデータも入れてもこれはこれで普通に使いやすい。

カテゴリデータとは?

定性的データなどとも呼ばれていて、
種類を表す時に使う名義尺度や、ランキングのときの順位にあたる順序尺度などのこと。
単にカテゴリデータというと名義尺度を表すこともあって、その場合に順序尺度は順序カテゴリデータと呼ばれたりする。

  • 名義尺度

血液型とか、スポーツの分類とかに対して整理番号として数値を割り当てたもの。
名義尺度の数値が同じなら同じ分類に属するって解釈できる。

  • 順序尺度

徒競走の順位とかに対して実際のタイムとかとは関係なく順序のみの数値を割り当てたもの。
競技Aの金メダルと競技Bの金メダルは順序尺度では同じ数値に属するって解釈できる。

やってみる

いつもおなじみのあやめのデータセットを使った。
カテゴリ値はあやめの種類として追加

%matplotlib inline

import pandas as pd
import numpy as np
from sklearn import datasets
import matplotlib.pyplot as plt

iris = datasets.load_iris()

df = pd.DataFrame(iris.data,columns=iris.feature_names)
df['target'] = iris.target_names[iris.target]
df['target_num'] = iris.target #数値データとしてそのまま追加

# 数値データの部分だけプロットしてくれる
pd.plotting.scatter_matrix(df, alpha=0.8, figsize=(12,12), range_padding=0.5)

f:id:ensekitt:20180612231559p:plain:w500
カテゴリと数値の関係がなんとなく見えてきて精神衛生上良い感じがするし
大まかな分岐が考えられそうな感じもする。

やってみてどうだった?

ホントは片側カテゴリ値を含むところだけ箱ひげ図にしたいけど、
文字通りscatter_matrixではscatterが表示されるのでできない。
別途作ってみるのが良さそう。

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。