LoginSignup
5
0

More than 3 years have passed since last update.

longcatにデータ分析PJの危機を救ってもらった話【クラスタリングの可視化】

Last updated at Posted at 2020-12-24

はじめに

こんにちは。
zaicobanというサービスのプロダクトオーナー&データ分析を担当している、なかしです。
突然ですが、この猫ネットで見たことありませんか。
nobiru.jpg

可愛いですよね。
のびーるたんとかlongcatとか呼ばれています。
実は、今年とあるPJのデータ分析案件でこのlongcatにギリギリの窮地を救われたことがあり、
その時のノウハウを共有したいと思います。

ある日、あるPJにて

事のはじまり
上司:「300店舗を売上構成が近い店ごとで、いい感じにくくりたいんだけど」
私 :「クラスタリングですねー。樹形図的なやつがよさそうだなあ。。」

〜〜作業〜〜

from scipy.cluster.hierarchy import linkage, dendrogram
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd

# サンプル
df = pd.read_csv('longcat_sample.csv')
labels = df['id'].astype(str).values

plt.rcParams['font.family'] = 'AppleGothic'
plt.rcParams['font.family'] = 'MS Gothic'

plt.figure(figsize=(80,5))

result1 = linkage(df.iloc[:,1:5], 
                  metric = 'euclidean', 
                  method= 'average')
dendrogram(result1,labels=labels)
plt.show()

result_sonomama.png

私 :「とりまペロッとできましたー」
上司:「お。でも見にくいからなんかいい感じにして。」
   「なんか、こう丸くするとかさー。後2時間位で資料として使いたいからよろしく。」
私 :「ふぁー:innocent:

超困りました。
クラスタリングの結果って、横に長いと見づらいというのはたしかにそのとおりです。
作るべきイメージはわかるのですが、ライブラリの中にそんなもの無さそうだし、
ググってもなんかちょっと方向の違うものしか出ないし。。。
どうすんだこれ。。。

焦って色々ググりまくっても、サクッとできる方法が見つからず、
ただただ時間がなくなっていき。。。

そのとき、ふと脳裏をよぎる去年のアドベントカレンダー(@yami_butaさん)。
https://qiita.com/yami_buta/items/fafb8c3dfb8057266ee5
スクリーンショット 2020-12-21 15.42.13.png

去年のアドベントカレンダーの中でも、個人的最優秀賞の記事です。
その時は、ただただ超ウケる!っておもっていただけだったのですが、
ふと、
「クラスタリングも横に長いんだから、もしかしたら「回る長い猫」なのでは。。。?」
という天啓が。

おそるおそるやってみると。。。

convert  ~/Downloads/result_sonomama.png -flatten -rotate -180 -distort arc 360  ~/Downloads/result_sonomama_test.png

result_sonomama_test.png

あ、これきたんじゃないか。。。
線とか枠とか調整すれば。。。

matplotlib.rcParams['lines.linewidth'] = 5 
plt.figure(figsize=(80,5))
result1 = linkage(df.iloc[:,1:5], 
                  metric = 'euclidean', 
                  method= 'average')
dendrogram(result1,labels=labels,leaf_font_size=12,leaf_rotation=90,)
plt.tick_params(labelleft=False, labelright=False, labeltop=False,left=False)
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['left'].set_visible(False)
plt.gca().spines['top'].set_visible(False)
plt.gca().xaxis.set_ticks_position('bottom')
plt.show()

result_longcat.png

これを!
result_longcat_sugoi.png

きたああああ

しかもクラスタリングが回せる!すごい!!意味ない!!!超ウケる!!!

eval "convert -delay 10 ~/Downloads/result_longcat.png -flatten -rotate -180 -write mpr:a +delete `for i in {230..4485..230};do echo -n "\( mpr:a -roll -$i+0 -distort arc 360 \) ";done`yattaa.gif"

yattaa.gif

上司:「longcat神じゃん」

クラスタリング結果をパワポの中に貼ることができて、
資料もいい感じになり、なんとか事なきを得ました。

スクリーンショット 2020-12-21 17.11.12.png

いまでは、クラスタリングの結果を出すことをlongcatするってよんでます。
もうlongcatと@yami_butaさんには足を向けて眠れません。

ありがとうlongcat、ありがとうyami_butaさん

悲しいことに、今年の9月にlongcat(本名シロさん)亡くなってしまったとのことです。
そのにょ~んと伸びる長さと、ただただ回る勇姿にたすけられました、ありがとう。。。
(全ては@yami_butaさんのおかげですありがとうございます)

皆さんもデータ分析のアウトプットで困ったらlongcatしてみてください。

まあ、よく考えたらopencvでいい説はある。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0