Icon0

z退会したユーザー


folder_special 0

X6 ~ X11 の値の書き換え

X6 ~ X11 とは

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 に向上しました。

偶然の結果の可能性もありますので、皆さんのモデルでスコアがどのように変化するのか知りたいです。

Icon6
nishimoto

近いことはやっており、実際にスコアはあがりました。 CVのスコアよりSubmitのスコアが上がるイメージですね。

Icon8
casablanca

「-1(全額支払い済み)」「0(リボ払い)」が同じく遅延なしの意味だが、「支払いなし」は簡単に遅延なしとは言えませんね。 ラベル別でそれぞれのデータの割合を見れば分かります。

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