退会したユーザー
X6 ~ X11の列は支払いがどれくらい遅れているかを表しています。
しかし、 X6 ~ X11 の値の意味 にあるように、「支払いなし」や「リボ払い」も区別して表現されています。
このために、X6列からX11列は「-2」や「-1」といった値が含まれます。
「支払いなし」も「リボ払い」も、「 遅延していない 」という点で一つにまとめられるのではないかと思いました。
そこで、以下のようなコードで「-2(支払いなし)」「-1(全額支払い済み)」「0(リボ払い)」をすべて「0」に変更しました。
import pandas as pd
# 読み込み
train = pd.read_csv('train_data.csv')
test = pd.read_csv('test_data.csv')
# 列名をリストに格納
column_names = ['X6','X7','X8','X9','X10','X11']
# リストに含まれる列を選び、0より小さいのもの(具体的には-2と-1)を0に置き換える
for column_name in column_names:
train.loc[train[column_name] < 0, column_name] = 0
test.loc[train[column_name] < 0, column_name] = 0
私が用いたモデルでは、書き換える前のスコア(コンペに提出したもの)が 0.824
だったのに対し、書き換えた後は 0.829
に向上しました。
偶然の結果の可能性もありますので、皆さんのモデルでスコアがどのように変化するのか知りたいです。
nishimoto
近いことはやっており、実際にスコアはあがりました。 CVのスコアよりSubmitのスコアが上がるイメージですね。
casablanca
「-1(全額支払い済み)」「0(リボ払い)」が同じく遅延なしの意味だが、「支払いなし」は簡単に遅延なしとは言えませんね。 ラベル別でそれぞれのデータの割合を見れば分かります。