nishimoto
初のコンペお疲れ様でした。
今回のデータで(私は解析には活かせませんでしたが)リークのようなものがあったので、共有します。
import pandas as pd from tqdm import tqdm_notebook as tqdm from sklearn.metrics import accuracy_score df_train = pd.read_csv("train_data.csv") df_test = pd.read_csv("test_data.csv") df_train.drop("y", axis=1, inplace=True) df_train.rename(columns={"id": "ID"}, inplace=True) df = pd.concat([df_train, df_test]) df = df.reset_index() query_str1 = "X1 == @X1 and X2 == @X2 and X3== @X3 and X4 == @X4 and X5 == @X5" query_str2 = "X6 == @X7 and X7 == @X8 and X8 == @X9 and X9 == @X10 and X10 == @X11" query_str3 = "X12 == @X13 and X13 == @X14 and X14 == @X15 and X15 == @X16 and X16 == @X17" query_str4 = "X18 == @X19 and X19 == @X20 and X20 == @X21 and X21 == @X22 and X22 == @X23" leak_id = [] leak_val = [] for ind in tqdm(df.index): X1 = df.loc[ind, "X1"] X2 = df.loc[ind, "X2"] X3 = df.loc[ind, "X3"] X4 = df.loc[ind, "X4"] X5 = df.loc[ind, "X5"] X6 = df.loc[ind, "X6"] X7 = df.loc[ind, "X7"] X8 = df.loc[ind, "X8"] X9 = df.loc[ind, "X9"] X10 = df.loc[ind, "X10"] X11 = df.loc[ind, "X11"] X12 = df.loc[ind, "X12"] X13 = df.loc[ind, "X13"] X14 = df.loc[ind, "X14"] X15 = df.loc[ind, "X15"] X16 = df.loc[ind, "X16"] X17 = df.loc[ind, "X17"] X18 = df.loc[ind, "X18"] X19 = df.loc[ind, "X19"] X20 = df.loc[ind, "X20"] X21 = df.loc[ind, "X21"] X22 = df.loc[ind, "X22"] X23 = df.loc[ind, "X23"] # 新規顧客, ほぼ新規顧客は飛ばす if X6+X7+X8+X9+X10+X11 == -12 and X12+X13+X14+X15+X16+X17+X18+X19+X20+X21+X22+X23 == 0: continue if X6+X7+X8+X9+X10+X11 == -9 and X12+X13+X14+X15+X16+X17+X18+X19+X20+X21+X22+X23 == 0: continue queried1 = df.query(query_str1) if len(queried1) == 0: continue queried2 = queried1.query(query_str2) if len(queried2) == 0: continue queried3 = queried2.query(query_str3) if len(queried3) == 0: continue queried4 = queried3.query(query_str4) if len(queried4) != 1: continue if ind != queried4.index[0]: leak_id.append(queried4.index[0]) leak_id.append(ind)
df.loc[leak_id, :]
2134 rows × 25 columns
古いデータ → 新しいデータという順で並べています。
そうでもないデータも混じっていますが、ID: 12295とID: 13486 などはleak風ですね。
(ほぼ同じデータが1コズレで並んでいる)
また、新しいデータの方がIDが大きいことが多いので、おそらくデータは時系列順に並んでいると思われます。
ちなみに、僕は普通に文字列検索でこのリークを見つけました。
違うIDを振られていたけど 同一顧客のデータが含まれていたということでしょうか。
今更の返答ですが、そういうことと思われます。