Kaggleを始めて、気づけば4年目になりました
一番熱量があったのは、たぶん2年目くらいです
当時は「Kaggleで転職したい」という気持ちが本当に強くて、「最短でGrandmasterを取るには」をずっと考えていました
「最短で」を目標にしていたので、NotebookやDataset、Discussionを毎日のように投稿して、Login Streakも500日超え
休みの日でもPCを持ち歩かないと落ち着かないくらい、ずっとKaggle中心の生活でした
でも最近は、正直かなり怠けています
東京から地方に引っ越して環境が大きく変わり、好きだったコワーキングもほとんどない
もともと家で集中できないタイプなので、気づけばKaggleも「人のコンペを回して終わり」の日が増えていました
「やらなきゃ」と思うほど、逆に開かなくなる
完全に負の連鎖です
仕事でもKaggleの知識を活かせる場面はほとんどなく、なんとなく毎日をこなしている感覚があります
だからなのか、最近ずっと思っています
「Kaggleの話で普通に盛り上がれる環境で働きたいな」って
もう一度Kaggleを楽しいと思いたくて、過去にNotebookが爆伸びしたグラフを紹介しようと思います
1 Clustermap
Heatmapでよくない?って思ったけど、まとまりが見えるこの形も結構いいなと思った
・Heatmapは、どれとどれが関係あるかをそのまま見るもの
・clustermapは、似ているもの同士をまとめて「グループ」として見るもの
点で見るか、塊で見るかの違いみたいな感じ
参考コード
import numpy as np
import pandas as pd
import seaborn as sns
np.random.seed(0)
n = 200
# グループA(収入系)
income = np.random.normal(500, 50, n)
spend_a = income * 0.8 + np.random.normal(0, 10, n)
spend_b = income * 0.6 + np.random.normal(0, 15, n)
# グループB(購買行動系)
clicks = np.random.normal(100, 20, n)
views = clicks * 1.5 + np.random.normal(0, 10, n)
time_spent = clicks * 2 + np.random.normal(0, 20, n)
# ノイズ系(意味が弱い)
noise1 = np.random.normal(0, 1, n)
noise2 = np.random.normal(10, 5, n)
df = pd.DataFrame({
"income": income,
"spend_a": spend_a,
"spend_b": spend_b,
"clicks": clicks,
"views": views,
"time_spent": time_spent,
"noise1": noise1,
"noise2": noise2
})
# 相関を見る時
corr = df.corr()
# Clustermap
sns.clustermap(corr, cmap="cividis", figsize=(4,4))
2 Folium.Map
台湾の地震の強さと深さを地図上に色分けして可視化したときに使いました
・folium.Mapはクリックで情報を見たりズームできて、静的な地図よりも「データを触りながら見れる」感じがすごくいい
・matplotlib + scatterは全体の分布を一枚でじっくり眺める用途に向いていて、俯瞰して構造を把握しやすい
動きがあるかないかというより、「細かく触るか」「全体を一気に見るか」みたいな違いだと思う
3 Describe
describe()は特徴量の基本的な統計を一気に確認できる
・色をつけることで、数値の違いが一瞬で分かるようになる
・普通のdf.head()だとぱっと見ではどの特徴量が大きいか分かりづらい
数値を“読む”というより“見て理解する”感じに変わる
参考コード
import numpy as np
import pandas as pd
np.random.seed(42)
n = 200
df = pd.DataFrame({
"income": np.random.normal(500, 50, n),
"spend": np.random.normal(300, 80, n),
"clicks": np.random.normal(100, 20, n),
"views": np.random.normal(500, 150, n),
"time_spent": np.random.exponential(50, n),
"noise": np.random.normal(0, 1, n)
})
# ダミー目的変数
df["target"] = (df["income"] + df["clicks"] * 2 + np.random.normal(0, 30, n))
df.iloc[:, :-1].describe().T.sort_values(by="std", ascending=False)\
.style.background_gradient(cmap="Greens")\
.bar(subset=["max"], color="#F8766D")\
.bar(subset=["mean"], color="#00BFC4")
やっぱりたのしい
Kaggleも流行りがあるので、最近どんなNotebookが伸びてるのかもっと研究していきたい
ちゃんと流れ追いながら、絶対Grandmaster取ります![]()
ーーーーーーーーーーーーー
①
https://www.kaggle.com/code/risakashiwabara/rethinking-heatmaps?scriptVersionId=294105947
②
https://www.kaggle.com/code/risakashiwabara/beginner-world-map-plot
ーーーーーーーーーーーー




