キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
ポッドキャスト 「シバタアキラのcafeでAIたい」配信中

EDAや可視化のあれこれ

リニアアクチュエータ

クイズ#2 での @Miogawa さんの投稿を見て、思いつきました!

探索的データ解析(EDA)や可視化でのTips。何かあれば共有したいです。

0 件の賞賛
6件の返信6
リニアアクチュエータ

@Miogawa さんに、こちら でDeepdive頂いた箱ひげですが、

  • 外れ値や四分位値(中央値や25,75%)を見るのには便利ですよね。
  • 一方で、ちょっとした弱点もあると思っています。

そこで、本日はSwarmplotというものをご紹介してみたいと思います。
可視化によく使うライブラリであるseabornでプロット可能な図です。

例えば、kaggleのtitanicで、「乗船した港」ごとに「乗客の年齢」の分布を見たい場合には、
箱ひげだとこんな感じです。

image.png一応、

  • どの港から乗ったとしても、年齢の中央値は25~30歳くらい
  • 中央値や第1、3分位値にも大きく差はない。(Queenstownがちょっと若め?)
  • Southamptonから乗った乗客に、外れ値(高齢の方のデータ)が目立つ

程度は読み取れるんですが、実を言うと、乗客の数が全然違うんです。


Southampton > Cherbourg > Queenstown

 

これが、箱ひげでなくSwarmplotを使うと

  • データ数の違いも分かる
  • データの分布もわかりやすい(どこらへんが密、どこらへんが疎)
  • 箱ひげの見方がわからない人にも見せやすい

といった理由で、Swarmplotが結構好きです。

image.png

データサイエンティスト
データサイエンティスト

このスレッドいいですね! @ShinichiroOhno さん

Swarmplot初めて知りました。

箱ひげ図は説明の時にテキストで伝えられる、プロットコストが軽量というのがメリットでしたが、時代によるネットワーク帯域の拡大とかでそのままイメージでやりとりできるので、こういうプロットもすばらしいと感じました。

プロダクト実装だとSwarmplotは点の座標の数を大量に処理して特徴量が多いとパンクしそうなので、また別タイプのviolin plotを実装では使用するというのが落とし所になるかもしれないですね。

Violin_plot.gif

今は2nd Editionもあるようですが、インフォグラフィック的なビジュアライズに関してたくさん取り上げられているのでData Visualisation: A Handbook for Data Driven Designも面白いです。

リニアアクチュエータ

@Miogawa 
ありがとうございます!
おっしゃるとおり、確かに、Swarmplotはデータ数との戦いなんですよね。
(プロットコストが高いです。)

seabornのviolin_plot もたまに使います。
hueで、targetごとに表示も出来たりして便利です。

seaborn-violinplot-4.png

書籍は紹介ありがとうございます。
後ほどぜひ、確認してみたいと思います!

青色LED

Swarmplotに似たものに、sinaplotと呼ばれるものがあります。
ベースはstrip plotですが、密度分布に従うようにX軸方向ジッターが調整されています。
これもSwarmplotと同じで分布、データ数両方が分かるので気に入っています。(プロットコストの高さも一緒ですね)

sinaplot.png

Rだと `ggforce::geom_sina()` で使えますがPythonだとあまり使われてなさそうですね。
一応、実装はGitHubで公開されていました。
https://github.com/mparker2/seaborn_sinaplot

リニアアクチュエータ

@kmorihiro 

ありがとうございます!

sinaplotは知りませんでした(勉強になりました。)

確かに、swamplotでは、Southamptonの左右が潰れてしまっているのですが、

> 密度分布に従うようにX軸方向ジッターが調整されています。

のおかげで見やすいですね!

0 件の賞賛
リニアアクチュエータ

そういえば、このスレッドで議論させて頂いた「箱ひげ」での可視化に関し、
私見ではありますが、少し情報を加えて、下記でQiita記事にさせていただきました。

ご興味ある方は、ご覧いただければ嬉しいです。

「箱ひげ図」に「ひと味」加えて可視化する(boxen / swarm / violin) @ Qiita