はじめに
こんにちは。
zaicobanというサービスのプロダクトオーナー&データ分析を担当している、なかしです。
突然ですが、この猫ネットで見たことありませんか。
可愛いですよね。
のびーるたんとか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()
私 :「とりまペロッとできましたー」
上司:「お。でも見にくいからなんかいい感じにして。」
「なんか、こう丸くするとかさー。後2時間位で資料として使いたいからよろしく。」
私 :「ふぁー」
超困りました。
クラスタリングの結果って、横に長いと見づらいというのはたしかにそのとおりです。
作るべきイメージはわかるのですが、ライブラリの中にそんなもの無さそうだし、
ググってもなんかちょっと方向の違うものしか出ないし。。。
どうすんだこれ。。。
焦って色々ググりまくっても、サクッとできる方法が見つからず、
ただただ時間がなくなっていき。。。
そのとき、ふと脳裏をよぎる去年のアドベントカレンダー(@yami_butaさん)。
https://qiita.com/yami_buta/items/fafb8c3dfb8057266ee5
去年のアドベントカレンダーの中でも、個人的最優秀賞の記事です。
その時は、ただただ超ウケる!っておもっていただけだったのですが、
ふと、
「クラスタリングも横に長いんだから、もしかしたら「回る長い猫」なのでは。。。?」
という天啓が。
おそるおそるやってみると。。。
convert ~/Downloads/result_sonomama.png -flatten -rotate -180 -distort arc 360 ~/Downloads/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()
きたああああ
しかもクラスタリングが回せる!すごい!!意味ない!!!超ウケる!!!
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"
上司:「longcat神じゃん」
クラスタリング結果をパワポの中に貼ることができて、
資料もいい感じになり、なんとか事なきを得ました。
いまでは、クラスタリングの結果を出すことをlongcatするってよんでます。
もうlongcatと@yami_butaさんには足を向けて眠れません。
ありがとうlongcat、ありがとうyami_butaさん
悲しいことに、今年の9月にlongcat(本名シロさん)亡くなってしまったとのことです。
そのにょ~んと伸びる長さと、ただただ回る勇姿にたすけられました、ありがとう。。。
(全ては@yami_butaさんのおかげですありがとうございます)
皆さんもデータ分析のアウトプットで困ったらlongcatしてみてください。
まあ、よく考えたらopencvでいい説はある。