<実践>HomeCredit作業記録(4) - FeatureEngineeringのためのツール作成
Kaggle挑戦中です!
債務不履行になる人を予想するタスクです。
Home Credit Default Risk | Kaggle
やったこと
FeatureEngineeringのつづき
- 可視化ツールの作成
- 特徴量の作成
可視化ツールの作成
def visualize_bar(df, target_name="TARGET", output_path=None): """ 分析対象のcolumnとTARGETの関係を棒グラフにする :param df: columns=[分析対象column, TARGET] :return: """ column = list(df.drop([target_name], axis=1).columns) df_count = df.groupby(column).count().sort_index() print("columns_unique_num:{}".format(len(df_count.values))) if len(df_count.values) > 200: print("columns is too big to output bar") return yticks = [] for index, count in zip(df_count.index, df_count.values): tmp = "{} (N={})".format(index, count[0]) yticks.append(tmp) plt.figure(figsize=(8, len(df_count)*0.6)) sns.barplot(x=target_name, y=column[0], data=df, orient="h") plt.axvline(df[target_name].mean(), ls=":", label="all_mean") for i in range(len(df_count.values)): plt.text(0, i, "N={}".format(df_count.values[i])) plt.legend() plt.savefig(output_path) plt.close()
このツールを作ったことで、自分が作った特徴量の評価がしやすくなりました。
特徴量の作成
データから、「顧客IDごとの、現在返済中借金の件数」という特徴量を作りました。
棒グラフがカラフルなのはデフォルト設定で、僕のセンスじゃないです。
現在返済中借金の件数が多いほど、債務不履行になる確率が高くなるのがわかります!
以下は学習器が出力する「分類に使った大事な特徴ランキング」なのですが、僕が作った項目(*ACTIVE_COUNT)が上位にランクインしています。(全部で200項目くらいあるうちの30位)
まとめ
- 特徴量作成が捗るツールを作った。
- いい特徴量が1個つくれた。
こんな感じで、全体データを眺めては特徴量を作成する、というのをしばらくはもくもくと続けることになりそうです。