snackとbento(およびmen)の相関みてみたけど残念だった話

snackとbento(およびmen)の相関が-1に近いので、どちらかの予想値出して特徴量にすれば良い結果が出るのでは、と思ったけど残念だった話。雑談です。

まず、各商品の相関を取ってみました。季節性が大きい商品があるので3-5月のデータに限ってヒートマップを作ってみると……

import seaborn as sns
months = [str(i) for i in range(3,6)]
train_within_months = train_raw_df[train_raw_df["date"].str[:1].isin(months)]
train_within_months = train_within_months.drop(columns=["id", "date", "highest", "lowest", "rain"])
df_corr = train_within_months.corr()
sns.heatmap(df_corr, vmax=1, vmin=-1, center=0)
085fdf60-f49e-4e15-b241-26b0cebfdf57.png

あんまり通年と変わんないですね(残念ポイントその1)

odenとかiceの逆相関は気温からくるものだよねーと思いつつ、右下が気になります。snackとbento(およびmen)の相関が低い。snackって何なのかわからないので、これは便利そうです。

ということで表示してみました。
c7312a43-d2cf-4bdb-baf9-c5b8b93edefe.png

んん?思ってたのと違う。

曜日をつけてみましょう。
71e38c85-f4d1-4922-a640-2b8888b0dac0.png

ただの曜日の違いでした(残念ポイントその2)。snackとbentoが違う曜日に売れるのね……。売れてる曜日は既に特徴量にいれてるので、収穫はなかったとさ。

これだーという特徴量見つからないですねぇ。

snacks = ["snack"+str(i) for i in range(1,4)]
bentos = ["bento"+str(i) for i in range(1,5)]
mens = ["men"+str(i) for i in range(1,7)]
comparing_bento = True
comparisons = bentos if comparing_bento else mens

fig = plt.figure(dpi=250)
n_col, n_row = len(snacks), len(comparisons)
cm = plt.cm.get_cmap('tab20')

df = train_raw_df.copy() #dataframe from the train csv
df["weekday"] = df.index % 7
for idx in range(n_col * n_row):
ax = fig.add_subplot(n_row, n_col, idx+1)
snack_item, compare_item = snacks[idx%len(snacks)], comparisons[idx//len(comparisons)]
ax.set_title(snack_item + " x " + compare_item, fontsize=4)
for w in range(7):
ax.scatter(df.loc[df["weekday"]==w, snack_item], df.loc[df["weekday"]==w, compare_item], marker=".", color=cm.colors[w])
plt.setp(ax.get_xticklabels(), fontsize=3)
plt.setp(ax.get_yticklabels(), fontsize=3)
plt.subplots_adjust(wspace=0.2, hspace=0.6)
plt.show()

Favicon
new user
コメントするには 新規登録 もしくは ログイン が必要です。