{ "cells": [ { "cell_type": "markdown", "id": "d786d91e", "metadata": {}, "source": [ "# 手动特征工程\n", "统一的特征聚合、特征选择过程" ] }, { "cell_type": "markdown", "id": "d1e74dc0", "metadata": {}, "source": [ "## 引言" ] }, { "cell_type": "markdown", "id": "9d0b9cae", "metadata": {}, "source": [ "手动特征工程是繁琐的,通常依赖领域知识。\n", "我们尽可能注入更多特征, 由模型识别。\n", "我们会也会使用一些自动化特征工具,\n", "会使用pca等降维" ] }, { "cell_type": "markdown", "id": "bcfb334c", "metadata": {}, "source": [ "在第一个notebook中,使用了application数据集构建,为了提高分数,引入更多数据特征。\n", "\n", "在这个notebook中,我们描述了**特征聚合和特征选择的统一处理**过程,这不涉及什么领域知识。" ] }, { "cell_type": "markdown", "id": "9384f0d2", "metadata": {}, "source": [ "会大量使用pandas操作\n", "- groupby\n", "- agg 对分组计算\n", "- merge 汇总\n", "- rename 列\n", "- " ] }, { "cell_type": "markdown", "id": "d6d73ac7", "metadata": {}, "source": [ "会涉及到很多特征阶段。我们必须进行一些存储。 我们通过feather命名区分:\n", "命名规则:`[阶段]_[来源表]_[处理程度]`\n", "- `01_app_train_raw.feather` : 01原始, 主表,; 仅做了onehot类型编\n", "- `02_prev_app_agg.feather`: 02子表聚合, ; agg特征\n", "- `03_bureau_cleaned.feather`: 03子表 : 特征选择剔除:missing、高corr\n", "- `\t04_merged_v1.feather` : 04 合并子表:\n", "- `04_main_bureau_prev_combined.feather` " ] }, { "cell_type": "markdown", "id": "4387541a", "metadata": {}, "source": [ "此外,由于涉及大量内存复制和计算机的能力,我需要及时回收掉那些大变量" ] }, { "cell_type": "markdown", "id": "807928dd", "metadata": {}, "source": [ "在第一部分中,通过引入*bureau*, *bureau_balance*表,我们详细阐述了统一的特征处理\n", "- 增加特征:聚合ID、分类、数字特征,多层聚合\n", "- 去掉特征:高missing、高相关的特征。\n", " \n", "在处理完成后,我们会与*application_train/test*主表merge,保存特征方便后续使用\n" ] }, { "cell_type": "markdown", "id": "c48c1ce0", "metadata": {}, "source": [ "在第二部分中,引入剩余的4个表,我们为这个统一的特征处理过程设置了`agg_numeric`,`agg_categorical`,`get_high_corr_columns`,`get_high_missing_columns`,`feature_select` 等函数,这加快了处理速度" ] }, { "cell_type": "markdown", "id": "49e75766", "metadata": {}, "source": [ "在完成所有表特征处理后,我们将他们合起来。进行model,看看新特征的效果。确实,很多新特征变成重要的分类特征,这也使得分数提升了" ] }, { "cell_type": "markdown", "id": "17b52244", "metadata": {}, "source": [ "## 导入包" ] }, { "cell_type": "code", "execution_count": 1, "id": "cdebff12", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import gc" ] }, { "cell_type": "code", "execution_count": 2, "id": "a1f8fad5", "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "code", "execution_count": 3, "id": "7d0660d1", "metadata": {}, "outputs": [], "source": [ "plt.style.use('fivethirtyeight')" ] }, { "cell_type": "markdown", "id": "8c40696f", "metadata": {}, "source": [ "## 第一部分 " ] }, { "cell_type": "markdown", "id": "2323bec6", "metadata": {}, "source": [ "第一部分主要做两件事:\n", "- 引入bureau和bureau_balance特征,描述用户之前在homecredit贷款情况\n", "- 描述了手动特征的一般工程\n", " - 分类特征:\n", " - id特征: count计数\n", " - 数值统计特征: " ] }, { "cell_type": "markdown", "id": "1d60cef9", "metadata": {}, "source": [ "### bureau\n", "- 产出 bureau_agg" ] }, { "cell_type": "code", "execution_count": 4, "id": "04fc5157", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(307511, 243) (48744, 242)\n" ] } ], "source": [ "train = pd.read_feather('checkpoints/01_train_app_base.feather')\n", "test = pd.read_feather('checkpoints/01_test_app_base.feather')\n", "print(train.shape, test.shape)" ] }, { "cell_type": "code", "execution_count": 5, "id": "13fa4132", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1716428, 17)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau = pd.read_csv('data/bureau.csv')\n", "bureau.shape\n" ] }, { "cell_type": "markdown", "id": "245ebe1f", "metadata": {}, "source": [ "#### SK_ID_BUREAU计数\n", "- 产生了`bureau_previous_loan_counts`特征集" ] }, { "cell_type": "code", "execution_count": 6, "id": "e80eadc8", "metadata": {}, "outputs": [], "source": [ "bureau_previous_loan_counts = bureau.groupby(by='SK_ID_CURR', as_index= False)['SK_ID_BUREAU'].count().rename(columns = {\n", " 'SK_ID_BUREAU': 'bureau_previous_loan_counts'\n", "})" ] }, { "cell_type": "code", "execution_count": 7, "id": "1151dfe0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRbureau_previous_loan_counts
17942120860116
5991116970494
18725931806578
13032725164361
27940542539660
.........
191000251
491000611
391000481
1854473159451
3058094562541
\n", "

305811 rows × 2 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR bureau_previous_loan_counts\n", "17942 120860 116\n", "59911 169704 94\n", "187259 318065 78\n", "130327 251643 61\n", "279405 425396 60\n", "... ... ...\n", "19 100025 1\n", "49 100061 1\n", "39 100048 1\n", "185447 315945 1\n", "305809 456254 1\n", "\n", "[305811 rows x 2 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_previous_loan_counts.sort_values(by='bureau_previous_loan_counts', ascending=False)" ] }, { "cell_type": "code", "execution_count": 8, "id": "2877f60b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(305811, 2)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_previous_loan_counts.shape" ] }, { "cell_type": "markdown", "id": "407ba219", "metadata": {}, "source": [ "Assessing Usefulness of New Variable with r value" ] }, { "cell_type": "code", "execution_count": 9, "id": "9956e5fc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRTARGET
01000021
11000030
21000040
31000060
41000070
.........
3075064562510
3075074562520
3075084562530
3075094562541
3075104562550
\n", "

307511 rows × 2 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET\n", "0 100002 1\n", "1 100003 0\n", "2 100004 0\n", "3 100006 0\n", "4 100007 0\n", "... ... ...\n", "307506 456251 0\n", "307507 456252 0\n", "307508 456253 0\n", "307509 456254 1\n", "307510 456255 0\n", "\n", "[307511 rows x 2 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train[['SK_ID_CURR','TARGET']]" ] }, { "cell_type": "code", "execution_count": 10, "id": "0bf30a42", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRTARGETbureau_previous_loan_counts
010000218.0
110000304.0
210000402.0
310000600.0
410000701.0
............
30750645625100.0
30750745625200.0
30750845625304.0
30750945625411.0
307510456255011.0
\n", "

307511 rows × 3 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET bureau_previous_loan_counts\n", "0 100002 1 8.0\n", "1 100003 0 4.0\n", "2 100004 0 2.0\n", "3 100006 0 0.0\n", "4 100007 0 1.0\n", "... ... ... ...\n", "307506 456251 0 0.0\n", "307507 456252 0 0.0\n", "307508 456253 0 4.0\n", "307509 456254 1 1.0\n", "307510 456255 0 11.0\n", "\n", "[307511 rows x 3 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_previous_loan_counts_plot = pd.merge(train[['SK_ID_CURR','TARGET']], bureau_previous_loan_counts, on='SK_ID_CURR', how='left')\n", "bureau_previous_loan_counts_plot = bureau_previous_loan_counts_plot.fillna(0)\n", "bureau_previous_loan_counts_plot" ] }, { "cell_type": "code", "execution_count": 11, "id": "5e213e1b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'bureau_previous_loan_counts distribution')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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ldGjR0tpaanMnj3b53pgsQT33nuv2AwWPlhDmzZtKm+88YYUFRV5fA4tEG+66SblIr/zzjslLlEljDx3ZXqs927lqlIrrdznYntLWNKIEEIISTZiLUN8Aosl6NGjh8d7Z511lnpesWKF13UUFxfLN998Iy1btlQxnUYgOM8880wpLCyU1atXe3z2ueeeU+t/+umnJTc3V+K3hJFnDldmjN3loHblLJ/LUGQSQgghyUfcZ5evX79ePTdv3tzjPVgXK1euLH/88YfXdcASipjMZs2amb6vX8d3de7cucJ3P/DAAzJs2DA59dRTg/4NELmRJKusTOzZnvcLaXIk1hHW3lhRrWqeiHePuew8WCLFVRMjLlOPZSzHNNngmHJMEwHOU45pMs7VnAjnmcS9yDxw4IhCyc/PN32/SpUqrmV8rQMudjP0uo3rgShFchCE7D333COhsG3bNrHb7RIpWh4ulLIqnjGZzvIjEwxJUrEiIzfLp8hcv323bHZGbnwiQSzHNFnhmHJMEwHOU45psszV9PR0S+NbyojMWDF58mT5+uuv5d1335VKlSqFtC6UXIok2ZkZUmbz3JWVsuGqLlFCOSvLt9s6EjQpLxbZWeh9ocrVpVGjOA1FcAN3hjhwYzmmyQbHlGOaCHCeckwThdI4uk7Fvcg0szIaOXjwoKpd6c869u/f75e19Pfff1eljq699lo5/fTTJVQibY5OczpNE38y/+4riUkWq9JLDdSQeheZB+1pcVkayhuxHNNkhWPKMU0EOE85polCVhxcp+I+8UfHYurYTCNQ6ocOHfJp7kX2OEogWcVu6tf1d61du1YVbn/hhReUgDU+Nm/erN7T/y8oKJCYYy83L2EU+7wfqZnje4ox8YcQQghJPuLektmlSxd54oknZMmSJdK/f/8K76HupV7GG8gK79ixo3J/o6amMcMcJYqWLl0qeXl50r59e/Ua3h8yZIjputBlCKWOUNgdZGdnS8xx2M2Lscewd7mmVo7ndrmzl3UyCSGEkKQj7kVm9+7dlSVy7ty5Kstb18qE6xviE+bggQMHupbfsWOHcn8jFsGY6HPllVcqkYlscVgoda3MF198URVjv+qqq1wlivAdVp2EPvnkEykrK/O701A0sKkSRvFpyaydkyZIfPdWCnNfKetkEkIIIclG3IvMjIwMlYQDK2afPn2kX79+qmzR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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.kdeplot(\n", " data= bureau_previous_loan_counts_plot,\n", " x = 'bureau_previous_loan_counts',\n", " hue = 'TARGET',\n", " common_norm = False\n", ")\n", "plt.title('bureau_previous_loan_counts distribution')\n" ] }, { "cell_type": "markdown", "id": "59c8b7ab", "metadata": {}, "source": [ "几乎是同分布的,没什么区别" ] }, { "cell_type": "code", "execution_count": 12, "id": "524c7981", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "correlations bureau_previous_loan_counts and TARGET is -0.010019715670684074\n" ] } ], "source": [ "corr = np.corrcoef(bureau_previous_loan_counts_plot['bureau_previous_loan_counts'],\n", " bureau_previous_loan_counts_plot['TARGET'])[0, 1]\n", "print(f'correlations bureau_previous_loan_counts and TARGET is {corr}')" ] }, { "cell_type": "code", "execution_count": 13, "id": "0227a61e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "182" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "del bureau_previous_loan_counts_plot\n", "gc.collect()" ] }, { "cell_type": "markdown", "id": "958637f5", "metadata": {}, "source": [ "相关性很低,没有进入之前的top5. 我们没有得到什么信息。" ] }, { "cell_type": "markdown", "id": "71659f85", "metadata": {}, "source": [ "#### Agg the numeric volumns\n", "- 我们产生了`bureau_numeric_agg` 新的特征集" ] }, { "cell_type": "code", "execution_count": 14, "id": "6dac7666", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SK_ID_CURR int64\n", "SK_ID_BUREAU int64\n", "CREDIT_ACTIVE str\n", "CREDIT_CURRENCY str\n", "DAYS_CREDIT int64\n", "CREDIT_DAY_OVERDUE int64\n", "DAYS_CREDIT_ENDDATE float64\n", "DAYS_ENDDATE_FACT float64\n", "AMT_CREDIT_MAX_OVERDUE float64\n", "CNT_CREDIT_PROLONG int64\n", "AMT_CREDIT_SUM float64\n", "AMT_CREDIT_SUM_DEBT float64\n", "AMT_CREDIT_SUM_LIMIT float64\n", "AMT_CREDIT_SUM_OVERDUE float64\n", "CREDIT_TYPE str\n", "DAYS_CREDIT_UPDATE int64\n", "AMT_ANNUITY float64\n", "dtype: object" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau.dtypes" ] }, { "cell_type": "code", "execution_count": 15, "id": "9892a956", "metadata": {}, "outputs": [], "source": [ "bureau_numeric = bureau.select_dtypes(exclude=['str'])" ] }, { "cell_type": "code", "execution_count": 16, "id": "4489e60d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRDAYS_CREDITCREDIT_DAY_OVERDUEDAYS_CREDIT_ENDDATE...AMT_CREDIT_SUM_OVERDUEDAYS_CREDIT_UPDATEAMT_ANNUITY
minmeanmaxsumminmeanmaxsummin...maxsumminmeanmaxsumminmeanmaxsum
0100001-1572-735.000000-49-514500.000-1329.0...0.00.0-155-93.142857-6-6520.0003545.35714310822.524817.500
1100002-1437-874.000000-103-699200.000-1072.0...0.00.0-1185-499.875000-7-39990.0000.0000000.00.000
2100003-2586-1400.750000-606-560300.000-2434.0...0.00.0-2131-816.000000-43-3264NaNNaNNaN0.000
3100004-1326-867.000000-408-173400.000-595.0...0.00.0-682-532.000000-382-1064NaNNaNNaN0.000
4100005-373-190.666667-62-57200.000-128.0...0.00.0-121-54.333333-11-1630.0001420.5000004261.54261.500
..................................................................
305806456249-2713-1667.076923-483-2167200.000-2499.0...0.00.0-2498-1064.538462-12-13839NaNNaNNaN0.000
305807456250-1002-862.000000-760-258600.000-272.0...0.00.0-127-60.333333-23-18127757.395154567.965000384147.0463703.895
305808456253-919-867.500000-713-347000.000-189.0...0.00.0-701-253.250000-5-101358369.50058369.50000058369.5175108.500
305809456254-1104-1104.000000-1104-110400.000-859.0...0.00.0-401-401.000000-401-4010.0000.0000000.00.000
305810456255-2337-1089.454545-363-1198400.000-1243.0...0.00.0-1621-531.090909-8-58420.0001081.5000003244.59733.500
\n", "

305811 rows × 49 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR DAYS_CREDIT CREDIT_DAY_OVERDUE \\\n", " min mean max sum min \n", "0 100001 -1572 -735.000000 -49 -5145 0 \n", "1 100002 -1437 -874.000000 -103 -6992 0 \n", "2 100003 -2586 -1400.750000 -606 -5603 0 \n", "3 100004 -1326 -867.000000 -408 -1734 0 \n", "4 100005 -373 -190.666667 -62 -572 0 \n", "... ... ... ... ... ... ... \n", "305806 456249 -2713 -1667.076923 -483 -21672 0 \n", "305807 456250 -1002 -862.000000 -760 -2586 0 \n", "305808 456253 -919 -867.500000 -713 -3470 0 \n", "305809 456254 -1104 -1104.000000 -1104 -1104 0 \n", "305810 456255 -2337 -1089.454545 -363 -11984 0 \n", "\n", " DAYS_CREDIT_ENDDATE ... AMT_CREDIT_SUM_OVERDUE \\\n", " mean max sum min ... max sum \n", "0 0.0 0 0 -1329.0 ... 0.0 0.0 \n", "1 0.0 0 0 -1072.0 ... 0.0 0.0 \n", "2 0.0 0 0 -2434.0 ... 0.0 0.0 \n", "3 0.0 0 0 -595.0 ... 0.0 0.0 \n", "4 0.0 0 0 -128.0 ... 0.0 0.0 \n", "... ... .. .. ... ... ... ... \n", "305806 0.0 0 0 -2499.0 ... 0.0 0.0 \n", "305807 0.0 0 0 -272.0 ... 0.0 0.0 \n", "305808 0.0 0 0 -189.0 ... 0.0 0.0 \n", "305809 0.0 0 0 -859.0 ... 0.0 0.0 \n", "305810 0.0 0 0 -1243.0 ... 0.0 0.0 \n", "\n", " DAYS_CREDIT_UPDATE AMT_ANNUITY \\\n", " min mean max sum min mean \n", "0 -155 -93.142857 -6 -652 0.000 3545.357143 \n", "1 -1185 -499.875000 -7 -3999 0.000 0.000000 \n", "2 -2131 -816.000000 -43 -3264 NaN NaN \n", "3 -682 -532.000000 -382 -1064 NaN NaN \n", "4 -121 -54.333333 -11 -163 0.000 1420.500000 \n", "... ... ... ... ... ... ... \n", "305806 -2498 -1064.538462 -12 -13839 NaN NaN \n", "305807 -127 -60.333333 -23 -181 27757.395 154567.965000 \n", "305808 -701 -253.250000 -5 -1013 58369.500 58369.500000 \n", "305809 -401 -401.000000 -401 -401 0.000 0.000000 \n", "305810 -1621 -531.090909 -8 -5842 0.000 1081.500000 \n", "\n", " \n", " max sum \n", "0 10822.5 24817.500 \n", "1 0.0 0.000 \n", "2 NaN 0.000 \n", "3 NaN 0.000 \n", "4 4261.5 4261.500 \n", "... ... ... \n", "305806 NaN 0.000 \n", "305807 384147.0 463703.895 \n", "305808 58369.5 175108.500 \n", "305809 0.0 0.000 \n", "305810 3244.5 9733.500 \n", "\n", "[305811 rows x 49 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_numeric_agg = bureau_numeric.drop(columns=['SK_ID_BUREAU']).groupby(by='SK_ID_CURR', as_index=False).agg(\n", " ['min','mean', 'max', 'sum']\n", ")\n", "bureau_numeric_agg" ] }, { "cell_type": "markdown", "id": "5245cdce", "metadata": {}, "source": [ "我们把多层索引平铺" ] }, { "cell_type": "code", "execution_count": 17, "id": "82f21c18", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRbureau_DAYS_CREDIT_minbureau_DAYS_CREDIT_meanbureau_DAYS_CREDIT_maxbureau_DAYS_CREDIT_sumbureau_CREDIT_DAY_OVERDUE_minbureau_CREDIT_DAY_OVERDUE_meanbureau_CREDIT_DAY_OVERDUE_maxbureau_CREDIT_DAY_OVERDUE_sumbureau_DAYS_CREDIT_ENDDATE_min...bureau_AMT_CREDIT_SUM_OVERDUE_maxbureau_AMT_CREDIT_SUM_OVERDUE_sumbureau_DAYS_CREDIT_UPDATE_minbureau_DAYS_CREDIT_UPDATE_meanbureau_DAYS_CREDIT_UPDATE_maxbureau_DAYS_CREDIT_UPDATE_sumbureau_AMT_ANNUITY_minbureau_AMT_ANNUITY_meanbureau_AMT_ANNUITY_maxbureau_AMT_ANNUITY_sum
0100001-1572-735.000000-49-514500.000-1329.0...0.00.0-155-93.142857-6-6520.0003545.35714310822.524817.500
1100002-1437-874.000000-103-699200.000-1072.0...0.00.0-1185-499.875000-7-39990.0000.0000000.00.000
2100003-2586-1400.750000-606-560300.000-2434.0...0.00.0-2131-816.000000-43-3264NaNNaNNaN0.000
3100004-1326-867.000000-408-173400.000-595.0...0.00.0-682-532.000000-382-1064NaNNaNNaN0.000
4100005-373-190.666667-62-57200.000-128.0...0.00.0-121-54.333333-11-1630.0001420.5000004261.54261.500
..................................................................
305806456249-2713-1667.076923-483-2167200.000-2499.0...0.00.0-2498-1064.538462-12-13839NaNNaNNaN0.000
305807456250-1002-862.000000-760-258600.000-272.0...0.00.0-127-60.333333-23-18127757.395154567.965000384147.0463703.895
305808456253-919-867.500000-713-347000.000-189.0...0.00.0-701-253.250000-5-101358369.50058369.50000058369.5175108.500
305809456254-1104-1104.000000-1104-110400.000-859.0...0.00.0-401-401.000000-401-4010.0000.0000000.00.000
305810456255-2337-1089.454545-363-1198400.000-1243.0...0.00.0-1621-531.090909-8-58420.0001081.5000003244.59733.500
\n", "

305811 rows × 49 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR bureau_DAYS_CREDIT_min bureau_DAYS_CREDIT_mean \\\n", "0 100001 -1572 -735.000000 \n", "1 100002 -1437 -874.000000 \n", "2 100003 -2586 -1400.750000 \n", "3 100004 -1326 -867.000000 \n", "4 100005 -373 -190.666667 \n", "... ... ... ... \n", "305806 456249 -2713 -1667.076923 \n", "305807 456250 -1002 -862.000000 \n", "305808 456253 -919 -867.500000 \n", "305809 456254 -1104 -1104.000000 \n", "305810 456255 -2337 -1089.454545 \n", "\n", " bureau_DAYS_CREDIT_max bureau_DAYS_CREDIT_sum \\\n", "0 -49 -5145 \n", "1 -103 -6992 \n", "2 -606 -5603 \n", "3 -408 -1734 \n", "4 -62 -572 \n", "... ... ... \n", "305806 -483 -21672 \n", "305807 -760 -2586 \n", "305808 -713 -3470 \n", "305809 -1104 -1104 \n", "305810 -363 -11984 \n", "\n", " bureau_CREDIT_DAY_OVERDUE_min bureau_CREDIT_DAY_OVERDUE_mean \\\n", "0 0 0.0 \n", "1 0 0.0 \n", "2 0 0.0 \n", "3 0 0.0 \n", "4 0 0.0 \n", "... ... ... \n", "305806 0 0.0 \n", "305807 0 0.0 \n", "305808 0 0.0 \n", "305809 0 0.0 \n", "305810 0 0.0 \n", "\n", " bureau_CREDIT_DAY_OVERDUE_max bureau_CREDIT_DAY_OVERDUE_sum \\\n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 \n", "... ... ... \n", "305806 0 0 \n", "305807 0 0 \n", "305808 0 0 \n", "305809 0 0 \n", "305810 0 0 \n", "\n", " bureau_DAYS_CREDIT_ENDDATE_min ... \\\n", "0 -1329.0 ... \n", "1 -1072.0 ... \n", "2 -2434.0 ... \n", "3 -595.0 ... \n", "4 -128.0 ... \n", "... ... ... \n", "305806 -2499.0 ... \n", "305807 -272.0 ... \n", "305808 -189.0 ... \n", "305809 -859.0 ... \n", "305810 -1243.0 ... \n", "\n", " bureau_AMT_CREDIT_SUM_OVERDUE_max bureau_AMT_CREDIT_SUM_OVERDUE_sum \\\n", "0 0.0 0.0 \n", "1 0.0 0.0 \n", "2 0.0 0.0 \n", "3 0.0 0.0 \n", "4 0.0 0.0 \n", "... ... ... \n", "305806 0.0 0.0 \n", "305807 0.0 0.0 \n", "305808 0.0 0.0 \n", "305809 0.0 0.0 \n", "305810 0.0 0.0 \n", "\n", " bureau_DAYS_CREDIT_UPDATE_min bureau_DAYS_CREDIT_UPDATE_mean \\\n", "0 -155 -93.142857 \n", "1 -1185 -499.875000 \n", "2 -2131 -816.000000 \n", "3 -682 -532.000000 \n", "4 -121 -54.333333 \n", "... ... ... \n", "305806 -2498 -1064.538462 \n", "305807 -127 -60.333333 \n", "305808 -701 -253.250000 \n", "305809 -401 -401.000000 \n", "305810 -1621 -531.090909 \n", "\n", " bureau_DAYS_CREDIT_UPDATE_max bureau_DAYS_CREDIT_UPDATE_sum \\\n", "0 -6 -652 \n", "1 -7 -3999 \n", "2 -43 -3264 \n", "3 -382 -1064 \n", "4 -11 -163 \n", "... ... ... \n", "305806 -12 -13839 \n", "305807 -23 -181 \n", "305808 -5 -1013 \n", "305809 -401 -401 \n", "305810 -8 -5842 \n", "\n", " bureau_AMT_ANNUITY_min bureau_AMT_ANNUITY_mean \\\n", "0 0.000 3545.357143 \n", "1 0.000 0.000000 \n", "2 NaN NaN \n", "3 NaN NaN \n", "4 0.000 1420.500000 \n", "... ... ... \n", "305806 NaN NaN \n", "305807 27757.395 154567.965000 \n", "305808 58369.500 58369.500000 \n", "305809 0.000 0.000000 \n", "305810 0.000 1081.500000 \n", "\n", " bureau_AMT_ANNUITY_max bureau_AMT_ANNUITY_sum \n", "0 10822.5 24817.500 \n", "1 0.0 0.000 \n", "2 NaN 0.000 \n", "3 NaN 0.000 \n", "4 4261.5 4261.500 \n", "... ... ... \n", "305806 NaN 0.000 \n", "305807 384147.0 463703.895 \n", "305808 58369.5 175108.500 \n", "305809 0.0 0.000 \n", "305810 3244.5 9733.500 \n", "\n", "[305811 rows x 49 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_numeric_agg.columns = [\n", " f\"bureau_{col[0]}_{col[1]}\" if col[1] != \"\" else col[0] \n", " for col in bureau_numeric_agg.columns.values\n", "]\n", "bureau_numeric_agg" ] }, { "cell_type": "code", "execution_count": 18, "id": "c9fabd9c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(305811, 49)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_numeric_agg.shape" ] }, { "cell_type": "markdown", "id": "198f9387", "metadata": {}, "source": [ "计算一下相关性把" ] }, { "cell_type": "code", "execution_count": 19, "id": "55f728fc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['bureau_DAYS_CREDIT_min',\n", " 'bureau_DAYS_CREDIT_mean',\n", " 'bureau_DAYS_CREDIT_max',\n", " 'bureau_DAYS_CREDIT_sum',\n", " 'bureau_CREDIT_DAY_OVERDUE_min',\n", " 'bureau_CREDIT_DAY_OVERDUE_mean',\n", " 'bureau_CREDIT_DAY_OVERDUE_max',\n", " 'bureau_CREDIT_DAY_OVERDUE_sum',\n", " 'bureau_DAYS_CREDIT_ENDDATE_min',\n", " 'bureau_DAYS_CREDIT_ENDDATE_mean',\n", " 'bureau_DAYS_CREDIT_ENDDATE_max',\n", " 'bureau_DAYS_CREDIT_ENDDATE_sum',\n", " 'bureau_DAYS_ENDDATE_FACT_min',\n", " 'bureau_DAYS_ENDDATE_FACT_mean',\n", " 'bureau_DAYS_ENDDATE_FACT_max',\n", " 'bureau_DAYS_ENDDATE_FACT_sum',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_min',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_mean',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_max',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_sum',\n", " 'bureau_CNT_CREDIT_PROLONG_min',\n", " 'bureau_CNT_CREDIT_PROLONG_mean',\n", " 'bureau_CNT_CREDIT_PROLONG_max',\n", " 'bureau_CNT_CREDIT_PROLONG_sum',\n", " 'bureau_AMT_CREDIT_SUM_min',\n", " 'bureau_AMT_CREDIT_SUM_mean',\n", " 'bureau_AMT_CREDIT_SUM_max',\n", " 'bureau_AMT_CREDIT_SUM_sum',\n", " 'bureau_AMT_CREDIT_SUM_DEBT_min',\n", " 'bureau_AMT_CREDIT_SUM_DEBT_mean',\n", " 'bureau_AMT_CREDIT_SUM_DEBT_max',\n", " 'bureau_AMT_CREDIT_SUM_DEBT_sum',\n", " 'bureau_AMT_CREDIT_SUM_LIMIT_min',\n", " 'bureau_AMT_CREDIT_SUM_LIMIT_mean',\n", " 'bureau_AMT_CREDIT_SUM_LIMIT_max',\n", " 'bureau_AMT_CREDIT_SUM_LIMIT_sum',\n", " 'bureau_AMT_CREDIT_SUM_OVERDUE_min',\n", " 'bureau_AMT_CREDIT_SUM_OVERDUE_mean',\n", " 'bureau_AMT_CREDIT_SUM_OVERDUE_max',\n", " 'bureau_AMT_CREDIT_SUM_OVERDUE_sum',\n", " 'bureau_DAYS_CREDIT_UPDATE_min',\n", " 'bureau_DAYS_CREDIT_UPDATE_mean',\n", " 'bureau_DAYS_CREDIT_UPDATE_max',\n", " 'bureau_DAYS_CREDIT_UPDATE_sum',\n", " 'bureau_AMT_ANNUITY_min',\n", " 'bureau_AMT_ANNUITY_mean',\n", " 'bureau_AMT_ANNUITY_max',\n", " 'bureau_AMT_ANNUITY_sum']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_columns = list(bureau_numeric_agg.columns)\n", "new_columns.remove('SK_ID_CURR')\n", "new_columns" ] }, { "cell_type": "code", "execution_count": 20, "id": "72b02415", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "bureau_AMT_CREDIT_MAX_OVERDUE_min 0.007180\n", "bureau_AMT_CREDIT_MAX_OVERDUE_mean 0.006485\n", "bureau_AMT_CREDIT_SUM_OVERDUE_max 0.005342\n", "bureau_AMT_CREDIT_MAX_OVERDUE_max 0.005038\n", "bureau_AMT_CREDIT_SUM_OVERDUE_sum 0.004478\n", "dtype: float64" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corrs = bureau_numeric_agg[new_columns].corrwith(train['TARGET']).sort_values(ascending=False)\n", "corrs.head()" ] }, { "cell_type": "code", "execution_count": 21, "id": "41177d00", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "bureau_AMT_CREDIT_SUM_DEBT_sum -0.001602\n", "bureau_AMT_ANNUITY_mean -0.001616\n", "bureau_AMT_CREDIT_SUM_DEBT_max -0.002066\n", "bureau_DAYS_CREDIT_max -0.002341\n", "bureau_DAYS_ENDDATE_FACT_max -0.002621\n", "dtype: float64" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corrs.tail()" ] }, { "cell_type": "markdown", "id": "cf8c772c", "metadata": {}, "source": [ "可以看到,我们构造出几个正相关 还不错的特征!!!😍" ] }, { "cell_type": "markdown", "id": "72094148", "metadata": {}, "source": [ "继续画图看看" ] }, { "cell_type": "code", "execution_count": 22, "id": "b61460df", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(307511, 243) (305811, 49)\n" ] } ], "source": [ "print(train.shape, bureau_numeric_agg.shape)" ] }, { "cell_type": "code", "execution_count": 23, "id": "767e2e0c", "metadata": {}, "outputs": [], "source": [ "bureau_numeric_agg_plot = pd.merge(train[['SK_ID_CURR', 'TARGET']], \n", " bureau_numeric_agg[['SK_ID_CURR', 'bureau_DAYS_CREDIT_mean']],\n", " on = 'SK_ID_CURR',\n", " how = 'left'\n", " )" ] }, { "cell_type": "code", "execution_count": 24, "id": "b33fa8bb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5,3))\n", "sns.kdeplot(\n", " data = bureau_numeric_agg_plot,\n", " x = 'bureau_DAYS_CREDIT_mean',\n", " hue = 'TARGET',\n", " common_norm=False\n", ")" ] }, { "cell_type": "markdown", "id": "b0867ef8", "metadata": {}, "source": [ "可以看到,分布还是有点区别,那些`DAYS_CREDIT_mean` 平均贷款天数更多的越容易违约" ] }, { "cell_type": "markdown", "id": "e4f5e1f6", "metadata": {}, "source": [ "#### categorical columns\n", "`bureau_categorical_agg`" ] }, { "cell_type": "markdown", "id": "cb902492", "metadata": {}, "source": [ "对于分类变量, 我们可以统计次数和平均次数" ] }, { "cell_type": "code", "execution_count": 25, "id": "f01a2c8b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CREDIT_ACTIVE_ActiveCREDIT_ACTIVE_Bad debtCREDIT_ACTIVE_ClosedCREDIT_ACTIVE_SoldCREDIT_CURRENCY_currency 1CREDIT_CURRENCY_currency 2CREDIT_CURRENCY_currency 3CREDIT_CURRENCY_currency 4CREDIT_TYPE_Another type of loanCREDIT_TYPE_Car loan...CREDIT_TYPE_Loan for business developmentCREDIT_TYPE_Loan for purchase of shares (margin lending)CREDIT_TYPE_Loan for the purchase of equipmentCREDIT_TYPE_Loan for working capital replenishmentCREDIT_TYPE_MicroloanCREDIT_TYPE_Mobile operator loanCREDIT_TYPE_MortgageCREDIT_TYPE_Real estate loanCREDIT_TYPE_Unknown type of loanSK_ID_CURR
0FalseFalseTrueFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalse215354
1TrueFalseFalseFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalse215354
2TrueFalseFalseFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalse215354
3TrueFalseFalseFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalse215354
4TrueFalseFalseFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalse215354
..................................................................
1716423TrueFalseFalseFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseTrueFalseFalseFalseFalse259355
1716424FalseFalseTrueFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalse100044
1716425FalseFalseTrueFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalse100044
1716426FalseFalseTrueFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalse246829
1716427FalseFalseTrueFalseTrueFalseFalseFalseFalseFalse...FalseFalseFalseFalseTrueFalseFalseFalseFalse246829
\n", "

1716428 rows × 24 columns

\n", "
" ], "text/plain": [ " CREDIT_ACTIVE_Active CREDIT_ACTIVE_Bad debt CREDIT_ACTIVE_Closed \\\n", "0 False False True \n", "1 True False False \n", "2 True False False \n", "3 True False False \n", "4 True False False \n", "... ... ... ... \n", "1716423 True False False \n", "1716424 False False True \n", "1716425 False False True \n", "1716426 False False True \n", "1716427 False False True \n", "\n", " CREDIT_ACTIVE_Sold CREDIT_CURRENCY_currency 1 \\\n", "0 False True \n", "1 False True \n", "2 False True \n", "3 False True \n", "4 False True \n", "... ... ... \n", "1716423 False True \n", "1716424 False True \n", "1716425 False True \n", "1716426 False True \n", "1716427 False True \n", "\n", " CREDIT_CURRENCY_currency 2 CREDIT_CURRENCY_currency 3 \\\n", "0 False False \n", "1 False False \n", "2 False False \n", "3 False False \n", "4 False False \n", "... ... ... \n", "1716423 False False \n", "1716424 False False \n", "1716425 False False \n", "1716426 False False \n", "1716427 False False \n", "\n", " CREDIT_CURRENCY_currency 4 CREDIT_TYPE_Another type of loan \\\n", "0 False False \n", "1 False False \n", "2 False False \n", "3 False False \n", "4 False False \n", "... ... ... \n", "1716423 False False \n", "1716424 False False \n", "1716425 False False \n", "1716426 False False \n", "1716427 False False \n", "\n", " CREDIT_TYPE_Car loan ... CREDIT_TYPE_Loan for business development \\\n", "0 False ... False \n", "1 False ... False \n", "2 False ... False \n", "3 False ... False \n", "4 False ... False \n", "... ... ... ... \n", "1716423 False ... False \n", "1716424 False ... False \n", "1716425 False ... False \n", "1716426 False ... False \n", "1716427 False ... False \n", "\n", " CREDIT_TYPE_Loan for purchase of shares (margin lending) \\\n", "0 False \n", "1 False \n", "2 False \n", "3 False \n", "4 False \n", "... ... \n", "1716423 False \n", "1716424 False \n", "1716425 False \n", "1716426 False \n", "1716427 False \n", "\n", " CREDIT_TYPE_Loan for the purchase of equipment \\\n", "0 False \n", "1 False \n", "2 False \n", "3 False \n", "4 False \n", "... ... \n", "1716423 False \n", "1716424 False \n", "1716425 False \n", "1716426 False \n", "1716427 False \n", "\n", " CREDIT_TYPE_Loan for working capital replenishment \\\n", "0 False \n", "1 False \n", "2 False \n", "3 False \n", "4 False \n", "... ... \n", "1716423 False \n", "1716424 False \n", "1716425 False \n", "1716426 False \n", "1716427 False \n", "\n", " CREDIT_TYPE_Microloan CREDIT_TYPE_Mobile operator loan \\\n", "0 False False \n", "1 False False \n", "2 False False \n", "3 False False \n", "4 False False \n", "... ... ... \n", "1716423 True False \n", "1716424 False False \n", "1716425 False False \n", "1716426 False False \n", "1716427 True False \n", "\n", " CREDIT_TYPE_Mortgage CREDIT_TYPE_Real estate loan \\\n", "0 False False \n", "1 False False \n", "2 False False \n", "3 False False \n", "4 False False \n", "... ... ... \n", "1716423 False False \n", "1716424 False False \n", "1716425 False False \n", "1716426 False False \n", "1716427 False False \n", "\n", " CREDIT_TYPE_Unknown type of loan SK_ID_CURR \n", "0 False 215354 \n", "1 False 215354 \n", "2 False 215354 \n", "3 False 215354 \n", "4 False 215354 \n", "... ... ... \n", "1716423 False 259355 \n", "1716424 False 100044 \n", "1716425 False 100044 \n", "1716426 False 246829 \n", "1716427 False 246829 \n", "\n", "[1716428 rows x 24 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_categorical = pd.get_dummies(bureau.select_dtypes(include='str'))\n", "bureau_categorical['SK_ID_CURR'] = bureau['SK_ID_CURR']\n", "bureau_categorical" ] }, { "cell_type": "code", "execution_count": 26, "id": "16716aeb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CREDIT_ACTIVE_ActiveCREDIT_ACTIVE_Bad debtCREDIT_ACTIVE_ClosedCREDIT_ACTIVE_SoldCREDIT_CURRENCY_currency 1...CREDIT_TYPE_MicroloanCREDIT_TYPE_Mobile operator loanCREDIT_TYPE_MortgageCREDIT_TYPE_Real estate loanCREDIT_TYPE_Unknown type of loan
summeansummeansummeansummeansummean...summeansummeansummeansummeansummean
SK_ID_CURR
10000130.42857100.040.57142900.071.0...00.000.000.000.000.0
10000220.25000000.060.75000000.081.0...00.000.000.000.000.0
10000310.25000000.030.75000000.041.0...00.000.000.000.000.0
10000400.00000000.021.00000000.021.0...00.000.000.000.000.0
10000520.66666700.010.33333300.031.0...00.000.000.000.000.0
\n", "

5 rows × 46 columns

\n", "
" ], "text/plain": [ " CREDIT_ACTIVE_Active CREDIT_ACTIVE_Bad debt \\\n", " sum mean sum mean \n", "SK_ID_CURR \n", "100001 3 0.428571 0 0.0 \n", "100002 2 0.250000 0 0.0 \n", "100003 1 0.250000 0 0.0 \n", "100004 0 0.000000 0 0.0 \n", "100005 2 0.666667 0 0.0 \n", "\n", " CREDIT_ACTIVE_Closed CREDIT_ACTIVE_Sold \\\n", " sum mean sum mean \n", "SK_ID_CURR \n", "100001 4 0.571429 0 0.0 \n", "100002 6 0.750000 0 0.0 \n", "100003 3 0.750000 0 0.0 \n", "100004 2 1.000000 0 0.0 \n", "100005 1 0.333333 0 0.0 \n", "\n", " CREDIT_CURRENCY_currency 1 ... CREDIT_TYPE_Microloan \\\n", " sum mean ... sum mean \n", "SK_ID_CURR ... \n", "100001 7 1.0 ... 0 0.0 \n", "100002 8 1.0 ... 0 0.0 \n", "100003 4 1.0 ... 0 0.0 \n", "100004 2 1.0 ... 0 0.0 \n", "100005 3 1.0 ... 0 0.0 \n", "\n", " CREDIT_TYPE_Mobile operator loan CREDIT_TYPE_Mortgage \\\n", " sum mean sum mean \n", "SK_ID_CURR \n", "100001 0 0.0 0 0.0 \n", "100002 0 0.0 0 0.0 \n", "100003 0 0.0 0 0.0 \n", "100004 0 0.0 0 0.0 \n", "100005 0 0.0 0 0.0 \n", "\n", " CREDIT_TYPE_Real estate loan CREDIT_TYPE_Unknown type of loan \\\n", " sum mean sum \n", "SK_ID_CURR \n", "100001 0 0.0 0 \n", "100002 0 0.0 0 \n", "100003 0 0.0 0 \n", "100004 0 0.0 0 \n", "100005 0 0.0 0 \n", "\n", " \n", " mean \n", "SK_ID_CURR \n", "100001 0.0 \n", "100002 0.0 \n", "100003 0.0 \n", "100004 0.0 \n", "100005 0.0 \n", "\n", "[5 rows x 46 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_categorical_agg = bureau_categorical.groupby(by='SK_ID_CURR').agg(\n", " ['sum', 'mean']\n", ")\n", "bureau_categorical_agg.head()" ] }, { "cell_type": "code", "execution_count": 27, "id": "3846e6a5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('CREDIT_ACTIVE_Active', 'sum')" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_categorical_agg.columns[0]" ] }, { "cell_type": "code", "execution_count": 28, "id": "4cdc53f4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
bureau_CREDIT_ACTIVE_Active_sumbureau_CREDIT_ACTIVE_Active_meanbureau_CREDIT_ACTIVE_Bad debt_sumbureau_CREDIT_ACTIVE_Bad debt_meanbureau_CREDIT_ACTIVE_Closed_sumbureau_CREDIT_ACTIVE_Closed_meanbureau_CREDIT_ACTIVE_Sold_sumbureau_CREDIT_ACTIVE_Sold_meanbureau_CREDIT_CURRENCY_currency 1_sumbureau_CREDIT_CURRENCY_currency 1_mean...bureau_CREDIT_TYPE_Microloan_sumbureau_CREDIT_TYPE_Microloan_meanbureau_CREDIT_TYPE_Mobile operator loan_sumbureau_CREDIT_TYPE_Mobile operator loan_meanbureau_CREDIT_TYPE_Mortgage_sumbureau_CREDIT_TYPE_Mortgage_meanbureau_CREDIT_TYPE_Real estate loan_sumbureau_CREDIT_TYPE_Real estate loan_meanbureau_CREDIT_TYPE_Unknown type of loan_sumbureau_CREDIT_TYPE_Unknown type of loan_mean
SK_ID_CURR
10000130.42857100.040.57142900.071.0...00.000.000.000.000.0
10000220.25000000.060.75000000.081.0...00.000.000.000.000.0
10000310.25000000.030.75000000.041.0...00.000.000.000.000.0
10000400.00000000.021.00000000.021.0...00.000.000.000.000.0
10000520.66666700.010.33333300.031.0...00.000.000.000.000.0
\n", "

5 rows × 46 columns

\n", "
" ], "text/plain": [ " bureau_CREDIT_ACTIVE_Active_sum bureau_CREDIT_ACTIVE_Active_mean \\\n", "SK_ID_CURR \n", "100001 3 0.428571 \n", "100002 2 0.250000 \n", "100003 1 0.250000 \n", "100004 0 0.000000 \n", "100005 2 0.666667 \n", "\n", " bureau_CREDIT_ACTIVE_Bad debt_sum \\\n", "SK_ID_CURR \n", "100001 0 \n", "100002 0 \n", "100003 0 \n", "100004 0 \n", "100005 0 \n", "\n", " bureau_CREDIT_ACTIVE_Bad debt_mean \\\n", "SK_ID_CURR \n", "100001 0.0 \n", "100002 0.0 \n", "100003 0.0 \n", "100004 0.0 \n", "100005 0.0 \n", "\n", " bureau_CREDIT_ACTIVE_Closed_sum bureau_CREDIT_ACTIVE_Closed_mean \\\n", "SK_ID_CURR \n", "100001 4 0.571429 \n", "100002 6 0.750000 \n", "100003 3 0.750000 \n", "100004 2 1.000000 \n", "100005 1 0.333333 \n", "\n", " bureau_CREDIT_ACTIVE_Sold_sum bureau_CREDIT_ACTIVE_Sold_mean \\\n", "SK_ID_CURR \n", "100001 0 0.0 \n", "100002 0 0.0 \n", "100003 0 0.0 \n", "100004 0 0.0 \n", "100005 0 0.0 \n", "\n", " bureau_CREDIT_CURRENCY_currency 1_sum \\\n", "SK_ID_CURR \n", "100001 7 \n", "100002 8 \n", "100003 4 \n", "100004 2 \n", "100005 3 \n", "\n", " bureau_CREDIT_CURRENCY_currency 1_mean ... \\\n", "SK_ID_CURR ... \n", "100001 1.0 ... \n", "100002 1.0 ... \n", "100003 1.0 ... \n", "100004 1.0 ... \n", "100005 1.0 ... \n", "\n", " bureau_CREDIT_TYPE_Microloan_sum \\\n", "SK_ID_CURR \n", "100001 0 \n", "100002 0 \n", "100003 0 \n", "100004 0 \n", "100005 0 \n", "\n", " bureau_CREDIT_TYPE_Microloan_mean \\\n", "SK_ID_CURR \n", "100001 0.0 \n", "100002 0.0 \n", "100003 0.0 \n", "100004 0.0 \n", "100005 0.0 \n", "\n", " bureau_CREDIT_TYPE_Mobile operator loan_sum \\\n", "SK_ID_CURR \n", "100001 0 \n", "100002 0 \n", "100003 0 \n", "100004 0 \n", "100005 0 \n", "\n", " bureau_CREDIT_TYPE_Mobile operator loan_mean \\\n", "SK_ID_CURR \n", "100001 0.0 \n", "100002 0.0 \n", "100003 0.0 \n", "100004 0.0 \n", "100005 0.0 \n", "\n", " bureau_CREDIT_TYPE_Mortgage_sum bureau_CREDIT_TYPE_Mortgage_mean \\\n", "SK_ID_CURR \n", "100001 0 0.0 \n", "100002 0 0.0 \n", "100003 0 0.0 \n", "100004 0 0.0 \n", "100005 0 0.0 \n", "\n", " bureau_CREDIT_TYPE_Real estate loan_sum \\\n", "SK_ID_CURR \n", "100001 0 \n", "100002 0 \n", "100003 0 \n", "100004 0 \n", "100005 0 \n", "\n", " bureau_CREDIT_TYPE_Real estate loan_mean \\\n", "SK_ID_CURR \n", "100001 0.0 \n", "100002 0.0 \n", "100003 0.0 \n", "100004 0.0 \n", "100005 0.0 \n", "\n", " bureau_CREDIT_TYPE_Unknown type of loan_sum \\\n", "SK_ID_CURR \n", "100001 0 \n", "100002 0 \n", "100003 0 \n", "100004 0 \n", "100005 0 \n", "\n", " bureau_CREDIT_TYPE_Unknown type of loan_mean \n", "SK_ID_CURR \n", "100001 0.0 \n", "100002 0.0 \n", "100003 0.0 \n", "100004 0.0 \n", "100005 0.0 \n", "\n", "[5 rows x 46 columns]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_categorical_agg.columns = [ f'bureau_{col[0]}_{col[1]}' for col in bureau_categorical_agg.columns]\n", "bureau_categorical_agg.head()" ] }, { "cell_type": "code", "execution_count": 29, "id": "4f3b923b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRbureau_CREDIT_ACTIVE_Active_sumbureau_CREDIT_ACTIVE_Active_meanbureau_CREDIT_ACTIVE_Bad debt_sumbureau_CREDIT_ACTIVE_Bad debt_meanbureau_CREDIT_ACTIVE_Closed_sumbureau_CREDIT_ACTIVE_Closed_meanbureau_CREDIT_ACTIVE_Sold_sumbureau_CREDIT_ACTIVE_Sold_meanbureau_CREDIT_CURRENCY_currency 1_sum...bureau_CREDIT_TYPE_Microloan_sumbureau_CREDIT_TYPE_Microloan_meanbureau_CREDIT_TYPE_Mobile operator loan_sumbureau_CREDIT_TYPE_Mobile operator loan_meanbureau_CREDIT_TYPE_Mortgage_sumbureau_CREDIT_TYPE_Mortgage_meanbureau_CREDIT_TYPE_Real estate loan_sumbureau_CREDIT_TYPE_Real estate loan_meanbureau_CREDIT_TYPE_Unknown type of loan_sumbureau_CREDIT_TYPE_Unknown type of loan_mean
010000130.42857100.040.57142900.07...00.000.000.000.000.0
110000220.25000000.060.75000000.08...00.000.000.000.000.0
210000310.25000000.030.75000000.04...00.000.000.000.000.0
310000400.00000000.021.00000000.02...00.000.000.000.000.0
410000520.66666700.010.33333300.03...00.000.000.000.000.0
\n", "

5 rows × 47 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR bureau_CREDIT_ACTIVE_Active_sum \\\n", "0 100001 3 \n", "1 100002 2 \n", "2 100003 1 \n", "3 100004 0 \n", "4 100005 2 \n", "\n", " bureau_CREDIT_ACTIVE_Active_mean bureau_CREDIT_ACTIVE_Bad debt_sum \\\n", "0 0.428571 0 \n", "1 0.250000 0 \n", "2 0.250000 0 \n", "3 0.000000 0 \n", "4 0.666667 0 \n", "\n", " bureau_CREDIT_ACTIVE_Bad debt_mean bureau_CREDIT_ACTIVE_Closed_sum \\\n", "0 0.0 4 \n", "1 0.0 6 \n", "2 0.0 3 \n", "3 0.0 2 \n", "4 0.0 1 \n", "\n", " bureau_CREDIT_ACTIVE_Closed_mean bureau_CREDIT_ACTIVE_Sold_sum \\\n", "0 0.571429 0 \n", "1 0.750000 0 \n", "2 0.750000 0 \n", "3 1.000000 0 \n", "4 0.333333 0 \n", "\n", " bureau_CREDIT_ACTIVE_Sold_mean bureau_CREDIT_CURRENCY_currency 1_sum ... \\\n", "0 0.0 7 ... \n", "1 0.0 8 ... \n", "2 0.0 4 ... \n", "3 0.0 2 ... \n", "4 0.0 3 ... \n", "\n", " bureau_CREDIT_TYPE_Microloan_sum bureau_CREDIT_TYPE_Microloan_mean \\\n", "0 0 0.0 \n", "1 0 0.0 \n", "2 0 0.0 \n", "3 0 0.0 \n", "4 0 0.0 \n", "\n", " bureau_CREDIT_TYPE_Mobile operator loan_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " bureau_CREDIT_TYPE_Mobile operator loan_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " bureau_CREDIT_TYPE_Mortgage_sum bureau_CREDIT_TYPE_Mortgage_mean \\\n", "0 0 0.0 \n", "1 0 0.0 \n", "2 0 0.0 \n", "3 0 0.0 \n", "4 0 0.0 \n", "\n", " bureau_CREDIT_TYPE_Real estate loan_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " bureau_CREDIT_TYPE_Real estate loan_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " bureau_CREDIT_TYPE_Unknown type of loan_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " bureau_CREDIT_TYPE_Unknown type of loan_mean \n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", "[5 rows x 47 columns]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_categorical_agg = bureau_categorical_agg.reset_index()\n", "bureau_categorical_agg.head()" ] }, { "cell_type": "markdown", "id": "19b233d8", "metadata": {}, "source": [ "把上述特征合并起来" ] }, { "cell_type": "code", "execution_count": 30, "id": "1f863cbc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(305811, 47) (305811, 2) (305811, 49)\n" ] } ], "source": [ "print(bureau_categorical_agg.shape, bureau_previous_loan_counts.shape, bureau_numeric_agg.shape)" ] }, { "cell_type": "code", "execution_count": 31, "id": "4b9431d3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRbureau_CREDIT_ACTIVE_Active_sumbureau_CREDIT_ACTIVE_Active_meanbureau_CREDIT_ACTIVE_Bad debt_sumbureau_CREDIT_ACTIVE_Bad debt_meanbureau_CREDIT_ACTIVE_Closed_sumbureau_CREDIT_ACTIVE_Closed_meanbureau_CREDIT_ACTIVE_Sold_sumbureau_CREDIT_ACTIVE_Sold_meanbureau_CREDIT_CURRENCY_currency 1_sum...bureau_AMT_CREDIT_SUM_OVERDUE_maxbureau_AMT_CREDIT_SUM_OVERDUE_sumbureau_DAYS_CREDIT_UPDATE_minbureau_DAYS_CREDIT_UPDATE_meanbureau_DAYS_CREDIT_UPDATE_maxbureau_DAYS_CREDIT_UPDATE_sumbureau_AMT_ANNUITY_minbureau_AMT_ANNUITY_meanbureau_AMT_ANNUITY_maxbureau_AMT_ANNUITY_sum
010000130.42857100.040.57142900.07...0.00.0-155-93.142857-6-6520.03545.35714310822.524817.5
110000220.25000000.060.75000000.08...0.00.0-1185-499.875000-7-39990.00.0000000.00.0
210000310.25000000.030.75000000.04...0.00.0-2131-816.000000-43-3264NaNNaNNaN0.0
310000400.00000000.021.00000000.02...0.00.0-682-532.000000-382-1064NaNNaNNaN0.0
410000520.66666700.010.33333300.03...0.00.0-121-54.333333-11-1630.01420.5000004261.54261.5
\n", "

5 rows × 96 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR bureau_CREDIT_ACTIVE_Active_sum \\\n", "0 100001 3 \n", "1 100002 2 \n", "2 100003 1 \n", "3 100004 0 \n", "4 100005 2 \n", "\n", " bureau_CREDIT_ACTIVE_Active_mean bureau_CREDIT_ACTIVE_Bad debt_sum \\\n", "0 0.428571 0 \n", "1 0.250000 0 \n", "2 0.250000 0 \n", "3 0.000000 0 \n", "4 0.666667 0 \n", "\n", " bureau_CREDIT_ACTIVE_Bad debt_mean bureau_CREDIT_ACTIVE_Closed_sum \\\n", "0 0.0 4 \n", "1 0.0 6 \n", "2 0.0 3 \n", "3 0.0 2 \n", "4 0.0 1 \n", "\n", " bureau_CREDIT_ACTIVE_Closed_mean bureau_CREDIT_ACTIVE_Sold_sum \\\n", "0 0.571429 0 \n", "1 0.750000 0 \n", "2 0.750000 0 \n", "3 1.000000 0 \n", "4 0.333333 0 \n", "\n", " bureau_CREDIT_ACTIVE_Sold_mean bureau_CREDIT_CURRENCY_currency 1_sum ... \\\n", "0 0.0 7 ... \n", "1 0.0 8 ... \n", "2 0.0 4 ... \n", "3 0.0 2 ... \n", "4 0.0 3 ... \n", "\n", " bureau_AMT_CREDIT_SUM_OVERDUE_max bureau_AMT_CREDIT_SUM_OVERDUE_sum \\\n", "0 0.0 0.0 \n", "1 0.0 0.0 \n", "2 0.0 0.0 \n", "3 0.0 0.0 \n", "4 0.0 0.0 \n", "\n", " bureau_DAYS_CREDIT_UPDATE_min bureau_DAYS_CREDIT_UPDATE_mean \\\n", "0 -155 -93.142857 \n", "1 -1185 -499.875000 \n", "2 -2131 -816.000000 \n", "3 -682 -532.000000 \n", "4 -121 -54.333333 \n", "\n", " bureau_DAYS_CREDIT_UPDATE_max bureau_DAYS_CREDIT_UPDATE_sum \\\n", "0 -6 -652 \n", "1 -7 -3999 \n", "2 -43 -3264 \n", "3 -382 -1064 \n", "4 -11 -163 \n", "\n", " bureau_AMT_ANNUITY_min bureau_AMT_ANNUITY_mean bureau_AMT_ANNUITY_max \\\n", "0 0.0 3545.357143 10822.5 \n", "1 0.0 0.000000 0.0 \n", "2 NaN NaN NaN \n", "3 NaN NaN NaN \n", "4 0.0 1420.500000 4261.5 \n", "\n", " bureau_AMT_ANNUITY_sum \n", "0 24817.5 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 4261.5 \n", "\n", "[5 rows x 96 columns]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfs = [df.set_index('SK_ID_CURR') for df in [bureau_categorical_agg, bureau_previous_loan_counts, bureau_numeric_agg]]\n", "bureau_agg = pd.concat(dfs, axis=1)\n", "bureau_agg = bureau_agg.reset_index()\n", "bureau_agg.head()" ] }, { "cell_type": "code", "execution_count": 32, "id": "5dd35562", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(305811, 96)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_agg.shape" ] }, { "cell_type": "code", "execution_count": 33, "id": "9ca740e6", "metadata": {}, "outputs": [], "source": [ "bureau_agg.to_feather('checkpoints/02_bureau_agg.feather')" ] }, { "cell_type": "code", "execution_count": 34, "id": "c7c6af7b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "132" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "del bureau_categorical_agg, bureau_previous_loan_counts, bureau_numeric_agg,bureau_agg\n", "gc.collect()" ] }, { "cell_type": "markdown", "id": "2d5365ee", "metadata": {}, "source": [ "### bureau_balance\n", "- 产生 `bureau_balance_by_client_agg`" ] }, { "cell_type": "code", "execution_count": 35, "id": "5734f2f4", "metadata": {}, "outputs": [], "source": [ "train = pd.read_feather('checkpoints/01_train_app_base.feather')\n", "test = pd.read_feather('checkpoints/01_test_app_base.feather')" ] }, { "cell_type": "code", "execution_count": 36, "id": "309d9ace", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(27299925, 3)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance = pd.read_csv('data/bureau_balance.csv')\n", "bureau_balance.shape" ] }, { "cell_type": "code", "execution_count": 37, "id": "6458143f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_BUREAUMONTHS_BALANCESTATUS
057154480C
15715448-1C
25715448-2C
35715448-3C
45715448-4C
\n", "
" ], "text/plain": [ " SK_ID_BUREAU MONTHS_BALANCE STATUS\n", "0 5715448 0 C\n", "1 5715448 -1 C\n", "2 5715448 -2 C\n", "3 5715448 -3 C\n", "4 5715448 -4 C" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance.head()" ] }, { "cell_type": "code", "execution_count": 38, "id": "a037e460", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SK_ID_BUREAU int64\n", "MONTHS_BALANCE int64\n", "STATUS str\n", "dtype: object" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance.dtypes" ] }, { "cell_type": "code", "execution_count": 39, "id": "84eb6c55", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_BUREAUMONTHS_BALANCESTATUS
057154480C
15715448-1C
25715448-2C
35715448-3C
45715448-4C
\n", "
" ], "text/plain": [ " SK_ID_BUREAU MONTHS_BALANCE STATUS\n", "0 5715448 0 C\n", "1 5715448 -1 C\n", "2 5715448 -2 C\n", "3 5715448 -3 C\n", "4 5715448 -4 C" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance.head()" ] }, { "cell_type": "markdown", "id": "fc8d6590", "metadata": {}, "source": [ "因此对于`MONTHS_BALANCE` 可以聚合数字特征。`STATUS` 为分类统计。\n", "\n", "这是很多相同的。我们可以为此写两个函数`agg_numeric` `agg_categorical`" ] }, { "cell_type": "code", "execution_count": 40, "id": "22930f71", "metadata": {}, "outputs": [], "source": [ "def agg_numeric(df : pd.DataFrame, group_column, df_name = '', exclude_columns = []):\n", " \"\"\" 聚合数值特征: ['min', 'max', 'mean', 'sum'] 这是一般共有的\n", " group_column:\n", " df_name:\n", " exclude_columns: 需要排除一些id列. 一般不需要。\n", " \"\"\"\n", " numeric_df = df.select_dtypes('number')\n", " numeric_df = numeric_df.drop(columns = exclude_columns)\n", "\n", " numeric_df[group_column] = df[group_column]\n", " numeric_df_agg = numeric_df.groupby(by = group_column).agg(\n", " ['min', 'max', 'mean', 'sum']\n", " )\n", " prefix = f'{df_name}_' if df_name != '' else ''\n", " numeric_df_agg.columns = [\n", " f\"{prefix}{col[0]}_{col[1]}\".upper()\n", " for col in numeric_df_agg.columns.values\n", " ]\n", " numeric_df_agg = numeric_df_agg.reset_index()\n", " return numeric_df_agg" ] }, { "cell_type": "code", "execution_count": 41, "id": "9bce6268", "metadata": {}, "outputs": [], "source": [ "def agg_categorical(df : pd.DataFrame, group_column, df_name=''):\n", " \"\"\" 聚合数值特征: ['mean', 'sum'] 这是一般共有的\n", " group_column:\n", " df_name:\n", " \"\"\"\n", " categorical_df = pd.get_dummies(df.select_dtypes(include = ['str', 'object', 'category']))\n", " categorical_df[group_column] = df[group_column]\n", " categorical_df_agg = categorical_df.groupby(by = group_column).agg(\n", " ['mean', 'sum']\n", " )\n", " categorical_df_agg.columns = [\n", " f\"{df_name}_{col[0]}_{col[1]}\" if col[1] != \"\" else col[0] \n", " for col in categorical_df_agg.columns.values\n", " ]\n", " categorical_df_agg = categorical_df_agg.reset_index()\n", " return categorical_df_agg" ] }, { "cell_type": "code", "execution_count": 42, "id": "0552730a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_BUREAUBUREAU_MONTHS_BALANCE_MINBUREAU_MONTHS_BALANCE_MAXBUREAU_MONTHS_BALANCE_MEANBUREAU_MONTHS_BALANCE_SUM
05001709-960-48.0-4656
15001710-820-41.0-3403
25001711-30-1.5-6
35001712-180-9.0-171
45001713-210-10.5-231
\n", "
" ], "text/plain": [ " SK_ID_BUREAU BUREAU_MONTHS_BALANCE_MIN BUREAU_MONTHS_BALANCE_MAX \\\n", "0 5001709 -96 0 \n", "1 5001710 -82 0 \n", "2 5001711 -3 0 \n", "3 5001712 -18 0 \n", "4 5001713 -21 0 \n", "\n", " BUREAU_MONTHS_BALANCE_MEAN BUREAU_MONTHS_BALANCE_SUM \n", "0 -48.0 -4656 \n", "1 -41.0 -3403 \n", "2 -1.5 -6 \n", "3 -9.0 -171 \n", "4 -10.5 -231 " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance_numeric_agg = agg_numeric(bureau_balance, 'SK_ID_BUREAU', 'bureau', exclude_columns=['SK_ID_BUREAU'])\n", "bureau_balance_numeric_agg.head()" ] }, { "cell_type": "code", "execution_count": 43, "id": "d36d1bb9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(817395, 5)" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance_numeric_agg.shape" ] }, { "cell_type": "code", "execution_count": 44, "id": "8116696f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_BUREAUbureau_STATUS_0_meanbureau_STATUS_0_sumbureau_STATUS_1_meanbureau_STATUS_1_sumbureau_STATUS_2_meanbureau_STATUS_2_sumbureau_STATUS_3_meanbureau_STATUS_3_sumbureau_STATUS_4_meanbureau_STATUS_4_sumbureau_STATUS_5_meanbureau_STATUS_5_sumbureau_STATUS_C_meanbureau_STATUS_C_sumbureau_STATUS_X_meanbureau_STATUS_X_sum
050017090.00000000.000.000.000.000.000.886598860.11340211
150017100.06024150.000.000.000.000.000.578313480.36144630
250017110.75000030.000.000.000.000.000.00000000.2500001
350017120.526316100.000.000.000.000.000.47368490.0000000
450017130.00000000.000.000.000.000.000.00000001.00000022
\n", "
" ], "text/plain": [ " SK_ID_BUREAU bureau_STATUS_0_mean bureau_STATUS_0_sum \\\n", "0 5001709 0.000000 0 \n", "1 5001710 0.060241 5 \n", "2 5001711 0.750000 3 \n", "3 5001712 0.526316 10 \n", "4 5001713 0.000000 0 \n", "\n", " bureau_STATUS_1_mean bureau_STATUS_1_sum bureau_STATUS_2_mean \\\n", "0 0.0 0 0.0 \n", "1 0.0 0 0.0 \n", "2 0.0 0 0.0 \n", "3 0.0 0 0.0 \n", "4 0.0 0 0.0 \n", "\n", " bureau_STATUS_2_sum bureau_STATUS_3_mean bureau_STATUS_3_sum \\\n", "0 0 0.0 0 \n", "1 0 0.0 0 \n", "2 0 0.0 0 \n", "3 0 0.0 0 \n", "4 0 0.0 0 \n", "\n", " bureau_STATUS_4_mean bureau_STATUS_4_sum bureau_STATUS_5_mean \\\n", "0 0.0 0 0.0 \n", "1 0.0 0 0.0 \n", "2 0.0 0 0.0 \n", "3 0.0 0 0.0 \n", "4 0.0 0 0.0 \n", "\n", " bureau_STATUS_5_sum bureau_STATUS_C_mean bureau_STATUS_C_sum \\\n", "0 0 0.886598 86 \n", "1 0 0.578313 48 \n", "2 0 0.000000 0 \n", "3 0 0.473684 9 \n", "4 0 0.000000 0 \n", "\n", " bureau_STATUS_X_mean bureau_STATUS_X_sum \n", "0 0.113402 11 \n", "1 0.361446 30 \n", "2 0.250000 1 \n", "3 0.000000 0 \n", "4 1.000000 22 " ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance_categorical_agg = agg_categorical(bureau_balance, 'SK_ID_BUREAU', 'bureau')\n", "bureau_balance_categorical_agg.head()" ] }, { "cell_type": "code", "execution_count": 45, "id": "cecac138", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(817395, 17)" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance_categorical_agg.shape" ] }, { "cell_type": "code", "execution_count": 46, "id": "74fa006c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_BUREAUBUREAU_MONTHS_BALANCE_MINBUREAU_MONTHS_BALANCE_MAXBUREAU_MONTHS_BALANCE_MEANBUREAU_MONTHS_BALANCE_SUMbureau_STATUS_0_meanbureau_STATUS_0_sumbureau_STATUS_1_meanbureau_STATUS_1_sumbureau_STATUS_2_mean...bureau_STATUS_3_meanbureau_STATUS_3_sumbureau_STATUS_4_meanbureau_STATUS_4_sumbureau_STATUS_5_meanbureau_STATUS_5_sumbureau_STATUS_C_meanbureau_STATUS_C_sumbureau_STATUS_X_meanbureau_STATUS_X_sum
05001709-960-48.0-46560.00000000.000.0...0.000.000.000.886598860.11340211
15001710-820-41.0-34030.06024150.000.0...0.000.000.000.578313480.36144630
25001711-30-1.5-60.75000030.000.0...0.000.000.000.00000000.2500001
35001712-180-9.0-1710.526316100.000.0...0.000.000.000.47368490.0000000
45001713-210-10.5-2310.00000000.000.0...0.000.000.000.00000001.00000022
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " SK_ID_BUREAU BUREAU_MONTHS_BALANCE_MIN BUREAU_MONTHS_BALANCE_MAX \\\n", "0 5001709 -96 0 \n", "1 5001710 -82 0 \n", "2 5001711 -3 0 \n", "3 5001712 -18 0 \n", "4 5001713 -21 0 \n", "\n", " BUREAU_MONTHS_BALANCE_MEAN BUREAU_MONTHS_BALANCE_SUM \\\n", "0 -48.0 -4656 \n", "1 -41.0 -3403 \n", "2 -1.5 -6 \n", "3 -9.0 -171 \n", "4 -10.5 -231 \n", "\n", " bureau_STATUS_0_mean bureau_STATUS_0_sum bureau_STATUS_1_mean \\\n", "0 0.000000 0 0.0 \n", "1 0.060241 5 0.0 \n", "2 0.750000 3 0.0 \n", "3 0.526316 10 0.0 \n", "4 0.000000 0 0.0 \n", "\n", " bureau_STATUS_1_sum bureau_STATUS_2_mean ... bureau_STATUS_3_mean \\\n", "0 0 0.0 ... 0.0 \n", "1 0 0.0 ... 0.0 \n", "2 0 0.0 ... 0.0 \n", "3 0 0.0 ... 0.0 \n", "4 0 0.0 ... 0.0 \n", "\n", " bureau_STATUS_3_sum bureau_STATUS_4_mean bureau_STATUS_4_sum \\\n", "0 0 0.0 0 \n", "1 0 0.0 0 \n", "2 0 0.0 0 \n", "3 0 0.0 0 \n", "4 0 0.0 0 \n", "\n", " bureau_STATUS_5_mean bureau_STATUS_5_sum bureau_STATUS_C_mean \\\n", "0 0.0 0 0.886598 \n", "1 0.0 0 0.578313 \n", "2 0.0 0 0.000000 \n", "3 0.0 0 0.473684 \n", "4 0.0 0 0.000000 \n", "\n", " bureau_STATUS_C_sum bureau_STATUS_X_mean bureau_STATUS_X_sum \n", "0 86 0.113402 11 \n", "1 48 0.361446 30 \n", "2 0 0.250000 1 \n", "3 9 0.000000 0 \n", "4 0 1.000000 22 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance_agg = pd.merge(bureau_balance_numeric_agg, bureau_balance_categorical_agg, on='SK_ID_BUREAU', how='left')\n", "bureau_balance_agg.head()" ] }, { "cell_type": "markdown", "id": "51a8a971", "metadata": {}, "source": [ "进一步聚合到SK_ID_CURR" ] }, { "cell_type": "code", "execution_count": 47, "id": "b1d3e48b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRSK_ID_BUREAU
02153545714462
12153545714463
22153545714464
32153545714465
42153545714466
.........
17164232593555057750
17164241000445057754
17164251000445057762
17164262468295057770
17164272468295057778
\n", "

1716428 rows × 2 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR SK_ID_BUREAU\n", "0 215354 5714462\n", "1 215354 5714463\n", "2 215354 5714464\n", "3 215354 5714465\n", "4 215354 5714466\n", "... ... ...\n", "1716423 259355 5057750\n", "1716424 100044 5057754\n", "1716425 100044 5057762\n", "1716426 246829 5057770\n", "1716427 246829 5057778\n", "\n", "[1716428 rows x 2 columns]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau[['SK_ID_CURR', 'SK_ID_BUREAU']]" ] }, { "cell_type": "code", "execution_count": 48, "id": "670a2bc7", "metadata": {}, "outputs": [], "source": [ "bureau_balance_by_client = pd.merge(\n", " bureau_balance_agg,\n", " bureau[['SK_ID_CURR', 'SK_ID_BUREAU']], on='SK_ID_BUREAU', how='right'\n", " )" ] }, { "cell_type": "code", "execution_count": 49, "id": "44ca4f00", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_BUREAUBUREAU_MONTHS_BALANCE_MINBUREAU_MONTHS_BALANCE_MAXBUREAU_MONTHS_BALANCE_MEANBUREAU_MONTHS_BALANCE_SUMbureau_STATUS_0_meanbureau_STATUS_0_sumbureau_STATUS_1_meanbureau_STATUS_1_sumbureau_STATUS_2_mean...bureau_STATUS_3_sumbureau_STATUS_4_meanbureau_STATUS_4_sumbureau_STATUS_5_meanbureau_STATUS_5_sumbureau_STATUS_C_meanbureau_STATUS_C_sumbureau_STATUS_X_meanbureau_STATUS_X_sumSK_ID_CURR
05714462NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaN215354
15714463NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaN215354
25714464NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaN215354
35714465NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaN215354
45714466NaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaN215354
\n", "

5 rows × 22 columns

\n", "
" ], "text/plain": [ " SK_ID_BUREAU BUREAU_MONTHS_BALANCE_MIN BUREAU_MONTHS_BALANCE_MAX \\\n", "0 5714462 NaN NaN \n", "1 5714463 NaN NaN \n", "2 5714464 NaN NaN \n", "3 5714465 NaN NaN \n", "4 5714466 NaN NaN \n", "\n", " BUREAU_MONTHS_BALANCE_MEAN BUREAU_MONTHS_BALANCE_SUM \\\n", "0 NaN NaN \n", "1 NaN NaN \n", "2 NaN NaN \n", "3 NaN NaN \n", "4 NaN NaN \n", "\n", " bureau_STATUS_0_mean bureau_STATUS_0_sum bureau_STATUS_1_mean \\\n", "0 NaN NaN NaN \n", "1 NaN NaN NaN \n", "2 NaN NaN NaN \n", "3 NaN NaN NaN \n", "4 NaN NaN NaN \n", "\n", " bureau_STATUS_1_sum bureau_STATUS_2_mean ... bureau_STATUS_3_sum \\\n", "0 NaN NaN ... NaN \n", "1 NaN NaN ... NaN \n", "2 NaN NaN ... NaN \n", "3 NaN NaN ... NaN \n", "4 NaN NaN ... NaN \n", "\n", " bureau_STATUS_4_mean bureau_STATUS_4_sum bureau_STATUS_5_mean \\\n", "0 NaN NaN NaN \n", "1 NaN NaN NaN \n", "2 NaN NaN NaN \n", "3 NaN NaN NaN \n", "4 NaN NaN NaN \n", "\n", " bureau_STATUS_5_sum bureau_STATUS_C_mean bureau_STATUS_C_sum \\\n", "0 NaN NaN NaN \n", "1 NaN NaN NaN \n", "2 NaN NaN NaN \n", "3 NaN NaN NaN \n", "4 NaN NaN NaN \n", "\n", " bureau_STATUS_X_mean bureau_STATUS_X_sum SK_ID_CURR \n", "0 NaN NaN 215354 \n", "1 NaN NaN 215354 \n", "2 NaN NaN 215354 \n", "3 NaN NaN 215354 \n", "4 NaN NaN 215354 \n", "\n", "[5 rows x 22 columns]" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance_by_client.head()" ] }, { "cell_type": "markdown", "id": "04c9404f", "metadata": {}, "source": [ "这里id-bureau 会有多个,因为每个用户之前有多个申请记录, 我们聚合一下" ] }, { "cell_type": "code", "execution_count": 50, "id": "ebcb0a58", "metadata": {}, "outputs": [], "source": [ "bureau_balance_by_client_agg = agg_numeric(bureau_balance_by_client, 'SK_ID_CURR', '', exclude_columns=['SK_ID_CURR', 'SK_ID_BUREAU'])" ] }, { "cell_type": "code", "execution_count": 51, "id": "6fd2cdbf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRBUREAU_MONTHS_BALANCE_MIN_MINBUREAU_MONTHS_BALANCE_MIN_MAXBUREAU_MONTHS_BALANCE_MIN_MEANBUREAU_MONTHS_BALANCE_MIN_SUMBUREAU_MONTHS_BALANCE_MAX_MINBUREAU_MONTHS_BALANCE_MAX_MAXBUREAU_MONTHS_BALANCE_MAX_MEANBUREAU_MONTHS_BALANCE_MAX_SUMBUREAU_MONTHS_BALANCE_MEAN_MIN...BUREAU_STATUS_C_SUM_MEANBUREAU_STATUS_C_SUM_SUMBUREAU_STATUS_X_MEAN_MINBUREAU_STATUS_X_MEAN_MAXBUREAU_STATUS_X_MEAN_MEANBUREAU_STATUS_X_MEAN_SUMBUREAU_STATUS_X_SUM_MINBUREAU_STATUS_X_SUM_MAXBUREAU_STATUS_X_SUM_MEANBUREAU_STATUS_X_SUM_SUM
0100001-51.0-1.0-23.571429-165.00.00.00.00.0-25.5...15.714286110.00.00.5000000.2145901.5021290.09.04.28571430.0
1100002-47.0-3.0-28.250000-226.0-32.00.0-15.5-124.0-39.5...2.87500023.00.00.5000000.1619321.2954550.03.01.87500015.0
2100003NaNNaNNaN0.0NaNNaNNaN0.0NaN...NaN0.0NaNNaNNaN0.000000NaNNaNNaN0.0
3100004NaNNaNNaN0.0NaNNaNNaN0.0NaN...NaN0.0NaNNaNNaN0.000000NaNNaNNaN0.0
4100005-12.0-2.0-6.000000-18.00.00.00.00.0-6.0...1.6666675.00.00.3333330.1367520.4102560.01.00.6666672.0
\n", "

5 rows × 81 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR BUREAU_MONTHS_BALANCE_MIN_MIN BUREAU_MONTHS_BALANCE_MIN_MAX \\\n", "0 100001 -51.0 -1.0 \n", "1 100002 -47.0 -3.0 \n", "2 100003 NaN NaN \n", "3 100004 NaN NaN \n", "4 100005 -12.0 -2.0 \n", "\n", " BUREAU_MONTHS_BALANCE_MIN_MEAN BUREAU_MONTHS_BALANCE_MIN_SUM \\\n", "0 -23.571429 -165.0 \n", "1 -28.250000 -226.0 \n", "2 NaN 0.0 \n", "3 NaN 0.0 \n", "4 -6.000000 -18.0 \n", "\n", " BUREAU_MONTHS_BALANCE_MAX_MIN BUREAU_MONTHS_BALANCE_MAX_MAX \\\n", "0 0.0 0.0 \n", "1 -32.0 0.0 \n", "2 NaN NaN \n", "3 NaN NaN \n", "4 0.0 0.0 \n", "\n", " BUREAU_MONTHS_BALANCE_MAX_MEAN BUREAU_MONTHS_BALANCE_MAX_SUM \\\n", "0 0.0 0.0 \n", "1 -15.5 -124.0 \n", "2 NaN 0.0 \n", "3 NaN 0.0 \n", "4 0.0 0.0 \n", "\n", " BUREAU_MONTHS_BALANCE_MEAN_MIN ... BUREAU_STATUS_C_SUM_MEAN \\\n", "0 -25.5 ... 15.714286 \n", "1 -39.5 ... 2.875000 \n", "2 NaN ... NaN \n", "3 NaN ... NaN \n", "4 -6.0 ... 1.666667 \n", "\n", " BUREAU_STATUS_C_SUM_SUM BUREAU_STATUS_X_MEAN_MIN \\\n", "0 110.0 0.0 \n", "1 23.0 0.0 \n", "2 0.0 NaN \n", "3 0.0 NaN \n", "4 5.0 0.0 \n", "\n", " BUREAU_STATUS_X_MEAN_MAX BUREAU_STATUS_X_MEAN_MEAN \\\n", "0 0.500000 0.214590 \n", "1 0.500000 0.161932 \n", "2 NaN NaN \n", "3 NaN NaN \n", "4 0.333333 0.136752 \n", "\n", " BUREAU_STATUS_X_MEAN_SUM BUREAU_STATUS_X_SUM_MIN BUREAU_STATUS_X_SUM_MAX \\\n", "0 1.502129 0.0 9.0 \n", "1 1.295455 0.0 3.0 \n", "2 0.000000 NaN NaN \n", "3 0.000000 NaN NaN \n", "4 0.410256 0.0 1.0 \n", "\n", " BUREAU_STATUS_X_SUM_MEAN BUREAU_STATUS_X_SUM_SUM \n", "0 4.285714 30.0 \n", "1 1.875000 15.0 \n", "2 NaN 0.0 \n", "3 NaN 0.0 \n", "4 0.666667 2.0 \n", "\n", "[5 rows x 81 columns]" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bureau_balance_by_client_agg.head()" ] }, { "cell_type": "markdown", "id": "932e39ca", "metadata": {}, "source": [ "由于一对多,所以行数增加的" ] }, { "cell_type": "code", "execution_count": 52, "id": "d7b110a6", "metadata": {}, "outputs": [], "source": [ "bureau_balance_by_client_agg.to_feather('checkpoints/02_bureau_balance_agg.feather')" ] }, { "cell_type": "markdown", "id": "d25aed1f", "metadata": {}, "source": [ "#### 特征选择" ] }, { "cell_type": "code", "execution_count": 53, "id": "ab2bfde4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(307511, 243) (48744, 242)\n", "(307511, 418) (48744, 417)\n" ] } ], "source": [ "bureau_balance_agg = pd.read_feather('checkpoints/02_bureau_balance_agg.feather')\n", "bureau_agg = pd.read_feather('checkpoints/02_bureau_agg.feather')\n", "\n", "train = pd.read_feather('checkpoints/01_train_app_base.feather')\n", "test = pd.read_feather('checkpoints/01_test_app_base.feather')\n", "print(train.shape, test.shape)\n", "\n", "train = pd.merge(train, bureau_agg, on='SK_ID_CURR', how='left')\n", "train = pd.merge(train, bureau_balance_agg, on='SK_ID_CURR', how='left')\n", "test = pd.merge(test, bureau_agg, on='SK_ID_CURR', how='left')\n", "test = pd.merge(test, bureau_balance_agg, on='SK_ID_CURR', how='left')\n", "\n", "print(train.shape, test.shape)" ] }, { "cell_type": "markdown", "id": "5b5c221b", "metadata": {}, "source": [ "#### 缺失值" ] }, { "cell_type": "code", "execution_count": 54, "id": "cc083d45", "metadata": {}, "outputs": [], "source": [ "def missing_values_table(df):\n", " \"\"\" 统计缺失值\n", " \"\"\"\n", " mis_val = df.isnull().sum()\n", " mis_val_percent = 100 * df.isnull().sum() / len(df)\n", " mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1)\n", " mis_val_table_ren_columns = mis_val_table.rename(columns= {0:'Missing Values', 1:'% of total values'})\n", " mis_val_table_ren_columns = mis_val_table_ren_columns.sort_values(by='% of total values', ascending = False)\n", " mis_val_table_ren_columns = mis_val_table_ren_columns.loc[mis_val_table_ren_columns['% of total values'] != 0, :]\n", "\n", " return mis_val_table_ren_columns" ] }, { "cell_type": "code", "execution_count": 55, "id": "d431af0a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Missing Values% of total values
bureau_AMT_ANNUITY_max22750273.981744
bureau_AMT_ANNUITY_mean22750273.981744
bureau_AMT_ANNUITY_min22750273.981744
BUREAU_STATUS_3_SUM_MIN21528070.007252
BUREAU_STATUS_3_MEAN_MAX21528070.007252
BUREAU_STATUS_2_SUM_MIN21528070.007252
BUREAU_STATUS_2_MEAN_MIN21528070.007252
BUREAU_STATUS_2_MEAN_MEAN21528070.007252
BUREAU_STATUS_2_MEAN_MAX21528070.007252
BUREAU_STATUS_2_SUM_MEAN21528070.007252
\n", "
" ], "text/plain": [ " Missing Values % of total values\n", "bureau_AMT_ANNUITY_max 227502 73.981744\n", "bureau_AMT_ANNUITY_mean 227502 73.981744\n", "bureau_AMT_ANNUITY_min 227502 73.981744\n", "BUREAU_STATUS_3_SUM_MIN 215280 70.007252\n", "BUREAU_STATUS_3_MEAN_MAX 215280 70.007252\n", "BUREAU_STATUS_2_SUM_MIN 215280 70.007252\n", "BUREAU_STATUS_2_MEAN_MIN 215280 70.007252\n", "BUREAU_STATUS_2_MEAN_MEAN 215280 70.007252\n", "BUREAU_STATUS_2_MEAN_MAX 215280 70.007252\n", "BUREAU_STATUS_2_SUM_MEAN 215280 70.007252" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "missing_train = missing_values_table(train)\n", "missing_train.head(10)" ] }, { "cell_type": "markdown", "id": "a95898ae", "metadata": {}, "source": [ "对于一些缺失过多的字段可以考虑删除掉。比如去掉 超过90%的列" ] }, { "cell_type": "code", "execution_count": 56, "id": "44d0de7c", "metadata": {}, "outputs": [], "source": [ "missing_90_columns = missing_train.index[missing_train['% of total values'] > 90]" ] }, { "cell_type": "code", "execution_count": 57, "id": "18b9b6ce", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index([], dtype='str')" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "missing_90_columns" ] }, { "cell_type": "code", "execution_count": 58, "id": "312d73c0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Missing Values% of total values
COMMONAREA_AVG3349568.716150
COMMONAREA_MODE3349568.716150
COMMONAREA_MEDI3349568.716150
NONLIVINGAPARTMENTS_MODE3334768.412523
NONLIVINGAPARTMENTS_MEDI3334768.412523
.........
OBS_60_CNT_SOCIAL_CIRCLE290.059495
DEF_60_CNT_SOCIAL_CIRCLE290.059495
DEF_30_CNT_SOCIAL_CIRCLE290.059495
AMT_ANNUITY240.049237
EXT_SOURCE_280.016412
\n", "

233 rows × 2 columns

\n", "
" ], "text/plain": [ " Missing Values % of total values\n", "COMMONAREA_AVG 33495 68.716150\n", "COMMONAREA_MODE 33495 68.716150\n", "COMMONAREA_MEDI 33495 68.716150\n", "NONLIVINGAPARTMENTS_MODE 33347 68.412523\n", "NONLIVINGAPARTMENTS_MEDI 33347 68.412523\n", "... ... ...\n", "OBS_60_CNT_SOCIAL_CIRCLE 29 0.059495\n", "DEF_60_CNT_SOCIAL_CIRCLE 29 0.059495\n", "DEF_30_CNT_SOCIAL_CIRCLE 29 0.059495\n", "AMT_ANNUITY 24 0.049237\n", "EXT_SOURCE_2 8 0.016412\n", "\n", "[233 rows x 2 columns]" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "missing_values_table(test)" ] }, { "cell_type": "markdown", "id": "8e267244", "metadata": {}, "source": [ "#### 对齐train和test列" ] }, { "cell_type": "code", "execution_count": 59, "id": "9cdd7c23", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(307511, 418) (48744, 417)\n" ] } ], "source": [ "print(train.shape, test.shape)" ] }, { "cell_type": "code", "execution_count": 60, "id": "3304a410", "metadata": {}, "outputs": [], "source": [ "train_labels = train['TARGET']\n", "train, test = train.align(test, join='inner', axis=1)\n", "train['TARGET'] = train_labels" ] }, { "cell_type": "code", "execution_count": 61, "id": "e87f527b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(307511, 418) (48744, 417)\n" ] } ], "source": [ "print(train.shape, test.shape)" ] }, { "cell_type": "markdown", "id": "74b6c0be", "metadata": {}, "source": [ "#### 相关矩阵" ] }, { "cell_type": "code", "execution_count": 62, "id": "b0f73190", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: total: 2min\n", "Wall time: 2min 1s\n" ] } ], "source": [ "%%time\n", "corrs = train.corr()" ] }, { "cell_type": "code", "execution_count": 63, "id": "dd25563e", "metadata": {}, "outputs": [], "source": [ "corrs_sorted = corrs.sort_values(by='TARGET', ascending=False)" ] }, { "cell_type": "code", "execution_count": 64, "id": "c573e493", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "TARGET 1.000000\n", "bureau_DAYS_CREDIT_mean 0.089729\n", "BUREAU_MONTHS_BALANCE_MIN_MEAN 0.089038\n", "DAYS_BIRTH 0.078239\n", "bureau_CREDIT_ACTIVE_Active_mean 0.077356\n", "BUREAU_MONTHS_BALANCE_MEAN_MEAN 0.076424\n", "bureau_DAYS_CREDIT_min 0.075248\n", "BUREAU_MONTHS_BALANCE_MIN_MIN 0.073225\n", "BUREAU_MONTHS_BALANCE_SUM_MEAN 0.072606\n", "bureau_DAYS_CREDIT_UPDATE_mean 0.068927\n", "Name: TARGET, dtype: float64" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corrs_sorted['TARGET'].head(10)" ] }, { "cell_type": "code", "execution_count": 65, "id": "495ba1fe", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NAME_INCOME_TYPE_Pensioner -0.046209\n", "CODE_GENDER_F -0.054704\n", "BUREAU_STATUS_C_MEAN_MEAN -0.055936\n", "NAME_EDUCATION_TYPE_Higher education -0.056593\n", "BUREAU_STATUS_C_SUM_MAX -0.061083\n", "BUREAU_STATUS_C_SUM_MEAN -0.062954\n", "bureau_CREDIT_ACTIVE_Closed_mean -0.079369\n", "EXT_SOURCE_1 -0.155317\n", "EXT_SOURCE_2 -0.160472\n", "EXT_SOURCE_3 -0.178919\n", "Name: TARGET, dtype: float64" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corrs_sorted['TARGET'].tail(10)" ] }, { "cell_type": "markdown", "id": "b15f8ec9", "metadata": {}, "source": [ "可以看到,我们的一些新特征确实有更好的相关性" ] }, { "cell_type": "code", "execution_count": 66, "id": "643b2db5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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NI/ZGzpB0YnK/6t9+/YYMmQIrr76aixdujTgHF3R/UVfdAzBnrugoABdunSRZvOec8450u+zdevWgL83jeWi+9JJ10Oox+T/pdYJ+7///e+Bx3z66afDui/NhaW1onnPNCO7qKgIvXr1kubE0gjFPXv2hL32/l+eCzXR2tEoQdpGM6dDhW5L96E5rf4iKJQvNdm2bZs0XpIel17D0YDWjb48oxkZJhXg2cEME6e89NJLkvBoamqS/t+hQwcMGDAAFosFO3bswPr166U5nAMHDsTMmTNlJ16TyYTBgwcf+H9ZWZl0vy1btuDTTz+VhrNfccUVAY+B7k+Po4TSoHb/566rq5Oe/6effpK+6GR72mmn4ZlnnkF+fn5I60GD5kV45o726NFDElf+kHBuKSS0vWee0rzc2267TZqZGwgSdZdeeimWLVsm/T8tLU0SxOnp6dJ6zJ07V/p64oknpDUhkSX6Pa1WK5YvXy79TDNTs7OzZbcRbfMwZcoU6ZiXLFmCDRs2SHNqA0GvLbotccEFF8j204UIfcWKDz/8EG63W/qZXr80b3f06NGqPge9H4jzzz9fUcTS70ziPdBaM0wiwSKQYeKQu+++G6+99pokMkioXXfddejateuB/TS4niI/NEidRERNTY3sxEXih4bde0MRp+uvvx6//vqr9Bw0zN77cf157733JNESLqLn9ogiEiMvv/wyvvzyS6xYsQKzZs2SooXBED0e4fm9b7nlFknsRIM5c+Zg586dknhzOBxSJHPevHkYO3as4n1IrND6VlRUSAL1/vvvx3HHHecjqnft2iWJy1f+v717Cb1t/OM4vv5uKWSiMDBgxEQGLpFcB1JEbjFwCTGSdHLIJfeZQxS5CxNCbjEiRoSRu8JQFCFhoNS/11Pf4/mts9bea//29djfd+3O73d++7L2s571fT7P97Yeeqj5+OOPm8svv7x33HhSQ6yM+twuCKZDDjmkHJPxv/3220c+P7ynvM9HH330Dn83zubPIiDAn3/++e3nmqeOKJy1CBzCo48+uvDPTJJ5kuHgJFkxXnvttSIA8fDDD5fQY1uo7b777s0pp5zSvP76682DDz7Y7LHHHoPeW0j4iSeeaPbcc88iZrx+kRCUxMPbb79dFnSihMBddYgOnHHGGUXI1f/XxT///NNccsklRQASb++8805z1lln7eBV5Vm6/vrrizfz2GOPnet3CIH8wgsvlOMbdeyeU79mmbz77rtFLBPgEYY3b3mXkySZjhSByWC+/PLL5rLLLiuhpP3337856qijSn6X8GRNndfUR+QttXPK2q+1eJ533nnFkyInqJ3fZTGQZyZEE3lWwjnCRV388ccfZYG74ooriodDftYBBxxQ8oy2bNlSco+6iFy3Os9qHknjQl5CwLjggguaiy66aOxriI0DDzxw8GcIv0YYt+/7zpvDDjtse/iN5+vTTz9tVhWepzfffLP8bG7FOXnjjTea33//vfM1r776avP55583u+66axHd43LkzEHncZ44bsfzww8/FE9wHzyzclF322235sILL2xWSYBLIeBl/vPPP5tXXnll7LUkTcL3PvTQQ8vr2Ae5juzWjz/+uMEWBUR7ndvo76Ouce/l/xzbKNgczyP62zgWnmIbAWkfNmvHHXdcSROYhdit7Zdxeeyxx5rjjz++fA57ftVVVxWhXXu+zznnnObggw8uzzn99NOL53sUvPryjRUTWh/YVq/z2e28ZTgOc8148Gyz8c4R2+BaeP/993s/K86N9eKLL74oKRfOrdcfeeSRxbb8/fffU47aepAiMBmEQgLGU4I7wcFQffPNN0WwSG5nlGcNL9i5555bcpN4kA466KANOVIMhYccMwaF8eDdeuutt8qCIaeuDUN29dVXF28bQShExlhZGJ988snmhBNOGFk0MW/kfcnHQlsgz5LIM+RdWRbObeTwmVeryosvvlg2Oua8+SHE67j/+uuvEtLuIjxprhmL0ypgMec9xqiNSvzN95xFPuU0/Prrr+V6BjFHmJ5//vljPbHmNy+mfEZziyCQT7v33ns3n3zySbFbNpjhja3zMOWy+j0e43IfbUKlbRBO7EgXNgvxPdrC2utsSHn0v/vuu3KezDV2gAh0zvredzNIL9m6dWuZvyIMxliOsOKzX375pWxazj777LKJYRt32WWX5oMPPiiiMPJv2zj2k08+uYTtbZrM+X322ae8jqf/4osv3sH7bM1wLn2e72cjRJA6dzb3BOtTTz011kt86qmnFjFpzKSVfPvtt0W4X3nllTMbs/8yKQKTQdxzzz1lt/b1118XoyXRnXF10X300UfNbbfdNvOR9J533XVXMYw8F7xFDBFuuummYigIP54kF77cOLladrkS8O2s27tXu81nnnmm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.kdeplot(\n", " data = train,\n", " x = 'bureau_CREDIT_ACTIVE_Active_mean',\n", " hue = 'TARGET',\n", " common_norm = False\n", ")" ] }, { "cell_type": "markdown", "id": "67d245fc", "metadata": {}, "source": [ "好吧,目前看来没啥用" ] }, { "cell_type": "markdown", "id": "6b732af8", "metadata": {}, "source": [ "此外我们可以剔除一些高度相关变量" ] }, { "cell_type": "code", "execution_count": 67, "id": "cc64d7e8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRCNT_CHILDRENAMT_INCOME_TOTALAMT_CREDITAMT_ANNUITYAMT_GOODS_PRICEREGION_POPULATION_RELATIVEDAYS_BIRTHDAYS_EMPLOYEDDAYS_REGISTRATION...BUREAU_STATUS_C_SUM_SUMBUREAU_STATUS_X_MEAN_MINBUREAU_STATUS_X_MEAN_MAXBUREAU_STATUS_X_MEAN_MEANBUREAU_STATUS_X_MEAN_SUMBUREAU_STATUS_X_SUM_MINBUREAU_STATUS_X_SUM_MAXBUREAU_STATUS_X_SUM_MEANBUREAU_STATUS_X_SUM_SUMTARGET
SK_ID_CURR1.000000-0.001129-0.001820-0.000343-0.000433-0.0002320.000849-0.0015000.001366-0.000973...0.000252-0.0031020.0031640.0006890.001937-0.003786-0.002939-0.003459-0.000683-0.002108
CNT_CHILDREN-0.0011291.0000000.0128820.0021450.021374-0.001827-0.0255730.330938-0.2398180.183395...-0.005527-0.0011610.0050200.002323-0.001398-0.003052-0.003205-0.004988-0.0039570.019187
AMT_INCOME_TOTAL-0.0018200.0128821.0000000.1568700.1916570.1596100.0747960.027261-0.0642230.027805...0.024610-0.0316150.0741490.0201270.026904-0.0218760.0609250.0223790.024900-0.003982
AMT_CREDIT-0.0003430.0021450.1568701.0000000.7701380.9869680.099738-0.055436-0.0668380.009621...0.0236090.0033600.0238950.0196040.0151810.0145070.0385540.0366410.024139-0.030369
AMT_ANNUITY-0.0004330.0213740.1916570.7701381.0000000.7751090.1184290.009445-0.1043320.038514...0.101982-0.0061780.0194530.0076270.0769650.0092230.0366260.0300850.077655-0.012817
\n", "

5 rows × 418 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR CNT_CHILDREN AMT_INCOME_TOTAL AMT_CREDIT \\\n", "SK_ID_CURR 1.000000 -0.001129 -0.001820 -0.000343 \n", "CNT_CHILDREN -0.001129 1.000000 0.012882 0.002145 \n", "AMT_INCOME_TOTAL -0.001820 0.012882 1.000000 0.156870 \n", "AMT_CREDIT -0.000343 0.002145 0.156870 1.000000 \n", "AMT_ANNUITY -0.000433 0.021374 0.191657 0.770138 \n", "\n", " AMT_ANNUITY AMT_GOODS_PRICE REGION_POPULATION_RELATIVE \\\n", "SK_ID_CURR -0.000433 -0.000232 0.000849 \n", "CNT_CHILDREN 0.021374 -0.001827 -0.025573 \n", "AMT_INCOME_TOTAL 0.191657 0.159610 0.074796 \n", "AMT_CREDIT 0.770138 0.986968 0.099738 \n", "AMT_ANNUITY 1.000000 0.775109 0.118429 \n", "\n", " DAYS_BIRTH DAYS_EMPLOYED DAYS_REGISTRATION ... \\\n", "SK_ID_CURR -0.001500 0.001366 -0.000973 ... \n", "CNT_CHILDREN 0.330938 -0.239818 0.183395 ... \n", "AMT_INCOME_TOTAL 0.027261 -0.064223 0.027805 ... \n", "AMT_CREDIT -0.055436 -0.066838 0.009621 ... \n", "AMT_ANNUITY 0.009445 -0.104332 0.038514 ... \n", "\n", " BUREAU_STATUS_C_SUM_SUM BUREAU_STATUS_X_MEAN_MIN \\\n", "SK_ID_CURR 0.000252 -0.003102 \n", "CNT_CHILDREN -0.005527 -0.001161 \n", "AMT_INCOME_TOTAL 0.024610 -0.031615 \n", "AMT_CREDIT 0.023609 0.003360 \n", "AMT_ANNUITY 0.101982 -0.006178 \n", "\n", " BUREAU_STATUS_X_MEAN_MAX BUREAU_STATUS_X_MEAN_MEAN \\\n", "SK_ID_CURR 0.003164 0.000689 \n", "CNT_CHILDREN 0.005020 0.002323 \n", "AMT_INCOME_TOTAL 0.074149 0.020127 \n", "AMT_CREDIT 0.023895 0.019604 \n", "AMT_ANNUITY 0.019453 0.007627 \n", "\n", " BUREAU_STATUS_X_MEAN_SUM BUREAU_STATUS_X_SUM_MIN \\\n", "SK_ID_CURR 0.001937 -0.003786 \n", "CNT_CHILDREN -0.001398 -0.003052 \n", "AMT_INCOME_TOTAL 0.026904 -0.021876 \n", "AMT_CREDIT 0.015181 0.014507 \n", "AMT_ANNUITY 0.076965 0.009223 \n", "\n", " BUREAU_STATUS_X_SUM_MAX BUREAU_STATUS_X_SUM_MEAN \\\n", "SK_ID_CURR -0.002939 -0.003459 \n", "CNT_CHILDREN -0.003205 -0.004988 \n", "AMT_INCOME_TOTAL 0.060925 0.022379 \n", "AMT_CREDIT 0.038554 0.036641 \n", "AMT_ANNUITY 0.036626 0.030085 \n", "\n", " BUREAU_STATUS_X_SUM_SUM TARGET \n", "SK_ID_CURR -0.000683 -0.002108 \n", "CNT_CHILDREN -0.003957 0.019187 \n", "AMT_INCOME_TOTAL 0.024900 -0.003982 \n", "AMT_CREDIT 0.024139 -0.030369 \n", "AMT_ANNUITY 0.077655 -0.012817 \n", "\n", "[5 rows x 418 columns]" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corrs.head()" ] }, { "cell_type": "code", "execution_count": 68, "id": "c890f385", "metadata": {}, "outputs": [], "source": [ "corr_abs = corrs.abs()" ] }, { "cell_type": "code", "execution_count": 69, "id": "11840b5d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'SK_ID_CURR': [],\n", " 'CNT_CHILDREN': ['CNT_FAM_MEMBERS'],\n", " 'AMT_INCOME_TOTAL': [],\n", " 'AMT_CREDIT': ['AMT_GOODS_PRICE'],\n", " 'AMT_ANNUITY': [],\n", " 'AMT_GOODS_PRICE': ['AMT_CREDIT'],\n", " 'REGION_POPULATION_RELATIVE': [],\n", " 'DAYS_BIRTH': [],\n", " 'DAYS_EMPLOYED': ['FLAG_EMP_PHONE',\n", " 'NAME_INCOME_TYPE_Pensioner',\n", " 'ORGANIZATION_TYPE_XNA'],\n", " 'DAYS_REGISTRATION': [],\n", " 'DAYS_ID_PUBLISH': [],\n", " 'OWN_CAR_AGE': [],\n", " 'FLAG_MOBIL': [],\n", " 'FLAG_EMP_PHONE': ['DAYS_EMPLOYED',\n", " 'NAME_INCOME_TYPE_Pensioner',\n", " 'ORGANIZATION_TYPE_XNA'],\n", " 'FLAG_WORK_PHONE': [],\n", " 'FLAG_CONT_MOBILE': [],\n", " 'FLAG_PHONE': [],\n", " 'FLAG_EMAIL': [],\n", " 'CNT_FAM_MEMBERS': ['CNT_CHILDREN'],\n", " 'REGION_RATING_CLIENT': ['REGION_RATING_CLIENT_W_CITY'],\n", " 'REGION_RATING_CLIENT_W_CITY': ['REGION_RATING_CLIENT'],\n", " 'HOUR_APPR_PROCESS_START': [],\n", " 'REG_REGION_NOT_LIVE_REGION': [],\n", " 'REG_REGION_NOT_WORK_REGION': ['LIVE_REGION_NOT_WORK_REGION'],\n", " 'LIVE_REGION_NOT_WORK_REGION': ['REG_REGION_NOT_WORK_REGION'],\n", " 'REG_CITY_NOT_LIVE_CITY': [],\n", " 'REG_CITY_NOT_WORK_CITY': ['LIVE_CITY_NOT_WORK_CITY'],\n", " 'LIVE_CITY_NOT_WORK_CITY': ['REG_CITY_NOT_WORK_CITY'],\n", " 'EXT_SOURCE_1': [],\n", " 'EXT_SOURCE_2': [],\n", " 'EXT_SOURCE_3': [],\n", " 'APARTMENTS_AVG': ['ELEVATORS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'BASEMENTAREA_AVG': ['BASEMENTAREA_MODE', 'BASEMENTAREA_MEDI'],\n", " 'YEARS_BEGINEXPLUATATION_AVG': ['YEARS_BEGINEXPLUATATION_MODE',\n", " 'YEARS_BEGINEXPLUATATION_MEDI'],\n", " 'YEARS_BUILD_AVG': ['YEARS_BUILD_MODE', 'YEARS_BUILD_MEDI'],\n", " 'COMMONAREA_AVG': ['COMMONAREA_MODE', 'COMMONAREA_MEDI'],\n", " 'ELEVATORS_AVG': ['APARTMENTS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'ENTRANCES_AVG': ['ENTRANCES_MODE', 'ENTRANCES_MEDI'],\n", " 'FLOORSMAX_AVG': ['FLOORSMAX_MODE', 'FLOORSMAX_MEDI'],\n", " 'FLOORSMIN_AVG': ['FLOORSMIN_MODE', 'FLOORSMIN_MEDI'],\n", " 'LANDAREA_AVG': ['LANDAREA_MODE', 'LANDAREA_MEDI'],\n", " 'LIVINGAPARTMENTS_AVG': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'LIVINGAREA_AVG': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'APARTMENTS_MODE',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'NONLIVINGAPARTMENTS_AVG': ['NONLIVINGAPARTMENTS_MODE',\n", " 'NONLIVINGAPARTMENTS_MEDI'],\n", " 'NONLIVINGAREA_AVG': ['NONLIVINGAREA_MODE', 'NONLIVINGAREA_MEDI'],\n", " 'APARTMENTS_MODE': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'BASEMENTAREA_MODE': ['BASEMENTAREA_AVG', 'BASEMENTAREA_MEDI'],\n", " 'YEARS_BEGINEXPLUATATION_MODE': ['YEARS_BEGINEXPLUATATION_AVG',\n", " 'YEARS_BEGINEXPLUATATION_MEDI'],\n", " 'YEARS_BUILD_MODE': ['YEARS_BUILD_AVG', 'YEARS_BUILD_MEDI'],\n", " 'COMMONAREA_MODE': ['COMMONAREA_AVG', 'COMMONAREA_MEDI'],\n", " 'ELEVATORS_MODE': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'ENTRANCES_MODE': ['ENTRANCES_AVG', 'ENTRANCES_MEDI'],\n", " 'FLOORSMAX_MODE': ['FLOORSMAX_AVG', 'FLOORSMAX_MEDI'],\n", " 'FLOORSMIN_MODE': ['FLOORSMIN_AVG', 'FLOORSMIN_MEDI'],\n", " 'LANDAREA_MODE': ['LANDAREA_AVG', 'LANDAREA_MEDI'],\n", " 'LIVINGAPARTMENTS_MODE': ['APARTMENTS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'LIVINGAREA_MODE': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'NONLIVINGAPARTMENTS_MODE': ['NONLIVINGAPARTMENTS_AVG',\n", " 'NONLIVINGAPARTMENTS_MEDI'],\n", " 'NONLIVINGAREA_MODE': ['NONLIVINGAREA_AVG', 'NONLIVINGAREA_MEDI'],\n", " 'APARTMENTS_MEDI': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'BASEMENTAREA_MEDI': ['BASEMENTAREA_AVG', 'BASEMENTAREA_MODE'],\n", " 'YEARS_BEGINEXPLUATATION_MEDI': ['YEARS_BEGINEXPLUATATION_AVG',\n", " 'YEARS_BEGINEXPLUATATION_MODE'],\n", " 'YEARS_BUILD_MEDI': ['YEARS_BUILD_AVG', 'YEARS_BUILD_MODE'],\n", " 'COMMONAREA_MEDI': ['COMMONAREA_AVG', 'COMMONAREA_MODE'],\n", " 'ELEVATORS_MEDI': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'ENTRANCES_MEDI': ['ENTRANCES_AVG', 'ENTRANCES_MODE'],\n", " 'FLOORSMAX_MEDI': ['FLOORSMAX_AVG', 'FLOORSMAX_MODE'],\n", " 'FLOORSMIN_MEDI': ['FLOORSMIN_AVG', 'FLOORSMIN_MODE'],\n", " 'LANDAREA_MEDI': ['LANDAREA_AVG', 'LANDAREA_MODE'],\n", " 'LIVINGAPARTMENTS_MEDI': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'LIVINGAREA_MEDI': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'TOTALAREA_MODE'],\n", " 'NONLIVINGAPARTMENTS_MEDI': ['NONLIVINGAPARTMENTS_AVG',\n", " 'NONLIVINGAPARTMENTS_MODE'],\n", " 'NONLIVINGAREA_MEDI': ['NONLIVINGAREA_AVG', 'NONLIVINGAREA_MODE'],\n", " 'TOTALAREA_MODE': ['APARTMENTS_AVG',\n", " 'ELEVATORS_AVG',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'APARTMENTS_MODE',\n", " 'ELEVATORS_MODE',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'LIVINGAREA_MODE',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'LIVINGAREA_MEDI'],\n", " 'OBS_30_CNT_SOCIAL_CIRCLE': ['OBS_60_CNT_SOCIAL_CIRCLE'],\n", " 'DEF_30_CNT_SOCIAL_CIRCLE': ['DEF_60_CNT_SOCIAL_CIRCLE'],\n", " 'OBS_60_CNT_SOCIAL_CIRCLE': ['OBS_30_CNT_SOCIAL_CIRCLE'],\n", " 'DEF_60_CNT_SOCIAL_CIRCLE': ['DEF_30_CNT_SOCIAL_CIRCLE'],\n", " 'DAYS_LAST_PHONE_CHANGE': [],\n", " 'FLAG_DOCUMENT_2': [],\n", " 'FLAG_DOCUMENT_3': [],\n", " 'FLAG_DOCUMENT_4': [],\n", " 'FLAG_DOCUMENT_5': [],\n", " 'FLAG_DOCUMENT_6': [],\n", " 'FLAG_DOCUMENT_7': [],\n", " 'FLAG_DOCUMENT_8': [],\n", " 'FLAG_DOCUMENT_9': [],\n", " 'FLAG_DOCUMENT_10': [],\n", " 'FLAG_DOCUMENT_11': [],\n", " 'FLAG_DOCUMENT_12': [],\n", " 'FLAG_DOCUMENT_13': [],\n", " 'FLAG_DOCUMENT_14': [],\n", " 'FLAG_DOCUMENT_15': [],\n", " 'FLAG_DOCUMENT_16': [],\n", " 'FLAG_DOCUMENT_17': [],\n", " 'FLAG_DOCUMENT_18': [],\n", " 'FLAG_DOCUMENT_19': [],\n", " 'FLAG_DOCUMENT_20': [],\n", " 'FLAG_DOCUMENT_21': [],\n", " 'AMT_REQ_CREDIT_BUREAU_HOUR': [],\n", " 'AMT_REQ_CREDIT_BUREAU_DAY': [],\n", " 'AMT_REQ_CREDIT_BUREAU_WEEK': [],\n", " 'AMT_REQ_CREDIT_BUREAU_MON': [],\n", " 'AMT_REQ_CREDIT_BUREAU_QRT': [],\n", " 'AMT_REQ_CREDIT_BUREAU_YEAR': [],\n", " 'NAME_CONTRACT_TYPE_Cash loans': [],\n", " 'NAME_CONTRACT_TYPE_Revolving loans': [],\n", " 'CODE_GENDER_F': ['CODE_GENDER_M'],\n", " 'CODE_GENDER_M': ['CODE_GENDER_F'],\n", " 'FLAG_OWN_CAR_N': [],\n", " 'FLAG_OWN_CAR_Y': [],\n", " 'FLAG_OWN_REALTY_N': ['FLAG_OWN_REALTY_Y'],\n", " 'FLAG_OWN_REALTY_Y': ['FLAG_OWN_REALTY_N'],\n", " 'NAME_TYPE_SUITE_Children': [],\n", " 'NAME_TYPE_SUITE_Family': [],\n", " 'NAME_TYPE_SUITE_Group of people': [],\n", " 'NAME_TYPE_SUITE_Other_A': [],\n", " 'NAME_TYPE_SUITE_Other_B': [],\n", " 'NAME_TYPE_SUITE_Spouse, partner': [],\n", " 'NAME_TYPE_SUITE_Unaccompanied': [],\n", " 'NAME_INCOME_TYPE_Businessman': [],\n", " 'NAME_INCOME_TYPE_Commercial associate': [],\n", " 'NAME_INCOME_TYPE_Pensioner': ['DAYS_EMPLOYED',\n", " 'FLAG_EMP_PHONE',\n", " 'ORGANIZATION_TYPE_XNA'],\n", " 'NAME_INCOME_TYPE_State servant': [],\n", " 'NAME_INCOME_TYPE_Student': [],\n", " 'NAME_INCOME_TYPE_Unemployed': [],\n", " 'NAME_INCOME_TYPE_Working': [],\n", " 'NAME_EDUCATION_TYPE_Academic degree': [],\n", " 'NAME_EDUCATION_TYPE_Higher education': ['NAME_EDUCATION_TYPE_Secondary / secondary special'],\n", " 'NAME_EDUCATION_TYPE_Incomplete higher': [],\n", " 'NAME_EDUCATION_TYPE_Lower secondary': [],\n", " 'NAME_EDUCATION_TYPE_Secondary / secondary special': ['NAME_EDUCATION_TYPE_Higher education'],\n", " 'NAME_FAMILY_STATUS_Civil marriage': [],\n", " 'NAME_FAMILY_STATUS_Married': [],\n", " 'NAME_FAMILY_STATUS_Separated': [],\n", " 'NAME_FAMILY_STATUS_Single / not married': [],\n", " 'NAME_FAMILY_STATUS_Widow': [],\n", " 'NAME_HOUSING_TYPE_Co-op apartment': [],\n", " 'NAME_HOUSING_TYPE_House / apartment': [],\n", " 'NAME_HOUSING_TYPE_Municipal apartment': [],\n", " 'NAME_HOUSING_TYPE_Office apartment': [],\n", " 'NAME_HOUSING_TYPE_Rented apartment': [],\n", " 'NAME_HOUSING_TYPE_With parents': [],\n", " 'OCCUPATION_TYPE_Accountants': [],\n", " 'OCCUPATION_TYPE_Cleaning staff': [],\n", " 'OCCUPATION_TYPE_Cooking staff': [],\n", " 'OCCUPATION_TYPE_Core staff': [],\n", " 'OCCUPATION_TYPE_Drivers': [],\n", " 'OCCUPATION_TYPE_HR staff': [],\n", " 'OCCUPATION_TYPE_High skill tech staff': [],\n", " 'OCCUPATION_TYPE_IT staff': [],\n", " 'OCCUPATION_TYPE_Laborers': [],\n", " 'OCCUPATION_TYPE_Low-skill Laborers': [],\n", " 'OCCUPATION_TYPE_Managers': [],\n", " 'OCCUPATION_TYPE_Medicine staff': [],\n", " 'OCCUPATION_TYPE_Private service staff': [],\n", " 'OCCUPATION_TYPE_Realty agents': [],\n", " 'OCCUPATION_TYPE_Sales staff': [],\n", " 'OCCUPATION_TYPE_Secretaries': [],\n", " 'OCCUPATION_TYPE_Security staff': [],\n", " 'OCCUPATION_TYPE_Waiters/barmen staff': [],\n", " 'WEEKDAY_APPR_PROCESS_START_FRIDAY': [],\n", " 'WEEKDAY_APPR_PROCESS_START_MONDAY': [],\n", " 'WEEKDAY_APPR_PROCESS_START_SATURDAY': [],\n", " 'WEEKDAY_APPR_PROCESS_START_SUNDAY': [],\n", " 'WEEKDAY_APPR_PROCESS_START_THURSDAY': [],\n", " 'WEEKDAY_APPR_PROCESS_START_TUESDAY': [],\n", " 'WEEKDAY_APPR_PROCESS_START_WEDNESDAY': [],\n", " 'ORGANIZATION_TYPE_Advertising': [],\n", " 'ORGANIZATION_TYPE_Agriculture': [],\n", " 'ORGANIZATION_TYPE_Bank': [],\n", " 'ORGANIZATION_TYPE_Business Entity Type 1': [],\n", " 'ORGANIZATION_TYPE_Business Entity Type 2': [],\n", " 'ORGANIZATION_TYPE_Business Entity Type 3': [],\n", " 'ORGANIZATION_TYPE_Cleaning': [],\n", " 'ORGANIZATION_TYPE_Construction': [],\n", " 'ORGANIZATION_TYPE_Culture': [],\n", " 'ORGANIZATION_TYPE_Electricity': [],\n", " 'ORGANIZATION_TYPE_Emergency': [],\n", " 'ORGANIZATION_TYPE_Government': [],\n", " 'ORGANIZATION_TYPE_Hotel': [],\n", " 'ORGANIZATION_TYPE_Housing': [],\n", " 'ORGANIZATION_TYPE_Industry: type 1': [],\n", " 'ORGANIZATION_TYPE_Industry: type 10': [],\n", " 'ORGANIZATION_TYPE_Industry: type 11': [],\n", " 'ORGANIZATION_TYPE_Industry: type 12': [],\n", " 'ORGANIZATION_TYPE_Industry: type 13': [],\n", " 'ORGANIZATION_TYPE_Industry: type 2': [],\n", " 'ORGANIZATION_TYPE_Industry: type 3': [],\n", " 'ORGANIZATION_TYPE_Industry: type 4': [],\n", " 'ORGANIZATION_TYPE_Industry: type 5': [],\n", " 'ORGANIZATION_TYPE_Industry: type 6': [],\n", " 'ORGANIZATION_TYPE_Industry: type 7': [],\n", " 'ORGANIZATION_TYPE_Industry: type 8': [],\n", " 'ORGANIZATION_TYPE_Industry: type 9': [],\n", " 'ORGANIZATION_TYPE_Insurance': [],\n", " 'ORGANIZATION_TYPE_Kindergarten': [],\n", " 'ORGANIZATION_TYPE_Legal Services': [],\n", " 'ORGANIZATION_TYPE_Medicine': [],\n", " 'ORGANIZATION_TYPE_Military': [],\n", " 'ORGANIZATION_TYPE_Mobile': [],\n", " 'ORGANIZATION_TYPE_Other': [],\n", " 'ORGANIZATION_TYPE_Police': [],\n", " 'ORGANIZATION_TYPE_Postal': [],\n", " 'ORGANIZATION_TYPE_Realtor': [],\n", " 'ORGANIZATION_TYPE_Religion': [],\n", " 'ORGANIZATION_TYPE_Restaurant': [],\n", " 'ORGANIZATION_TYPE_School': [],\n", " 'ORGANIZATION_TYPE_Security': [],\n", " 'ORGANIZATION_TYPE_Security Ministries': [],\n", " 'ORGANIZATION_TYPE_Self-employed': [],\n", " 'ORGANIZATION_TYPE_Services': [],\n", " 'ORGANIZATION_TYPE_Telecom': [],\n", " 'ORGANIZATION_TYPE_Trade: type 1': [],\n", " 'ORGANIZATION_TYPE_Trade: type 2': [],\n", " 'ORGANIZATION_TYPE_Trade: type 3': [],\n", " 'ORGANIZATION_TYPE_Trade: type 4': [],\n", " 'ORGANIZATION_TYPE_Trade: type 5': [],\n", " 'ORGANIZATION_TYPE_Trade: type 6': [],\n", " 'ORGANIZATION_TYPE_Trade: type 7': [],\n", " 'ORGANIZATION_TYPE_Transport: type 1': [],\n", " 'ORGANIZATION_TYPE_Transport: type 2': [],\n", " 'ORGANIZATION_TYPE_Transport: type 3': [],\n", " 'ORGANIZATION_TYPE_Transport: type 4': [],\n", " 'ORGANIZATION_TYPE_University': [],\n", " 'ORGANIZATION_TYPE_XNA': ['DAYS_EMPLOYED',\n", " 'FLAG_EMP_PHONE',\n", " 'NAME_INCOME_TYPE_Pensioner'],\n", " 'FONDKAPREMONT_MODE_not specified': [],\n", " 'FONDKAPREMONT_MODE_org spec account': [],\n", " 'FONDKAPREMONT_MODE_reg oper account': [],\n", " 'FONDKAPREMONT_MODE_reg oper spec account': [],\n", " 'HOUSETYPE_MODE_block of flats': ['EMERGENCYSTATE_MODE_No'],\n", " 'HOUSETYPE_MODE_specific housing': [],\n", " 'HOUSETYPE_MODE_terraced house': [],\n", " 'WALLSMATERIAL_MODE_Block': [],\n", " 'WALLSMATERIAL_MODE_Mixed': [],\n", " 'WALLSMATERIAL_MODE_Monolithic': [],\n", " 'WALLSMATERIAL_MODE_Others': [],\n", " 'WALLSMATERIAL_MODE_Panel': [],\n", " 'WALLSMATERIAL_MODE_Stone, brick': [],\n", " 'WALLSMATERIAL_MODE_Wooden': [],\n", " 'EMERGENCYSTATE_MODE_No': ['HOUSETYPE_MODE_block of flats'],\n", " 'EMERGENCYSTATE_MODE_Yes': [],\n", " 'bureau_CREDIT_ACTIVE_Active_sum': [],\n", " 'bureau_CREDIT_ACTIVE_Active_mean': ['bureau_CREDIT_ACTIVE_Closed_mean'],\n", " 'bureau_CREDIT_ACTIVE_Bad debt_sum': ['bureau_CREDIT_ACTIVE_Bad debt_mean'],\n", " 'bureau_CREDIT_ACTIVE_Bad debt_mean': ['bureau_CREDIT_ACTIVE_Bad debt_sum'],\n", " 'bureau_CREDIT_ACTIVE_Closed_sum': ['bureau_CREDIT_CURRENCY_currency 1_sum',\n", " 'bureau_CREDIT_TYPE_Consumer credit_sum',\n", " 'bureau_previous_loan_counts',\n", " 'bureau_DAYS_CREDIT_sum',\n", " 'bureau_DAYS_ENDDATE_FACT_sum',\n", " 'bureau_DAYS_CREDIT_UPDATE_sum'],\n", " 'bureau_CREDIT_ACTIVE_Closed_mean': ['bureau_CREDIT_ACTIVE_Active_mean'],\n", " 'bureau_CREDIT_ACTIVE_Sold_sum': [],\n", " 'bureau_CREDIT_ACTIVE_Sold_mean': [],\n", " 'bureau_CREDIT_CURRENCY_currency 1_sum': ['bureau_CREDIT_ACTIVE_Closed_sum',\n", " 'bureau_CREDIT_TYPE_Consumer credit_sum',\n", " 'bureau_previous_loan_counts',\n", " 'bureau_DAYS_CREDIT_sum',\n", " 'bureau_DAYS_ENDDATE_FACT_sum'],\n", " 'bureau_CREDIT_CURRENCY_currency 1_mean': ['bureau_CREDIT_CURRENCY_currency 2_mean'],\n", " 'bureau_CREDIT_CURRENCY_currency 2_sum': [],\n", " 'bureau_CREDIT_CURRENCY_currency 2_mean': ['bureau_CREDIT_CURRENCY_currency 1_mean'],\n", " 'bureau_CREDIT_CURRENCY_currency 3_sum': [],\n", " 'bureau_CREDIT_CURRENCY_currency 3_mean': [],\n", " 'bureau_CREDIT_CURRENCY_currency 4_sum': ['bureau_CREDIT_CURRENCY_currency 4_mean'],\n", " 'bureau_CREDIT_CURRENCY_currency 4_mean': ['bureau_CREDIT_CURRENCY_currency 4_sum'],\n", " 'bureau_CREDIT_TYPE_Another type of loan_sum': [],\n", " 'bureau_CREDIT_TYPE_Another type of loan_mean': [],\n", " 'bureau_CREDIT_TYPE_Car loan_sum': [],\n", " 'bureau_CREDIT_TYPE_Car loan_mean': [],\n", " 'bureau_CREDIT_TYPE_Cash loan (non-earmarked)_sum': ['bureau_CREDIT_TYPE_Cash loan (non-earmarked)_mean'],\n", " 'bureau_CREDIT_TYPE_Cash loan (non-earmarked)_mean': ['bureau_CREDIT_TYPE_Cash loan (non-earmarked)_sum'],\n", " 'bureau_CREDIT_TYPE_Consumer credit_sum': ['bureau_CREDIT_ACTIVE_Closed_sum',\n", " 'bureau_CREDIT_CURRENCY_currency 1_sum',\n", " 'bureau_previous_loan_counts',\n", " 'bureau_DAYS_CREDIT_sum',\n", " 'bureau_DAYS_ENDDATE_FACT_sum'],\n", " 'bureau_CREDIT_TYPE_Consumer credit_mean': ['bureau_CREDIT_TYPE_Credit card_mean'],\n", " 'bureau_CREDIT_TYPE_Credit card_sum': [],\n", " 'bureau_CREDIT_TYPE_Credit card_mean': ['bureau_CREDIT_TYPE_Consumer credit_mean'],\n", " 'bureau_CREDIT_TYPE_Interbank credit_sum': ['bureau_CREDIT_TYPE_Interbank credit_mean'],\n", " 'bureau_CREDIT_TYPE_Interbank credit_mean': ['bureau_CREDIT_TYPE_Interbank credit_sum'],\n", " 'bureau_CREDIT_TYPE_Loan for business development_sum': [],\n", " 'bureau_CREDIT_TYPE_Loan for business development_mean': [],\n", " 'bureau_CREDIT_TYPE_Loan for purchase of shares (margin lending)_sum': ['bureau_CREDIT_TYPE_Loan for purchase of shares (margin lending)_mean'],\n", " 'bureau_CREDIT_TYPE_Loan for purchase of shares (margin lending)_mean': ['bureau_CREDIT_TYPE_Loan for purchase of shares (margin lending)_sum'],\n", " 'bureau_CREDIT_TYPE_Loan for the purchase of equipment_sum': [],\n", " 'bureau_CREDIT_TYPE_Loan for the purchase of equipment_mean': [],\n", " 'bureau_CREDIT_TYPE_Loan for working capital replenishment_sum': [],\n", " 'bureau_CREDIT_TYPE_Loan for working capital replenishment_mean': [],\n", " 'bureau_CREDIT_TYPE_Microloan_sum': [],\n", " 'bureau_CREDIT_TYPE_Microloan_mean': [],\n", " 'bureau_CREDIT_TYPE_Mobile operator loan_sum': [],\n", " 'bureau_CREDIT_TYPE_Mobile operator loan_mean': [],\n", " 'bureau_CREDIT_TYPE_Mortgage_sum': [],\n", " 'bureau_CREDIT_TYPE_Mortgage_mean': [],\n", " 'bureau_CREDIT_TYPE_Real estate loan_sum': [],\n", " 'bureau_CREDIT_TYPE_Real estate loan_mean': [],\n", " 'bureau_CREDIT_TYPE_Unknown type of loan_sum': [],\n", " 'bureau_CREDIT_TYPE_Unknown type of loan_mean': [],\n", " 'bureau_previous_loan_counts': ['bureau_CREDIT_ACTIVE_Closed_sum',\n", " 'bureau_CREDIT_CURRENCY_currency 1_sum',\n", " 'bureau_CREDIT_TYPE_Consumer credit_sum',\n", " 'bureau_DAYS_CREDIT_sum',\n", " 'bureau_DAYS_ENDDATE_FACT_sum'],\n", " 'bureau_DAYS_CREDIT_min': ['bureau_DAYS_CREDIT_mean',\n", " 'bureau_DAYS_ENDDATE_FACT_min',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MIN',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MIN',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MIN'],\n", " 'bureau_DAYS_CREDIT_mean': ['bureau_DAYS_CREDIT_min',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MEAN',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MEAN',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MEAN'],\n", " 'bureau_DAYS_CREDIT_max': ['BUREAU_MONTHS_BALANCE_MIN_MAX',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MAX',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MAX'],\n", " 'bureau_DAYS_CREDIT_sum': ['bureau_CREDIT_ACTIVE_Closed_sum',\n", " 'bureau_CREDIT_CURRENCY_currency 1_sum',\n", " 'bureau_CREDIT_TYPE_Consumer credit_sum',\n", " 'bureau_previous_loan_counts',\n", " 'bureau_DAYS_ENDDATE_FACT_sum',\n", " 'bureau_DAYS_CREDIT_UPDATE_sum'],\n", " 'bureau_CREDIT_DAY_OVERDUE_min': [],\n", " 'bureau_CREDIT_DAY_OVERDUE_mean': [],\n", " 'bureau_CREDIT_DAY_OVERDUE_max': ['bureau_CREDIT_DAY_OVERDUE_sum'],\n", " 'bureau_CREDIT_DAY_OVERDUE_sum': ['bureau_CREDIT_DAY_OVERDUE_max'],\n", " 'bureau_DAYS_CREDIT_ENDDATE_min': [],\n", " 'bureau_DAYS_CREDIT_ENDDATE_mean': [],\n", " 'bureau_DAYS_CREDIT_ENDDATE_max': ['bureau_DAYS_CREDIT_ENDDATE_sum'],\n", " 'bureau_DAYS_CREDIT_ENDDATE_sum': ['bureau_DAYS_CREDIT_ENDDATE_max'],\n", " 'bureau_DAYS_ENDDATE_FACT_min': ['bureau_DAYS_CREDIT_min',\n", " 'bureau_DAYS_ENDDATE_FACT_mean',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MIN'],\n", " 'bureau_DAYS_ENDDATE_FACT_mean': ['bureau_DAYS_ENDDATE_FACT_min'],\n", " 'bureau_DAYS_ENDDATE_FACT_max': [],\n", " 'bureau_DAYS_ENDDATE_FACT_sum': ['bureau_CREDIT_ACTIVE_Closed_sum',\n", " 'bureau_CREDIT_CURRENCY_currency 1_sum',\n", " 'bureau_CREDIT_TYPE_Consumer credit_sum',\n", " 'bureau_previous_loan_counts',\n", " 'bureau_DAYS_CREDIT_sum',\n", " 'bureau_DAYS_CREDIT_UPDATE_sum'],\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_min': ['bureau_AMT_CREDIT_MAX_OVERDUE_mean'],\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_mean': ['bureau_AMT_CREDIT_MAX_OVERDUE_min',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_max',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_sum'],\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_max': ['bureau_AMT_CREDIT_MAX_OVERDUE_mean',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_sum'],\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_sum': ['bureau_AMT_CREDIT_MAX_OVERDUE_mean',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_max'],\n", " 'bureau_CNT_CREDIT_PROLONG_min': [],\n", " 'bureau_CNT_CREDIT_PROLONG_mean': [],\n", " 'bureau_CNT_CREDIT_PROLONG_max': ['bureau_CNT_CREDIT_PROLONG_sum'],\n", " 'bureau_CNT_CREDIT_PROLONG_sum': ['bureau_CNT_CREDIT_PROLONG_max'],\n", " 'bureau_AMT_CREDIT_SUM_min': [],\n", " 'bureau_AMT_CREDIT_SUM_mean': ['bureau_AMT_CREDIT_SUM_max'],\n", " 'bureau_AMT_CREDIT_SUM_max': ['bureau_AMT_CREDIT_SUM_mean',\n", " 'bureau_AMT_CREDIT_SUM_sum'],\n", " 'bureau_AMT_CREDIT_SUM_sum': ['bureau_AMT_CREDIT_SUM_max'],\n", " 'bureau_AMT_CREDIT_SUM_DEBT_min': [],\n", " 'bureau_AMT_CREDIT_SUM_DEBT_mean': [],\n", " 'bureau_AMT_CREDIT_SUM_DEBT_max': ['bureau_AMT_CREDIT_SUM_DEBT_sum'],\n", " 'bureau_AMT_CREDIT_SUM_DEBT_sum': ['bureau_AMT_CREDIT_SUM_DEBT_max'],\n", " 'bureau_AMT_CREDIT_SUM_LIMIT_min': [],\n", " 'bureau_AMT_CREDIT_SUM_LIMIT_mean': [],\n", " 'bureau_AMT_CREDIT_SUM_LIMIT_max': ['bureau_AMT_CREDIT_SUM_LIMIT_sum'],\n", " 'bureau_AMT_CREDIT_SUM_LIMIT_sum': ['bureau_AMT_CREDIT_SUM_LIMIT_max'],\n", " 'bureau_AMT_CREDIT_SUM_OVERDUE_min': [],\n", " 'bureau_AMT_CREDIT_SUM_OVERDUE_mean': [],\n", " 'bureau_AMT_CREDIT_SUM_OVERDUE_max': ['bureau_AMT_CREDIT_SUM_OVERDUE_sum'],\n", " 'bureau_AMT_CREDIT_SUM_OVERDUE_sum': ['bureau_AMT_CREDIT_SUM_OVERDUE_max'],\n", " 'bureau_DAYS_CREDIT_UPDATE_min': [],\n", " 'bureau_DAYS_CREDIT_UPDATE_mean': [],\n", " 'bureau_DAYS_CREDIT_UPDATE_max': [],\n", " 'bureau_DAYS_CREDIT_UPDATE_sum': ['bureau_CREDIT_ACTIVE_Closed_sum',\n", " 'bureau_DAYS_CREDIT_sum',\n", " 'bureau_DAYS_ENDDATE_FACT_sum'],\n", " 'bureau_AMT_ANNUITY_min': [],\n", " 'bureau_AMT_ANNUITY_mean': [],\n", " 'bureau_AMT_ANNUITY_max': ['bureau_AMT_ANNUITY_sum'],\n", " 'bureau_AMT_ANNUITY_sum': ['bureau_AMT_ANNUITY_max'],\n", " 'BUREAU_MONTHS_BALANCE_MIN_MIN': ['bureau_DAYS_CREDIT_min',\n", " 'bureau_DAYS_ENDDATE_FACT_min',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MIN',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MIN'],\n", " 'BUREAU_MONTHS_BALANCE_MIN_MAX': ['bureau_DAYS_CREDIT_max',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MAX',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MAX'],\n", " 'BUREAU_MONTHS_BALANCE_MIN_MEAN': ['bureau_DAYS_CREDIT_mean',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MEAN',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MEAN'],\n", " 'BUREAU_MONTHS_BALANCE_MIN_SUM': ['BUREAU_MONTHS_BALANCE_MEAN_SUM',\n", " 'BUREAU_MONTHS_BALANCE_SUM_SUM',\n", " 'BUREAU_STATUS_0_SUM_SUM',\n", " 'BUREAU_STATUS_C_MEAN_SUM',\n", " 'BUREAU_STATUS_C_SUM_SUM'],\n", " 'BUREAU_MONTHS_BALANCE_MAX_MIN': ['BUREAU_MONTHS_BALANCE_MAX_MEAN',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MIN'],\n", " 'BUREAU_MONTHS_BALANCE_MAX_MAX': [],\n", " 'BUREAU_MONTHS_BALANCE_MAX_MEAN': ['BUREAU_MONTHS_BALANCE_MAX_MIN'],\n", " 'BUREAU_MONTHS_BALANCE_MAX_SUM': ['BUREAU_MONTHS_BALANCE_MEAN_SUM'],\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MIN': ['bureau_DAYS_CREDIT_min',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MIN',\n", " 'BUREAU_MONTHS_BALANCE_MAX_MIN'],\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MAX': ['bureau_DAYS_CREDIT_max',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MAX',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MAX'],\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MEAN': ['bureau_DAYS_CREDIT_mean',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MEAN'],\n", " 'BUREAU_MONTHS_BALANCE_MEAN_SUM': ['BUREAU_MONTHS_BALANCE_MIN_SUM',\n", " 'BUREAU_MONTHS_BALANCE_MAX_SUM',\n", " 'BUREAU_MONTHS_BALANCE_SUM_SUM'],\n", " 'BUREAU_MONTHS_BALANCE_SUM_MIN': ['bureau_DAYS_CREDIT_min',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MIN',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MEAN'],\n", " 'BUREAU_MONTHS_BALANCE_SUM_MAX': ['bureau_DAYS_CREDIT_max',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MAX',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MAX'],\n", " 'BUREAU_MONTHS_BALANCE_SUM_MEAN': ['bureau_DAYS_CREDIT_mean',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MEAN',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MIN'],\n", " 'BUREAU_MONTHS_BALANCE_SUM_SUM': ['BUREAU_MONTHS_BALANCE_MIN_SUM',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_SUM',\n", " 'BUREAU_STATUS_C_SUM_SUM'],\n", " 'BUREAU_STATUS_0_MEAN_MIN': [],\n", " 'BUREAU_STATUS_0_MEAN_MAX': [],\n", " 'BUREAU_STATUS_0_MEAN_MEAN': [],\n", " 'BUREAU_STATUS_0_MEAN_SUM': ['BUREAU_STATUS_0_SUM_SUM'],\n", " 'BUREAU_STATUS_0_SUM_MIN': [],\n", " 'BUREAU_STATUS_0_SUM_MAX': [],\n", " 'BUREAU_STATUS_0_SUM_MEAN': [],\n", " 'BUREAU_STATUS_0_SUM_SUM': ['BUREAU_MONTHS_BALANCE_MIN_SUM',\n", " 'BUREAU_STATUS_0_MEAN_SUM'],\n", " 'BUREAU_STATUS_1_MEAN_MIN': [],\n", " 'BUREAU_STATUS_1_MEAN_MAX': ['BUREAU_STATUS_1_MEAN_SUM'],\n", " 'BUREAU_STATUS_1_MEAN_MEAN': [],\n", " 'BUREAU_STATUS_1_MEAN_SUM': ['BUREAU_STATUS_1_MEAN_MAX',\n", " 'BUREAU_STATUS_1_SUM_SUM'],\n", " 'BUREAU_STATUS_1_SUM_MIN': [],\n", " 'BUREAU_STATUS_1_SUM_MAX': ['BUREAU_STATUS_1_SUM_SUM'],\n", " 'BUREAU_STATUS_1_SUM_MEAN': [],\n", " 'BUREAU_STATUS_1_SUM_SUM': ['BUREAU_STATUS_1_MEAN_SUM',\n", " 'BUREAU_STATUS_1_SUM_MAX'],\n", " 'BUREAU_STATUS_2_MEAN_MIN': [],\n", " 'BUREAU_STATUS_2_MEAN_MAX': ['BUREAU_STATUS_2_MEAN_MEAN',\n", " 'BUREAU_STATUS_2_MEAN_SUM'],\n", " 'BUREAU_STATUS_2_MEAN_MEAN': ['BUREAU_STATUS_2_MEAN_MAX'],\n", " 'BUREAU_STATUS_2_MEAN_SUM': ['BUREAU_STATUS_2_MEAN_MAX',\n", " 'BUREAU_STATUS_2_SUM_SUM'],\n", " 'BUREAU_STATUS_2_SUM_MIN': [],\n", " 'BUREAU_STATUS_2_SUM_MAX': ['BUREAU_STATUS_2_SUM_SUM'],\n", " 'BUREAU_STATUS_2_SUM_MEAN': [],\n", " 'BUREAU_STATUS_2_SUM_SUM': ['BUREAU_STATUS_2_MEAN_SUM',\n", " 'BUREAU_STATUS_2_SUM_MAX'],\n", " 'BUREAU_STATUS_3_MEAN_MIN': [],\n", " 'BUREAU_STATUS_3_MEAN_MAX': ['BUREAU_STATUS_3_MEAN_MEAN',\n", " 'BUREAU_STATUS_3_MEAN_SUM'],\n", " 'BUREAU_STATUS_3_MEAN_MEAN': ['BUREAU_STATUS_3_MEAN_MAX'],\n", " 'BUREAU_STATUS_3_MEAN_SUM': ['BUREAU_STATUS_3_MEAN_MAX',\n", " 'BUREAU_STATUS_3_SUM_SUM'],\n", " 'BUREAU_STATUS_3_SUM_MIN': [],\n", " 'BUREAU_STATUS_3_SUM_MAX': ['BUREAU_STATUS_3_SUM_SUM'],\n", " 'BUREAU_STATUS_3_SUM_MEAN': [],\n", " 'BUREAU_STATUS_3_SUM_SUM': ['BUREAU_STATUS_3_MEAN_SUM',\n", " 'BUREAU_STATUS_3_SUM_MAX'],\n", " 'BUREAU_STATUS_4_MEAN_MIN': [],\n", " 'BUREAU_STATUS_4_MEAN_MAX': ['BUREAU_STATUS_4_MEAN_MEAN',\n", " 'BUREAU_STATUS_4_MEAN_SUM'],\n", " 'BUREAU_STATUS_4_MEAN_MEAN': ['BUREAU_STATUS_4_MEAN_MAX',\n", " 'BUREAU_STATUS_4_SUM_MEAN'],\n", " 'BUREAU_STATUS_4_MEAN_SUM': ['BUREAU_STATUS_4_MEAN_MAX',\n", " 'BUREAU_STATUS_4_SUM_SUM'],\n", " 'BUREAU_STATUS_4_SUM_MIN': [],\n", " 'BUREAU_STATUS_4_SUM_MAX': [],\n", " 'BUREAU_STATUS_4_SUM_MEAN': ['BUREAU_STATUS_4_MEAN_MEAN'],\n", " 'BUREAU_STATUS_4_SUM_SUM': ['BUREAU_STATUS_4_MEAN_SUM'],\n", " 'BUREAU_STATUS_5_MEAN_MIN': ['BUREAU_STATUS_5_SUM_MIN'],\n", " 'BUREAU_STATUS_5_MEAN_MAX': ['BUREAU_STATUS_5_SUM_MAX'],\n", " 'BUREAU_STATUS_5_MEAN_MEAN': ['BUREAU_STATUS_5_SUM_MEAN'],\n", " 'BUREAU_STATUS_5_MEAN_SUM': ['BUREAU_STATUS_5_SUM_SUM'],\n", " 'BUREAU_STATUS_5_SUM_MIN': ['BUREAU_STATUS_5_MEAN_MIN'],\n", " 'BUREAU_STATUS_5_SUM_MAX': ['BUREAU_STATUS_5_MEAN_MAX',\n", " 'BUREAU_STATUS_5_SUM_SUM'],\n", " 'BUREAU_STATUS_5_SUM_MEAN': ['BUREAU_STATUS_5_MEAN_MEAN'],\n", " 'BUREAU_STATUS_5_SUM_SUM': ['BUREAU_STATUS_5_MEAN_SUM',\n", " 'BUREAU_STATUS_5_SUM_MAX'],\n", " 'BUREAU_STATUS_C_MEAN_MIN': ['BUREAU_STATUS_C_SUM_MIN'],\n", " 'BUREAU_STATUS_C_MEAN_MAX': [],\n", " 'BUREAU_STATUS_C_MEAN_MEAN': ['BUREAU_STATUS_C_SUM_MEAN'],\n", " 'BUREAU_STATUS_C_MEAN_SUM': ['BUREAU_MONTHS_BALANCE_MIN_SUM',\n", " 'BUREAU_STATUS_C_SUM_SUM'],\n", " 'BUREAU_STATUS_C_SUM_MIN': ['BUREAU_STATUS_C_MEAN_MIN'],\n", " 'BUREAU_STATUS_C_SUM_MAX': [],\n", " 'BUREAU_STATUS_C_SUM_MEAN': ['BUREAU_STATUS_C_MEAN_MEAN'],\n", " 'BUREAU_STATUS_C_SUM_SUM': ['BUREAU_MONTHS_BALANCE_MIN_SUM',\n", " 'BUREAU_MONTHS_BALANCE_SUM_SUM',\n", " 'BUREAU_STATUS_C_MEAN_SUM'],\n", " 'BUREAU_STATUS_X_MEAN_MIN': [],\n", " 'BUREAU_STATUS_X_MEAN_MAX': [],\n", " 'BUREAU_STATUS_X_MEAN_MEAN': [],\n", " 'BUREAU_STATUS_X_MEAN_SUM': ['BUREAU_STATUS_X_SUM_SUM'],\n", " 'BUREAU_STATUS_X_SUM_MIN': [],\n", " 'BUREAU_STATUS_X_SUM_MAX': ['BUREAU_STATUS_X_SUM_SUM'],\n", " 'BUREAU_STATUS_X_SUM_MEAN': [],\n", " 'BUREAU_STATUS_X_SUM_SUM': ['BUREAU_STATUS_X_MEAN_SUM',\n", " 'BUREAU_STATUS_X_SUM_MAX'],\n", " 'TARGET': []}" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "threshold = 0.8\n", "high_corr = {}\n", "for col in corr_abs:\n", " high_corr[col] = list(corr_abs.index[(corr_abs[col] > threshold) & (corr_abs[col] != 1)])\n", "high_corr" ] }, { "cell_type": "markdown", "id": "1640ad16", "metadata": {}, "source": [ "对于高度相关的特征对.\n", "- 如果" ] }, { "cell_type": "code", "execution_count": 70, "id": "4c73c9c1", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRCNT_CHILDRENAMT_INCOME_TOTALAMT_CREDITAMT_ANNUITYAMT_GOODS_PRICEREGION_POPULATION_RELATIVEDAYS_BIRTHDAYS_EMPLOYEDDAYS_REGISTRATION...BUREAU_STATUS_C_SUM_SUMBUREAU_STATUS_X_MEAN_MINBUREAU_STATUS_X_MEAN_MAXBUREAU_STATUS_X_MEAN_MEANBUREAU_STATUS_X_MEAN_SUMBUREAU_STATUS_X_SUM_MINBUREAU_STATUS_X_SUM_MAXBUREAU_STATUS_X_SUM_MEANBUREAU_STATUS_X_SUM_SUMTARGET
SK_ID_CURRNaN0.0011290.0018200.0003430.0004330.0002320.0008490.0015000.0013660.000973...0.0002520.0031020.0031640.0006890.0019370.0037860.0029390.0034590.0006830.002108
CNT_CHILDRENNaNNaN0.0128820.0021450.0213740.0018270.0255730.3309380.2398180.183395...0.0055270.0011610.0050200.0023230.0013980.0030520.0032050.0049880.0039570.019187
AMT_INCOME_TOTALNaNNaNNaN0.1568700.1916570.1596100.0747960.0272610.0642230.027805...0.0246100.0316150.0741490.0201270.0269040.0218760.0609250.0223790.0249000.003982
AMT_CREDITNaNNaNNaNNaN0.7701380.9869680.0997380.0554360.0668380.009621...0.0236090.0033600.0238950.0196040.0151810.0145070.0385540.0366410.0241390.030369
AMT_ANNUITYNaNNaNNaNNaNNaN0.7751090.1184290.0094450.1043320.038514...0.1019820.0061780.0194530.0076270.0769650.0092230.0366260.0300850.0776550.012817
..................................................................
BUREAU_STATUS_X_SUM_MINNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaN0.2382250.6551030.1378260.014557
BUREAU_STATUS_X_SUM_MAXNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaN0.7846590.8061590.030919
BUREAU_STATUS_X_SUM_MEANNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaN0.6912790.033292
BUREAU_STATUS_X_SUM_SUMNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaN0.008445
TARGETNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", "

418 rows × 418 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR CNT_CHILDREN AMT_INCOME_TOTAL \\\n", "SK_ID_CURR NaN 0.001129 0.001820 \n", "CNT_CHILDREN NaN NaN 0.012882 \n", "AMT_INCOME_TOTAL NaN NaN NaN \n", "AMT_CREDIT NaN NaN NaN \n", "AMT_ANNUITY NaN NaN NaN \n", "... ... ... ... \n", "BUREAU_STATUS_X_SUM_MIN NaN NaN NaN \n", "BUREAU_STATUS_X_SUM_MAX NaN NaN NaN \n", "BUREAU_STATUS_X_SUM_MEAN NaN NaN NaN \n", "BUREAU_STATUS_X_SUM_SUM NaN NaN NaN \n", "TARGET NaN NaN NaN \n", "\n", " AMT_CREDIT AMT_ANNUITY AMT_GOODS_PRICE \\\n", "SK_ID_CURR 0.000343 0.000433 0.000232 \n", "CNT_CHILDREN 0.002145 0.021374 0.001827 \n", "AMT_INCOME_TOTAL 0.156870 0.191657 0.159610 \n", "AMT_CREDIT NaN 0.770138 0.986968 \n", "AMT_ANNUITY NaN NaN 0.775109 \n", "... ... ... ... \n", "BUREAU_STATUS_X_SUM_MIN NaN NaN NaN \n", "BUREAU_STATUS_X_SUM_MAX NaN NaN NaN \n", "BUREAU_STATUS_X_SUM_MEAN NaN NaN NaN \n", "BUREAU_STATUS_X_SUM_SUM NaN NaN NaN \n", "TARGET NaN NaN NaN \n", "\n", " REGION_POPULATION_RELATIVE DAYS_BIRTH \\\n", "SK_ID_CURR 0.000849 0.001500 \n", "CNT_CHILDREN 0.025573 0.330938 \n", "AMT_INCOME_TOTAL 0.074796 0.027261 \n", "AMT_CREDIT 0.099738 0.055436 \n", "AMT_ANNUITY 0.118429 0.009445 \n", "... ... ... \n", "BUREAU_STATUS_X_SUM_MIN NaN NaN \n", "BUREAU_STATUS_X_SUM_MAX NaN NaN \n", "BUREAU_STATUS_X_SUM_MEAN NaN NaN \n", "BUREAU_STATUS_X_SUM_SUM NaN NaN \n", "TARGET NaN NaN \n", "\n", " DAYS_EMPLOYED DAYS_REGISTRATION ... \\\n", "SK_ID_CURR 0.001366 0.000973 ... \n", "CNT_CHILDREN 0.239818 0.183395 ... \n", "AMT_INCOME_TOTAL 0.064223 0.027805 ... \n", "AMT_CREDIT 0.066838 0.009621 ... \n", "AMT_ANNUITY 0.104332 0.038514 ... \n", "... ... ... ... \n", "BUREAU_STATUS_X_SUM_MIN NaN NaN ... \n", "BUREAU_STATUS_X_SUM_MAX NaN NaN ... \n", "BUREAU_STATUS_X_SUM_MEAN NaN NaN ... \n", "BUREAU_STATUS_X_SUM_SUM NaN NaN ... \n", "TARGET NaN NaN ... \n", "\n", " BUREAU_STATUS_C_SUM_SUM BUREAU_STATUS_X_MEAN_MIN \\\n", "SK_ID_CURR 0.000252 0.003102 \n", "CNT_CHILDREN 0.005527 0.001161 \n", "AMT_INCOME_TOTAL 0.024610 0.031615 \n", "AMT_CREDIT 0.023609 0.003360 \n", "AMT_ANNUITY 0.101982 0.006178 \n", "... ... ... \n", "BUREAU_STATUS_X_SUM_MIN NaN NaN \n", "BUREAU_STATUS_X_SUM_MAX NaN NaN \n", "BUREAU_STATUS_X_SUM_MEAN NaN NaN \n", "BUREAU_STATUS_X_SUM_SUM NaN NaN \n", "TARGET NaN NaN \n", "\n", " BUREAU_STATUS_X_MEAN_MAX BUREAU_STATUS_X_MEAN_MEAN \\\n", "SK_ID_CURR 0.003164 0.000689 \n", "CNT_CHILDREN 0.005020 0.002323 \n", "AMT_INCOME_TOTAL 0.074149 0.020127 \n", "AMT_CREDIT 0.023895 0.019604 \n", "AMT_ANNUITY 0.019453 0.007627 \n", "... ... ... \n", "BUREAU_STATUS_X_SUM_MIN NaN NaN \n", "BUREAU_STATUS_X_SUM_MAX NaN NaN \n", "BUREAU_STATUS_X_SUM_MEAN NaN NaN \n", "BUREAU_STATUS_X_SUM_SUM NaN NaN \n", "TARGET NaN NaN \n", "\n", " BUREAU_STATUS_X_MEAN_SUM BUREAU_STATUS_X_SUM_MIN \\\n", "SK_ID_CURR 0.001937 0.003786 \n", "CNT_CHILDREN 0.001398 0.003052 \n", "AMT_INCOME_TOTAL 0.026904 0.021876 \n", "AMT_CREDIT 0.015181 0.014507 \n", "AMT_ANNUITY 0.076965 0.009223 \n", "... ... ... \n", "BUREAU_STATUS_X_SUM_MIN NaN NaN \n", "BUREAU_STATUS_X_SUM_MAX NaN NaN \n", "BUREAU_STATUS_X_SUM_MEAN NaN NaN \n", "BUREAU_STATUS_X_SUM_SUM NaN NaN \n", "TARGET NaN NaN \n", "\n", " BUREAU_STATUS_X_SUM_MAX BUREAU_STATUS_X_SUM_MEAN \\\n", "SK_ID_CURR 0.002939 0.003459 \n", "CNT_CHILDREN 0.003205 0.004988 \n", "AMT_INCOME_TOTAL 0.060925 0.022379 \n", "AMT_CREDIT 0.038554 0.036641 \n", "AMT_ANNUITY 0.036626 0.030085 \n", "... ... ... \n", "BUREAU_STATUS_X_SUM_MIN 0.238225 0.655103 \n", "BUREAU_STATUS_X_SUM_MAX NaN 0.784659 \n", "BUREAU_STATUS_X_SUM_MEAN NaN NaN \n", "BUREAU_STATUS_X_SUM_SUM NaN NaN \n", "TARGET NaN NaN \n", "\n", " BUREAU_STATUS_X_SUM_SUM TARGET \n", "SK_ID_CURR 0.000683 0.002108 \n", "CNT_CHILDREN 0.003957 0.019187 \n", "AMT_INCOME_TOTAL 0.024900 0.003982 \n", "AMT_CREDIT 0.024139 0.030369 \n", "AMT_ANNUITY 0.077655 0.012817 \n", "... ... ... \n", "BUREAU_STATUS_X_SUM_MIN 0.137826 0.014557 \n", "BUREAU_STATUS_X_SUM_MAX 0.806159 0.030919 \n", "BUREAU_STATUS_X_SUM_MEAN 0.691279 0.033292 \n", "BUREAU_STATUS_X_SUM_SUM NaN 0.008445 \n", "TARGET NaN NaN \n", "\n", "[418 rows x 418 columns]" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "upper = corr_abs.where(\n", " np.triu(np.ones(corr_abs.shape), k=1).astype(bool)\n", " ) \n", "upper" ] }, { "cell_type": "code", "execution_count": 71, "id": "97ff83bb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
feature_1feature_2corr
2093AMT_GOODS_PRICEAMT_CREDIT0.986968
5442FLAG_EMP_PHONEDAYS_EMPLOYED0.999755
7525CNT_FAM_MEMBERSCNT_CHILDREN0.879161
8379REGION_RATING_CLIENT_W_CITYREGION_RATING_CLIENT0.950842
10055LIVE_REGION_NOT_WORK_REGIONREG_REGION_NOT_WORK_REGION0.860627
............
170884BUREAU_STATUS_C_SUM_SUMBUREAU_MONTHS_BALANCE_MIN_SUM0.847094
170896BUREAU_STATUS_C_SUM_SUMBUREAU_MONTHS_BALANCE_SUM_SUM0.892464
170948BUREAU_STATUS_C_SUM_SUMBUREAU_STATUS_C_MEAN_SUM0.911103
174300BUREAU_STATUS_X_SUM_SUMBUREAU_STATUS_X_MEAN_SUM0.857403
174302BUREAU_STATUS_X_SUM_SUMBUREAU_STATUS_X_SUM_MAX0.806159
\n", "

220 rows × 3 columns

\n", "
" ], "text/plain": [ " feature_1 feature_2 corr\n", "2093 AMT_GOODS_PRICE AMT_CREDIT 0.986968\n", "5442 FLAG_EMP_PHONE DAYS_EMPLOYED 0.999755\n", "7525 CNT_FAM_MEMBERS CNT_CHILDREN 0.879161\n", "8379 REGION_RATING_CLIENT_W_CITY REGION_RATING_CLIENT 0.950842\n", "10055 LIVE_REGION_NOT_WORK_REGION REG_REGION_NOT_WORK_REGION 0.860627\n", "... ... ... ...\n", "170884 BUREAU_STATUS_C_SUM_SUM BUREAU_MONTHS_BALANCE_MIN_SUM 0.847094\n", "170896 BUREAU_STATUS_C_SUM_SUM BUREAU_MONTHS_BALANCE_SUM_SUM 0.892464\n", "170948 BUREAU_STATUS_C_SUM_SUM BUREAU_STATUS_C_MEAN_SUM 0.911103\n", "174300 BUREAU_STATUS_X_SUM_SUM BUREAU_STATUS_X_MEAN_SUM 0.857403\n", "174302 BUREAU_STATUS_X_SUM_SUM BUREAU_STATUS_X_SUM_MAX 0.806159\n", "\n", "[220 rows x 3 columns]" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "high_corr_pairs = upper.unstack().reset_index()\n", "high_corr_pairs.columns = ['feature_1', 'feature_2', 'corr']\n", "high_corr_pairs = high_corr_pairs[high_corr_pairs['corr'] > threshold]\n", "high_corr_pairs" ] }, { "cell_type": "code", "execution_count": 72, "id": "f38ebbde", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['BUREAU_MONTHS_BALANCE_MIN_SUM',\n", " 'CODE_GENDER_F',\n", " 'BUREAU_STATUS_2_MEAN_SUM',\n", " 'BUREAU_MONTHS_BALANCE_MAX_SUM',\n", " 'bureau_CREDIT_ACTIVE_Closed_sum',\n", " 'REG_CITY_NOT_WORK_CITY',\n", " 'BUREAU_STATUS_C_MEAN_MEAN',\n", " 'bureau_CREDIT_CURRENCY_currency 1_mean',\n", " 'APARTMENTS_AVG',\n", " 'LIVINGAPARTMENTS_MEDI',\n", " 'bureau_CREDIT_TYPE_Consumer credit_mean',\n", " 'FLAG_OWN_REALTY_N',\n", " 'APARTMENTS_MODE',\n", " 'BUREAU_STATUS_C_MEAN_SUM',\n", " 'bureau_CREDIT_TYPE_Loan for purchase of shares (margin lending)_sum',\n", " 'ELEVATORS_MEDI',\n", " 'LIVINGAREA_MODE',\n", " 'ENTRANCES_AVG',\n", " 'bureau_CREDIT_TYPE_Cash loan (non-earmarked)_sum',\n", " 'REGION_RATING_CLIENT',\n", " 'bureau_AMT_ANNUITY_max',\n", " 'FLOORSMIN_MODE',\n", " 'BUREAU_STATUS_5_MEAN_SUM',\n", " 'YEARS_BUILD_AVG',\n", " 'LIVINGAREA_AVG',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_mean',\n", " 'FLAG_OWN_CAR_N',\n", " 'BUREAU_STATUS_4_MEAN_MEAN',\n", " 'bureau_previous_loan_counts',\n", " 'BUREAU_STATUS_5_MEAN_MEAN',\n", " 'BASEMENTAREA_AVG',\n", " 'APARTMENTS_MEDI',\n", " 'ELEVATORS_MODE',\n", " 'AMT_GOODS_PRICE',\n", " 'YEARS_BEGINEXPLUATATION_AVG',\n", " 'BUREAU_STATUS_1_SUM_MAX',\n", " 'BUREAU_STATUS_1_MEAN_MAX',\n", " 'LANDAREA_AVG',\n", " 'BUREAU_STATUS_3_MEAN_MAX',\n", " 'FLAG_EMP_PHONE',\n", " 'BUREAU_STATUS_5_SUM_MAX',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MIN',\n", " 'BUREAU_STATUS_0_MEAN_SUM',\n", " 'bureau_AMT_CREDIT_SUM_mean',\n", " 'CNT_FAM_MEMBERS',\n", " 'bureau_CREDIT_CURRENCY_currency 4_sum',\n", " 'BUREAU_STATUS_3_SUM_MAX',\n", " 'bureau_DAYS_ENDDATE_FACT_sum',\n", " 'bureau_CNT_CREDIT_PROLONG_max',\n", " 'BUREAU_MONTHS_BALANCE_SUM_SUM',\n", " 'BUREAU_STATUS_4_MEAN_MAX',\n", " 'BUREAU_STATUS_X_MEAN_SUM',\n", " 'bureau_DAYS_CREDIT_sum',\n", " 'BUREAU_STATUS_X_SUM_MAX',\n", " 'bureau_AMT_CREDIT_SUM_max',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MEAN',\n", " 'NAME_EDUCATION_TYPE_Higher education',\n", " 'BUREAU_STATUS_2_SUM_MAX',\n", " 'NONLIVINGAREA_MODE',\n", " 'FLOORSMIN_AVG',\n", " 'HOUSETYPE_MODE_block of flats',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MEAN',\n", " 'bureau_CREDIT_CURRENCY_currency 1_sum',\n", " 'BUREAU_STATUS_5_MEAN_MAX',\n", " 'DEF_30_CNT_SOCIAL_CIRCLE',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_SUM',\n", " 'BUREAU_STATUS_2_MEAN_MAX',\n", " 'ELEVATORS_AVG',\n", " 'COMMONAREA_AVG',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MEAN',\n", " 'bureau_CREDIT_ACTIVE_Active_mean',\n", " 'bureau_AMT_CREDIT_SUM_DEBT_max',\n", " 'LIVINGAREA_MEDI',\n", " 'NONLIVINGAREA_AVG',\n", " 'NONLIVINGAPARTMENTS_AVG',\n", " 'BUREAU_MONTHS_BALANCE_MEAN_MAX',\n", " 'BUREAU_STATUS_4_MEAN_SUM',\n", " 'BUREAU_MONTHS_BALANCE_MAX_MIN',\n", " 'bureau_DAYS_CREDIT_ENDDATE_max',\n", " 'BUREAU_STATUS_C_MEAN_MIN',\n", " 'BASEMENTAREA_MODE',\n", " 'YEARS_BUILD_MODE',\n", " 'LANDAREA_MODE',\n", " 'bureau_CREDIT_DAY_OVERDUE_max',\n", " 'FLOORSMAX_MODE',\n", " 'bureau_DAYS_ENDDATE_FACT_min',\n", " 'BUREAU_STATUS_3_MEAN_SUM',\n", " 'FLOORSMAX_AVG',\n", " 'REG_REGION_NOT_WORK_REGION',\n", " 'COMMONAREA_MODE',\n", " 'BUREAU_STATUS_1_MEAN_SUM',\n", " 'NAME_INCOME_TYPE_Pensioner',\n", " 'bureau_CREDIT_TYPE_Consumer credit_sum',\n", " 'bureau_CREDIT_ACTIVE_Bad debt_sum',\n", " 'BUREAU_MONTHS_BALANCE_MIN_MAX',\n", " 'DAYS_EMPLOYED',\n", " 'LIVINGAPARTMENTS_AVG',\n", " 'NAME_CONTRACT_TYPE_Cash loans',\n", " 'bureau_CREDIT_TYPE_Interbank credit_sum',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_min',\n", " 'LIVINGAPARTMENTS_MODE',\n", " 'BUREAU_STATUS_5_MEAN_MIN',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_max',\n", " 'bureau_AMT_CREDIT_SUM_LIMIT_max',\n", " 'YEARS_BEGINEXPLUATATION_MODE',\n", " 'bureau_AMT_CREDIT_SUM_OVERDUE_max',\n", " 'ENTRANCES_MODE',\n", " 'NONLIVINGAPARTMENTS_MODE',\n", " 'bureau_DAYS_CREDIT_min',\n", " 'OBS_30_CNT_SOCIAL_CIRCLE',\n", " 'bureau_CREDIT_TYPE_Mobile operator loan_sum',\n", " 'BUREAU_MONTHS_BALANCE_SUM_MAX']" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "to_drop = set()\n", "missing_counts = train.isnull().sum()\n", "for index, row in high_corr_pairs.iterrows():\n", " f1, f2 = row['feature_1'], row['feature_2']\n", " if f1 in to_drop or f2 in to_drop: # 有一个已经在drop了\n", " continue\n", " if missing_counts[f1] > missing_counts[f2]:\n", " to_drop.add(f1)\n", " else:\n", " to_drop.add(f2)\n", "to_drop = list(to_drop)\n", "to_drop" ] }, { "cell_type": "markdown", "id": "517d3c65", "metadata": {}, "source": [ "从训练集和测试集移除这些列," ] }, { "cell_type": "code", "execution_count": 73, "id": "ea49613f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "112" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(to_drop)" ] }, { "cell_type": "code", "execution_count": 74, "id": "0de1ce9b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['SK_ID_CURR', 'CNT_CHILDREN', 'AMT_INCOME_TOTAL', 'AMT_CREDIT',\n", " 'AMT_ANNUITY', 'AMT_GOODS_PRICE', 'REGION_POPULATION_RELATIVE',\n", " 'DAYS_BIRTH', 'DAYS_EMPLOYED', 'DAYS_REGISTRATION',\n", " ...\n", " 'BUREAU_STATUS_C_SUM_SUM', 'BUREAU_STATUS_X_MEAN_MIN',\n", " 'BUREAU_STATUS_X_MEAN_MAX', 'BUREAU_STATUS_X_MEAN_MEAN',\n", " 'BUREAU_STATUS_X_MEAN_SUM', 'BUREAU_STATUS_X_SUM_MIN',\n", " 'BUREAU_STATUS_X_SUM_MAX', 'BUREAU_STATUS_X_SUM_MEAN',\n", " 'BUREAU_STATUS_X_SUM_SUM', 'TARGET'],\n", " dtype='str', length=418)" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.columns" ] }, { "cell_type": "code", "execution_count": 75, "id": "508a3842", "metadata": {}, "outputs": [], "source": [ "train_corrs_removed = train.drop(columns=to_drop)\n", "test_corrs_removed = test.drop(columns=to_drop)" ] }, { "cell_type": "code", "execution_count": 76, "id": "72de6985", "metadata": {}, "outputs": [], "source": [ "train_corrs_removed.to_feather('checkpoints/04_train_app_bureau_balance_bureau_cleaned.feather')\n", "test_corrs_removed.to_feather('checkpoints/04_test_app_bureau_balance_bureau_cleaned.feather')" ] }, { "cell_type": "code", "execution_count": 77, "id": "453602a3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "del corrs, corr_abs, train_corrs_removed, test_corrs_removed\n", "gc.collect()" ] }, { "cell_type": "markdown", "id": "e236b5a9", "metadata": {}, "source": [ "### modeling" ] }, { "cell_type": "markdown", "id": "688a9daa", "metadata": {}, "source": [ "#### 导入\n", "- 每个model运行前,建议重新导入一次" ] }, { "cell_type": "code", "execution_count": 78, "id": "675e24b8", "metadata": {}, "outputs": [], "source": [ "train = pd.read_feather('checkpoints/04_train_app_bureau_balance_bureau_cleaned.feather')\n", "test = pd.read_feather('checkpoints/04_test_app_bureau_balance_bureau_cleaned.feather')\n", "\n", "train_labels = train['TARGET']\n", "train_ids = train['SK_ID_CURR']\n", "test_ids = test['SK_ID_CURR']\n", "train_features = train.drop(columns=['TARGET', 'SK_ID_CURR'])\n", "test_features = test.drop(columns=['SK_ID_CURR'])" ] }, { "cell_type": "code", "execution_count": 79, "id": "804b7d02", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(307511, 306) (48744, 305)\n" ] } ], "source": [ "print(train.shape, test.shape)" ] }, { "cell_type": "markdown", "id": "3db1b14d", "metadata": {}, "source": [ "#### HistGradientBoostingClassifier" ] }, { "cell_type": "code", "execution_count": 80, "id": "3c83efbb", "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import HistGradientBoostingClassifier" ] }, { "cell_type": "markdown", "id": "af32873c", "metadata": {}, "source": [ "HistGradientBoostingClassifier \n", "- 不需要处理缺失值\n", "- 树模型对量级不敏感,不需要scaler" ] }, { "cell_type": "code", "execution_count": 81, "id": "8b351eb7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: total: 2min 15s\n", "Wall time: 17.6 s\n" ] }, { "data": { "text/html": [ "
HistGradientBoostingClassifier(max_depth=5)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "HistGradientBoostingClassifier(max_depth=5)" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "hist_gradient_boost_model= HistGradientBoostingClassifier(\n", " max_iter = 100, # 树个数\n", " learning_rate = 0.1,\n", " max_depth = 5,\n", ")\n", "hist_gradient_boost_model.fit(train_features, train_labels)" ] }, { "cell_type": "code", "execution_count": 82, "id": "6e808919", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0.57789429, 0.42210571],\n", " [0.96788937, 0.03211063],\n", " [0.95496642, 0.04503358],\n", " ...,\n", " [0.91929918, 0.08070082],\n", " [0.92218583, 0.07781417],\n", " [0.9186571 , 0.0813429 ]], shape=(307511, 2))" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics import roc_auc_score\n", "train_prob = hist_gradient_boost_model.predict_proba(train_features)\n", "train_prob" ] }, { "cell_type": "code", "execution_count": 83, "id": "ea289329", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import roc_curve\n", "fpr, tpr, thresholds = roc_curve(train_labels, train_prob[:, 1])\n", "auc = roc_auc_score(train_labels, train_prob[:, 1])" ] }, { "cell_type": "code", "execution_count": 84, "id": "5ae88090", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'hist gb Roc curve, auc=0.789')" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(3,3))\n", "plt.plot(fpr, tpr, color='blue', lw=2)\n", "plt.title(f'hist gb Roc curve, auc={auc:.3f}')" ] }, { "cell_type": "code", "execution_count": 85, "id": "05cee74a", "metadata": {}, "outputs": [], "source": [ "hist_gradient_boost_model_pred = hist_gradient_boost_model.predict_proba(test_features)" ] }, { "cell_type": "code", "execution_count": 86, "id": "c6a9698f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRTARGET
01000010.041575
11000050.161436
21000130.020080
31000280.029833
41000380.178684
\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET\n", "0 100001 0.041575\n", "1 100005 0.161436\n", "2 100013 0.020080\n", "3 100028 0.029833\n", "4 100038 0.178684" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "submit = pd.DataFrame({\n", " 'SK_ID_CURR': test_ids\n", "})\n", "submit['TARGET'] = hist_gradient_boost_model_pred[:, 1]\n", "\n", "submit.to_csv('hist_gradient_boost_model_with_bureau.csv', index = False)\n", "submit.head()" ] }, { "cell_type": "code", "execution_count": 87, "id": "1fada676", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(48744, 2)" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "submit.shape" ] }, { "cell_type": "markdown", "id": "27c3f76a", "metadata": {}, "source": [ "得分73" ] }, { "cell_type": "markdown", "id": "b94eefae", "metadata": {}, "source": [ "#### lightgbm\n", "- 需要清理列名" ] }, { "cell_type": "code", "execution_count": 88, "id": "75e0e47a", "metadata": {}, "outputs": [], "source": [ "import re\n", "# 1. 定义清理函数\n", "def clean_names(df):\n", " # 替换所有非字母、数字的字符为下划线\n", " # 这里的正则 [^A-Za-z0-9_] 会匹配空格、斜杠、括号等所有特殊字符\n", " df.columns = [re.sub(r'[^A-Za-z0-9_]+', '_', col) for col in df.columns]\n", " # 顺便处理一下可能出现的重复下划线,比如 __\n", " df.columns = [re.sub(r'_+', '_', col).strip('_') for col in df.columns]\n", " return df" ] }, { "cell_type": "code", "execution_count": 89, "id": "0edccc6b", "metadata": {}, "outputs": [], "source": [ "train_features = clean_names(train_features)\n", "test_features = clean_names(test_features)" ] }, { "cell_type": "code", "execution_count": 90, "id": "798f9399", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[LightGBM] [Info] Number of positive: 24825, number of negative: 282686\n", "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.109867 seconds.\n", "You can set `force_col_wise=true` to remove the overhead.\n", "[LightGBM] [Info] Total Bins 19607\n", "[LightGBM] [Info] Number of data points in the train set: 307511, number of used features: 298\n", "[LightGBM] [Info] [binary:BoostFromScore]: pavg=0.080729 -> initscore=-2.432486\n", "[LightGBM] [Info] Start training from score -2.432486\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "CPU times: total: 25.7 s\n", "Wall time: 2.7 s\n" ] }, { "data": { "text/html": [ "
LGBMClassifier(max_depth=3, n_jobs=-1, random_state=42)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LGBMClassifier(max_depth=3, n_jobs=-1, random_state=42)" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "from lightgbm import LGBMClassifier\n", "lgbm_model = LGBMClassifier(\n", " n_estimators=100, # 对应 max_iter,树的个数\n", " learning_rate=0.1, # 学习率\n", " max_depth=3, # 树的最大深度\n", " random_state=42, # 保证结果可复现\n", " n_jobs=-1 # 使用所有 CPU 核心加速\n", ")\n", "lgbm_model.fit(train_features, train_labels)" ] }, { "cell_type": "code", "execution_count": 91, "id": "5ea85eb1", "metadata": {}, "outputs": [], "source": [ "lgbm_model_pred = lgbm_model.predict_proba(test_features)[:, 1]" ] }, { "cell_type": "code", "execution_count": 92, "id": "3d77cb22", "metadata": {}, "outputs": [], "source": [ "submit = pd.DataFrame(\n", " {\n", " 'SK_ID_CURR': test_ids\n", " }\n", ")\n", "submit['TARGET'] = lgbm_model_pred\n", "\n", "submit.to_csv('lgbm_model_pred_with_bureau.csv', index = False)" ] }, { "cell_type": "markdown", "id": "43052ab0", "metadata": {}, "source": [ "得分 73" ] }, { "cell_type": "code", "execution_count": 93, "id": "9259db22", "metadata": {}, "outputs": [], "source": [ "features_importance = pd.DataFrame(\n", " {\n", " 'importance': lgbm_model.feature_importances_,\n", " 'feature': lgbm_model.feature_name_\n", " }\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "cd4e5a57", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
importancefeature
2072EXT_SOURCE_1
2171EXT_SOURCE_2
2267EXT_SOURCE_3
240AMT_CREDIT
535DAYS_BIRTH
22821bureau_DAYS_CREDIT_max
6420CODE_GENDER_M
24418bureau_AMT_CREDIT_SUM_DEBT_mean
318AMT_ANNUITY
816OWN_CAR_AGE
19315bureau_CREDIT_ACTIVE_Active_sum
24214bureau_AMT_CREDIT_SUM_sum
23712bureau_AMT_CREDIT_MAX_OVERDUE_sum
711DAYS_ID_PUBLISH
8311NAME_EDUCATION_TYPE_Secondary_secondary_special
3611DAYS_LAST_PHONE_CHANGE
22710bureau_DAYS_CREDIT_mean
3510DEF_60_CNT_SOCIAL_CIRCLE
1410REGION_RATING_CLIENT_W_CITY
639NAME_CONTRACT_TYPE_Revolving_loans
\n", "
" ], "text/plain": [ " importance feature\n", "20 72 EXT_SOURCE_1\n", "21 71 EXT_SOURCE_2\n", "22 67 EXT_SOURCE_3\n", "2 40 AMT_CREDIT\n", "5 35 DAYS_BIRTH\n", "228 21 bureau_DAYS_CREDIT_max\n", "64 20 CODE_GENDER_M\n", "244 18 bureau_AMT_CREDIT_SUM_DEBT_mean\n", "3 18 AMT_ANNUITY\n", "8 16 OWN_CAR_AGE\n", "193 15 bureau_CREDIT_ACTIVE_Active_sum\n", "242 14 bureau_AMT_CREDIT_SUM_sum\n", "237 12 bureau_AMT_CREDIT_MAX_OVERDUE_sum\n", "7 11 DAYS_ID_PUBLISH\n", "83 11 NAME_EDUCATION_TYPE_Secondary_secondary_special\n", "36 11 DAYS_LAST_PHONE_CHANGE\n", "227 10 bureau_DAYS_CREDIT_mean\n", "35 10 DEF_60_CNT_SOCIAL_CIRCLE\n", "14 10 REGION_RATING_CLIENT_W_CITY\n", "63 9 NAME_CONTRACT_TYPE_Revolving_loans" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features_importance_plot = features_importance.sort_values(by='importance', ascending=False).head(20)\n", "features_importance_plot.head()" ] }, { "cell_type": "code", "execution_count": 95, "id": "d182d208", "metadata": {}, "outputs": [ { "data": { "image/png": "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CCGEEKLQQwoD6Qj77ruvtYUTBY+OSeFExyXzqLCYEEIIkQfGjh2baw9noPhWbvm3IjZULqcwWaJFz4QQQohMIREthBBC5IFx48aZdyw3KAAmEZ06CGhaauVGp06dJKKFEEJkFIVzCyGEEEKIQo9CVAsfOiaFEx2XzKPCYkIIIYQQQgghRILIEy2EEEIIEQO1uBJCiOLdzioKeaKFEEIIIYQQQogEkYgWQgghhBBCCCESRCJaCCGEEEIIIYRIEIloIYQQRY41a9a4PfbYI+6DfsHw4Ycfur322svVr1/fbd68OXJ955xzjn1mypQprm3btrmuO/igf3EybNu2zU2YMMGdcMIJrnr16q5ixYruwAMPdMcff7wbOHCgW7p0aeTn6EU9bNgw17JlS/tcpUqV3OGHH+4uv/xy28coJk6caGO84447Yo4n1jLMX3A/K1So4GrVquXatWvnpk2bFnN9//33n5s+fbrr0qWLO+SQQ9zee+/tqlWr5ho3bmz79+mnn2ZbPpH5TnaOGcNrr73mrr76ateoUSObrypVqtgY7rrrLqtcK4QQQqSK+kQLIYQosiDqOnToEPleuXLl7PmII45wffv2tR7DN910kxs6dGi25R599FETXKeeeqo799xzTeTS0znISy+95JYvX249iBFkQcL/x+Off/5xZ599tps3b56JutNPP91EJgIZ8Tx+/Hi32267uXr16mX73OLFi23bP/zwgwnTjh07utKlS7vPPvvMPffccyb++/fv7wYMGODSyY477uj69etnfzMvX375pZsxY4Z744033I033mgiNcj69evdhRdeaO8z/wj+mjVrur///tvE80MPPWT7+MILL7imTZtm+2yvXr1s36NIZo5hy5YtZhgpVaqUHUsMFAjnOXPmuFtuucWOJ/vBHAohhBDJIhEthBCiyFK7dm3zbuYGQnDmzJkm4BDLXiR/9dVXbtCgQeapvueee+y18847L8fn165dayK6c+fOOcRfMjz99NMmoFu3bu0mT57sSpYsme19RPJ3332X7bV169a59u3bm9AeOXKk69q1a7b3V65caYYEjAPsx6WXXurSxU477ZRjft955x13yimnuOHDh5sX3AtRRDZz99Zbb9l4RowY4cqWLZvts99//72J2I0bN+bY1hVXXGHe9XSJf44rc4En27N161Z3/vnnu1mzZrkH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hBBCiASRiBZCCFHkWLNmjdtjjz3iPugXDB9++KHba6+9XP369d3mzZsj13fOOefYZ6ZMmeLatm2b67qDD/oXJ8O2bdvchAkT3AknnOCqV6/uKlas6A488EB3/PHHu4EDB7qlS5dGfo5e1MOGDXMtW7a0z1WqVMkdfvjh7vLLL7d9jGLixIk2xjvuuCPmeGItw/wF97NChQquVq1arl27dm7atGkx1/fff/+56dOnuy5durhDDjnE7b333q5atWqucePGtn+ffvpptuUTme9k5xhee+0117VrV9egQQObrypVqtjfvXr1cqtWrUp6fUIIIYRHfaKFEEIUWRB1HTp0iHyvXLly9nzEEUe4vn37Wo/hm266yQ0dOjTbco8++qgJrlNPPdWde+65JnLp6RzkpZdecsuXL7cexAiyIOH/4/HPP/+4s88+282bN89E3emnn24iE4GMeB4/frzbbbfdXL169bJ9bvHixbbtH374wYRpx44dXenSpd1nn33mnnvuORP//fv3dwMGDHDpZMcdd3T9+vWzv5mXL7/80s2YMcO98cYb7sYbb3RXX311tuXXr1/vLrzwQnuf+Ufw16xZ0/39998mnh966CHbxxdeeME1bdo022cRt+x7FMnMsefVV191ixYtMuNJ69atXcmSJW2+Jk+e7J5++mk3depU17x586TXK4QQQkhECyGEKLLUrl3bvJu5gRCcOXOmCTjEshfJX331lRs0aJB5qu+55x577bzzzsvx+bVr15qI7ty5cw7xlwyINwQ0og4xh7ALgkj+7rvvsr22bt061759exPaI0eONO9qkJUrV5ohAeMA+3HppZe6dLHTTjvlmN933nnHnXLKKW748OHmBUfMe5HN3L311ls2nhEjRriyZctm++z333/vbrnlFrdx48Yc27riiivMu54u2A5jDDN//nwzXgwZMsTNnTs3bdsTQghRfFA4txBCiO0exOr9999vzz179nS///67+/fff12PHj3s77vvvtsEaKbBMwoXXXRRDgENiEg852ExiIcXr29YQEOdOnXcpEmTbH0333yzie1Mctxxx7kDDjjAQuPx7HqeeuopE9CNGjWyuQ4LaKhcubK77777zIiQaXbZZZfI1/E+EyKOV10IIYRIBYloIYQQxQLCoPGqkk+N93ns2LEm+gjhPu200/JlDOXLl7fnL774IqHl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338jt8W8VapUyf5mTpKZQz4rhBBCJIMKiwkhhBAJsGnTJjdt2jRXokQJt379evfSSy+5s846K/YP7E47uSeffNKdfPLJOd775JNP3AcffGDLbNu2Lev17t27u99++y3bspMmTbI+1JdffrkrV65ctvfC/+cGInTQoEFu7Nixtu1mzZq5Nm3auJIlS7qvvvrKvfrqq27q1Knuuuuuc9dee222z7Zr184dfPDB9vdPP/1ky951111mKJgzZ44rVapUju1VqFDBXXbZZUmNEcG822672ViZi88//9w9/fTTNpfHHnuse/DBB92+++4b8/PMSf/+/XO8To/psmXL2hyHlxdCCCGSQSJaCCGESIDnn3/e/fHHH+aNHjdunHviiSfiiujWrVu7V155xf3888/mVQ3CZ3fYYQfzRrOMp0ePHjnWs2DBAhPRiL8aNWrk6VjdeuutJqDxvj7++OPm6Q2yefNm98ADD7hff/01x2dPP/101759+2x9SNnH5cuXm8jt0qVLjs/sueeebuDAgUmN8YorrsjyKnt++eUXE8bPPPOMjQFvOUI7CrzLUdtERCOYkx2PEEIIEUbh3EIIIUQCIHzx3l555ZWuadOmbv78+W7t2rUxl0dUbt261T311FPZXuc1vL2tWrWyUOr84ssvv3SjRo0y7/Czzz6bQ0DDrrvu6nr37p2Q0Nxll11chw4d7O+lS5e6TIIYnzBhgnnO8UzjjRZCCCEKColoIYQQIhc+/fRTt2jRIhO+e++9t+vYsaOFG0+cODHmZxo0aOAOOuggC8cOMnPmTPNOR3luMwnj+Oeff9zFF19s+xCPqNDseOy4444u0+C579u3r/393HPPZXx7QgghRCwUzi2EEEIk4IWGc889155PO+00169fPxPRhBkj8KI477zz3A033OAWL15sRbyA3F68waeccop5s/OLd955x57x5qYDwrnxqANFxqIgDJvCZFEccMAB2cLDE+G4446zaIBly5ZZLjl/CyGEEPmNfn2EEEKIOBB+PWXKFCtKRQVpKFOmjP2NiJw3b555qKPAY33zzTebcEZEf/fdd+7111+3Yls777xzvs77jz/+aM+phpC/8MILFkoNeNLJ5f7666/dqaeeakaFKMitJhc5CowIyYpoPOQYINgXirtVrFgxhT0RQggh8oZEtBBCCBGHl19+2UTj+eefb3nAnk6dOpmIxksdS0Qj8k488UTLQb799tvd5MmTLaQ6v0O508H06dPtEeSMM85wjzzyiFUsj6JOnToWBi+EEEJsTygnWgghhEgglBuvcpDmzZubVxeRjVc0FghmWjUhQAn/ph/zYYcdlu9z7vOgv/3225Q+/9BDD7kNGzaYQeHtt9+2yty0/LrttttcfkFvbrzb5GCXL18+37YrhBBCBJGIFkIIIWJAuDI9kIHwbdon+QdhxQhShB3h3rHAE125cmU3ZMgQ98UXX5hHuyAgnxjeeOONPK2HPGT6RROiXrt2besV/eGHH7r8yusmF5oWXcqHFkIIUVBIRAshhBBxKlpThZvCWYjf8IOQ7qC3Ogq8pnixEdyEgyebB5wuOnfubGN59NFHzZscDwwDucG+3HLLLe6///5zN910k8s0HAcEOxTUHAohhBCgnGghhBAiAsQh4dfk+44bN87VrFkzcp7wLr/33ntuyZIl7sgjj4xcpmfPnq5+/foWgowXuyDAa0yP65EjR7qzzz7bxHR4n6i4TQ9mqmoPHjw413Xina9Xr56bO3eue+utt1yjRo0yMnbGQxV0vOi0Dbvkkksysh0hhBAiESSihRBCiAgQbGvWrHGNGzeOKaB9GytENN7oWCKaAmNUsS5oBg0aZEJ57Nix1seadleEZpcsWdL2lUrj5ByzXKIMGDDAPPIUTpsxY0bCLa6ga9eurlKlStleGz16tNttt93M87xp0yb32WefWQ424yYkHZFfunTpFPZeCCGESA8S0UIIIUQEPkSbMOh4nHnmmSYkn3nmmXwtspUK9LNG7J5zzjlWKAzvMQ8EK2L2+OOPN6NAixYtEl5nmzZtzHiwYMEC63tNwbVEWlx5T3ZYRI8ZM8aeyXmmlVi1atXMc848t2zZMmZPbiGEECK/KLFhw4b/8m1rQgghhBBFiCYPL3br/9pW0MMQotAy7YTybt99983WAlAULETurFu3Tsclg8icK4QQQgghhBBCJIhEtBBCCCGEEEIIkSDKiRZCCCGKKPGKdgXp3r17gVUFL+os6HpUQQ9B/P8oRLXwHhMhihsS0UIIIUQRJV7RriAUR5OIFkIIIdKDRLQQQghRRNmwYUNBD0EIIYQodignWgghhBBCCCGESBCJaCGEEEIIIYQQIkEUzi2EEEIIEQP1iS6MrC/oARQZVvQ4pqCHIMR2iTzRQgghhBBCCCFEgkhECyGEEEIIIYQQCSIRLYQQQgghhBBCJIhEtBBCCJEka9assb7LwUeVKlXcQQcd5Nq1a+duu+02t3r16rjrWLt2ratQoYJ99t5778323owZM+x11vXff/9Ffn7lypW2zcMOO8xt3LjRXmPZKVOmuNNOO83VqlXLVaxY0dWpU8c1bdrU9e3b1y1YsCClY929e/cc+7vnnnu6Aw44wHXq1Mm99dZbOT7z5ptv2nJXXXVVruuqVq2aa968uRs1apTbsmWLLTdx4sQcy8V7sF6444477P9nn3021/1ZtGhRSvMhhBCieKPCYkIIIUSKIFQ7dOhgf//999/up59+cosXL3bDhw93I0eOdFdeeaW74YYbXIkSJXJ89sknn3T//vuvvcffvXv3znrv1FNPdR07dnRPPfWUmzBhgvvf//6X7bP//POPCcG//vrLjR071pUtW9Ze79mzp5s0aZIJxJNOOslVrVrVbd682S1fvtw98cQTbtOmTa5JkyYpH+/zzz/f1gls+7PPPnOvvfaae+WVV2wfTjnllKTXhfD//vvvzXAwePBg98Ybb5gArlu3ruvfv38Ow8PkyZPNcNC2bdts77G8EEIIkR9IRAshhBApUrt2bTdw4MAcr7/99tsmfBHSO+ywgxs0aFC29xHPiF28uYhd/n733Xfdsccem7XMnXfeaZ7jm266ybVu3drtt99+We/hsX3//ffd5Zdf7po1a2av4Q1mPYjJl156KUtYezZs2GCiNy9ccMEFrkGDBtlemzZtmrvooovc6NGjkxLR4XUNGTLENW7c2L3++usmpNmvww8/PId3GxHNPkbNuxBCCJEfKJxbCCGESDMNGzY0b2qpUqUsVPvrr7/O9v7cuXPttbPOOss8soCnOEi5cuXcfffdZ55kvM54n+Hjjz92Q4cOtVBqhKfHhyYTXh0W0IB3OijS08Xxxx9vz7/++mue1kNou/cuL126NC1jE0IIITKBRLQQQgiRAchFPuOMMyzMG89wEC+YEbwI7po1a5pH9/fff8+2HHnC3bp1c++99555n7du3WreZzzZ48ePd7vsskvWsuXLl7fnL774Il+P55w5c+y5Xr16aVvnjjvumLZ1CSGEEOlG4dxCCCFEhiD/mEJf5El78Ni+/PLL5kk+6qij7DXyqocNG+aee+45C3MOgrcZoYr3+dNPP3UfffSRu/baa92RRx6ZwyOMB/rhhx+2QmPkVbNM9erV07Y/jz/+uJs9e3ZWTjTFzciJRkCT+50XmBdvbDjuuOPyPNYXXnjBff7555HvLVu2LM/rF0IIUXyRiBZCCCEyBNWzw6HOFAvDO33uuedmvYZHGhFNca6wiN51113d/fffb7nTU6dOdUcccYSJ6DD77LOPidxevXq5p59+2h6w1157WXVu8pbxbOeFcMg5kNd99tlnZ+1rsoLcFxZDQP/yyy+WS+6NC3lh+vTp9hBCCCHSjUS0EEIIkY8glKnI7at6+yrf5CtTXIziXwceeGC2zxx99NHWtur55593119/vdtpp+if7xYtWrgPP/zQCpItXLjQcovfeecd+xyPq6++2t14440pjx2vsy8GhiGAatkIfLzQhJxHiexYRC2LAeDWW2916eChhx5y7du3j3yPHHMKlAkhhBCpoJxoIYQQIkN89913Wd5aoKI2hcEI8953332zLUtLKy+yo/D5z8E86CgQ2IhpxDae6y+//NKKm/E61cIR2elg5513dvvvv78bMWKEhV+/+OKLJtiTEeRUDP/xxx8tXJ3Q8zFjxpiHWgghhCjMSEQLIYQQGQKPMPjwZO99pVUT1bKDj6uuuior3JsCYukC8UyIOCHXftvpBk85BHO/kxHjzA/h58zDgAED3Lfffpv2MQohhBDpQuHcQgghRAZYtWqVVdymzRVFvv744w8rHFa6dOmYYcaI0BUrVrhZs2ZZ+HY6KVOmjMsUeJSBquGpQu52//79rf8zPbKpRi6EEEIURiSihRBCiDRDWDOtqbZs2WLCsGrVqm7ixIlu06ZNFrY9evToyM8R1kzvaEK6kxXRFOliexQgC+dME9KNoAdaaqWTNWvWWCg3NG7cOE/ruvjiiy30nLnCM0/rLyGEEKKwIREthBBCpAji9I477rC/CcH+6aef3AcffGB5z/Q67tevn4UnB3OdzzvvvJjrI5eZKtsIYvKpk6l4TTun6667zvKvGzVqZMXKqHzNGMk/phDYJZdc4urXr5+WFlfbtm2zwmJU1f7zzz+t+ne47VaykO/dp08fMzxQrXzs2LF5Wp8QQgiRCSSihRBCiBRZvXq1hR77VlTlypVzderUcddcc43r3LmzCVmgn/Lbb7/tatSoYUXFYrHDDjtYuyuKdU2aNMn17ds34bFQ7ZuQ7ddff91E/Lx586yXM6K6ZcuWNp7TTz89T8c6WFGbCuPsL/nM559/fraWXXkBMU4oN/21qSZO8TIhhBCiMFFiw4YN/xX0IIQQQgghCiNNHl7s1v+1raCHIURKrOhxTEZnDkPdunXrrNtAbp0DRP6h45J5VJ1bCCGEEEIIIYRIEIVzCyGEEELEYEHX/2tPJgoeedeEEIUFiWghhBCimEGvaN/DOh5169a19lxCCCGE+H9IRAshhBDFDAS0L4gWD4qcSUQLIYQQ2VFhMSGEEEIIUehROHfhQ8ekcKLjknlUWEwIIYQQQgghhEgQhXMLIYQQQsRALa4KI+vztY2TEEKEkSdaCCGEEEIIIYRIEIloIYQQQgghhBAiQSSihRBCCCGEEEKIBJGIFkIUyx65e+yxh7vjjjsKeihCCCGEEKKIIREthBAiIdq2bWvGB//Ya6+9XK1atVyTJk1cr1693OzZs92///6b63pOO+00+3zDhg2zvb5x40Z32GGHuSpVqriVK1dGfva///5z7dq1s8/PmDEj6/WPP/7YXX755a5u3bpu7733dtWrV3dHHnmk69Klixs3bpx9Li/Mnz/fXXrppbb+ypUru6pVq7pjjjnG9enTx73//vvZlu3evXu2eeJRrVo117x5czdq1Ci3ZcuWHOtfs2ZNjs+EH2w7CP8H32e/99tvP9eqVSvXr18/9/bbb8fcH5Zv0KBBNqNSog/OAyGEEKI4o+rcQgghkgLBvNtuu5lg/u2339znn3/unn76affkk0+6Y4891j344INu3333jfzsV1995RYsWOBKlCjhPvnkExOg9evXt/fKli3r7rvvPnfGGWeYIH711VfdjjvumO3zDzzwgHvjjTdcp06d3KmnnmqvzZ0715177rlu27ZtrkWLFvb6Lrvs4lavXu0WLlxoYvuyyy5zO+2U/E/e5s2bbX+fffZZV7p0aRPC+++/v723atUq2+9HH33U3X///a5jx47ZPnv++eeb2EbAf//99zaOwYMH2/hZXxQYJTp06BD5Xrly5XK8xvwgmOGff/5xGzZscCtWrHCPPPKIHYeTTz7Zxob4jQUGh/79+2d7jePK5ziOnTt3zrG8EEIIUZyRiBZCCJEUV1xxhatUqVK213755RcTYs8884xr3769CVuEdhiENqKSdYwePdo98cQTWSIaEKndunVz48ePdyNH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kCdaCCGEEEIIIYRIEIloIYQQQgghhBAiQSSihRBCCCGEEEKIBJGIFkIIUazo2bOn22OPPVytWrXcli1bIpdp27atLcNj1qxZMdd1/PHHZy1Hr2nfS9q/lshjzZo1Gd2X4P5UqlTJrV27NnKZBg0a2DJB2Cc/zj59+kR+7tlnn7X377jjjmyv+3mIR9QyEydOtNfuvvtu+7979+5JzSd9zHlu166d+++//yK3u3LlSlelShV32GGHuY0bN8YdoxBCCBFGhcWEEEIUGzZt2uSmTZvmSpQo4davX2+9w88666yYy++0007uySefdCeffHKO9z755BP3wQcf2DLbtm3Leh3RR//lIJMmTbLe2pdffrkrV65ctvfC/2dqXwChfeutt7oJEyYkvT3mAdFep04dl59gAKhevXqOvt4LFy50p5xyignxcH/yjh07uqeeesr283//+1+29//55x87RrSAQXCXLVs2X/ZDCCHE9oNEtBBCiGLD888/7/744w8Tg+PGjXNPPPFEXOHZunVr98orr7iff/7Z7bXXXtne47M77LCDeaNZxtOjR48c60H0IaIRbzVq1CiQfQE81s8884zr3bu3eWEThc+tXr3a3Xzzzbad/OTUU0+1RxC83ohoBPZ5552X4zN33nmnzflNN91kx3C//fbLem/UqFHu/fffN4NGs2bN8mUfhBBCbF8onFsIIUSxAQGI5/jKK690TZs2dfPnz48Z3gxdunRxW7duNa9mEF6bOnWqa9WqlatataorCvsCgwYNcv/++68bMmRIUttq0aKFa9y4sXvxxRdNgBZ28O7fd999bvPmzWa4wPsMH3/8sRs6dKg74IADkp4DIYQQwiMRLYQQoljw6aefukWLFpnw3XvvvS3kF0FJDm4syBM+6KCDLBw7yMyZM807jcguKvviQ51POOEEN3v2bPfGG28ktU28unDjjTe6okDz5s1dt27d3HvvvWfeZwwfeJ+Zp/Hjx7tddtmloIcohBCiuIvoH3/80S1ZssTCq4QQQojChg9DPvfcc+35tNNOc7vttpsJT4RVLAgXxoO5ePHibPnBFSpUsJzcorQvMHjwYAtDxxMbq/BWFPXr13enn366e+utt+IWWytMsI/kcON9Juz9o48+cldffbU78sgjC3poQgghirOIJpytYcOGZqknL4xqmEGwWPPj/t133+V1U0II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p59+uhs/frz7/fffs5Zds2aNGSyCD5Y/+OCD3UUXXWRpK1F07949x+fCj4kTJ2Ytz9/B92gTuO+++7rDDz/cderUycaF8TEKjCl85tlnn7X/27Ztm+u2gw+MMnnpaezn5Icffsh1+VWrVrlrrrnGjKzs39577+0OPfRQd8EFF7gXXnjB/fvvv1lGokQf7G9wDu+++277f86cOfb/WWedleu4LrvsMlv26aefzraueA+OcV457bTTbF0NGzZ06cCfd5y3QgghhChi1bkHDBiQ3pEIIUQamD9/volfBOmBBx7ozjjjDFehQgXrU0+/egyA48aNcx9++GG2zyG2O3ToYH//+eef9v60adPcSy+9ZM+NGzeO3N7555/vqlatGvlelEewefPmJjDhjz/+cN999517++233cyZM00s33PPPTbmeHTu3Nk1adIk22uMc/ny5SbIq1evnu298P+JQsQRYpNIom3btrnJkye7Pn36xFx+9OjRbsiQISaU2ccWLVpYWs/XX39tx2X69OmuS5cuJrI5DkEoXHn//feb8Gb/Ehk/669WrZoVsGQb/B0F654xY4YrV66cidpYxyNMXj26X331lUVjMX+ffPKJe//99139+vVdJmGOhRBCCLEdtLgSQoj8YNmyZVaDASZMmJAlioPgBb355ptzvF67dm1LWwmCx/Omm25yt912m3v55Zcjt4mHtUGDBgmPEeF31VVXZXvtn3/+cZMmTXLXXnutu+SSS1zZsmVdq1atYq4jKgpo7dq1JqIRoE2bNnXpAOHLejFKPPfcc+7JJ5+MKaIfffRRd8MNN5jgffzxx90RRxyR7X1EOPuIwaBGjRo55hrPKiKaz4ffi8UOO+xgc4G33M9fFM8884x1i0DA77LLLrkej3TBfGGIuOKKK8zA8MQTT2RcRGMMEkIIIUQhDef2fPvtt+7ee+91l156qYXUYeWPerRr1y49IxaimIHoIJwVLxsCA8/nl19+mW2ZYMhrIjmSPiQUTxk398cee6yF3QbDV3/66ScTM0ceeaS9h8hk2x9//HGObbzxxhuuZ8+eJhD22WcfeyBOEFZhfPh0rFDZePuSG3g3EUuIqigBDQhMvJKJwP7C0qVLXSbZcccdbVt33XWXCerrr78+18KN+QGiDxDRhMITqo03Pyp8/sYbb3Q777yzmzp1ag4BDTvttJMZHPC0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TW7o0KHZ3n/00Ufda6+9Zv2EEZWpsHjxYpufH374wR1yyCGuY8eOrnTp0u6zzz5zzz33nIlzzo8BAwbY8ghYhD/H55133sk6bmH+/fdf99RTT7kdd9zRjk14v0466aTIz0UdF87Vyy67zP7esmWLzdmrr77qXnnlFffggw+6s88+O3Jd7dq1M8MPbNq0ya1du9bm/YUXXrDz6v777097n+5k900IIYQoTkhEC7Gds3HjRjd9+nR36KGHmvdxzpw57uuvv3bVqlWL+ZnWrVubiEZ49OjRI9t7iDlEaJs2bUwceriJD9/I46FFRCMKBw4cmKf9QJAjjGDChAlZojgIXrSbb745x+u1a9fOsf27777bBN1tt91mY4wCb3winkpPixYt3FVXXZXttX/++cdNmjTJXXvtte6SSy5xZcuWda1atYq5jvPOOy/Ha4gm5h0Rlw6xhFHhv//+s+MTJaIxtCAyvcc2FizHeq644go3evRoM65EiWjo16+fnS945RHL3lCAEB80aJB5qjEypMK6detc+/btzRM9cuRI17Vr12zvsw+cL4h3tnPppZfa6126dDERzX7EEtGvv/66++abb0xQVqlSJdt7Rx55ZFLnNQap8PJEIHBecC7GEtFEWbB/QRDhGIw437kuEOKHHXaYSxfJ7psQQghRnFA4tyhScMNLKCECEG8InsIvv/wy2zLxwg3xHoY9iD50l5t5hMCxxx5rYtOHKcNPP/1kN5TcWPIeooxtf/zxxzm28cYbb7iePXuamNhnn33sgbjC2xbGhxsHt5XoviQKN+l4X7nR5oFnDVEXD+bggAMOyBay7EFw4JXD65ef4EUkFBhvZpSABgTmjBkzElofxw+WLl3qMglzxbYIBUZQX3/99SY8CxrEOoaJsNee1z766KNIMR9lHMC7esMNN9g1gcc3VnhxyZIlzWPKM9cHYfecixhp+BujBgI3FQi3Jjrh6quvziGgAYMAY2XbiE7ENhAVsPvuu1s0Qqxxc757wZ0JzjrrLLfbbruZIYDIj0QpVaqU69OnjxlnGDsivLCD5/yUU05x+++/v4XaH3TQQWYg4PVEamDE+r703+scV84BolSIIMHQ589vokK6detm2yZV4cwzz3RffPFFPuy1EEKI7RGJaFFkIFSUGy48edwMEYKLYDrxxBNNAOcVbkbxYhHGyE0aIaGwevVq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Hd1TTz3lJkyY4P73v/9l++w///xjwpZWH2PHjnVly5a113v27OkmTZpkIuqkk05yVatWdZs3b3bLly93TzzxhNu0aZP11U4nGAIuu+wy+3vbtm3ul19+cR999JEbM2aMPbp06eLuuusuV6pUqZS3ccQRR9j+wG+//WbGgMcff9xNnz7dvf76626//fZLy74Et8Mc//jjj27WrFnu+uuvd++995577LHHXDrByMCxZp+OO+4417p1a1emTBn39ddfu7feesu9+uqrZkipXbt2WrcrhBBCxEIiWgghREZB3AwcODDH62+//bYJX4T0DjvsYF7ZIIhnxO6ee+5poo2/3333XXfsscdmLXPnnXeaWLzppptMXAWF4qhRo9z777/vLr/8ctesWTN7DdHFevCOvvTSS1nC2rNhwwb32WefpX0O2IeoOfj4449tDjAQYGDAGJAqRx55ZLZt4HFn3/G6jxgxwo0bNy7ldcfbjp+3Ro0auRdeeMF99dVXrmbNmi5dIM4R0Pfff78ZTcIg3DFSCCGEEPmFwrmFEEIUCA0bNnTPPvuseV8J1cazGGTu3Ln22llnneXOP/98ew1PcZBy5cpZGDGeZLzOeEa9OB06dKiFTQ8ZMiRreR9q3alTpxwCGvBOB0V6pjnkkEPc888/7/baay83depU98EHH6Rt3Xjvvfd7yZIlLpMwb0cffbT9jZc9nXDMOM5RAhqOOeYY274QQgiRX0hECyGEKDDIRT7jjDPMC4tnOIgXzAheBDfezWnTprnff/8923LNmzd33bp1M48k3mfycvHA4skeP36822WXXbKWLV++vD1/8cUXrrCAgL744ovt7+eeey4j24gKlU8neKIJ0d9tt93c/vvvn9Z142Um5/m7775L63qFEEKIVFE4txBCiAKF/GNCjhFhnl9//dW9/PLL5kmmmBSQVz1s2DATmhdccEG2deBtnjNnjnmfP/30U8s3vvbaay30OMjxxx9vHuiHH37YCo2Ra8sy1atXdwU9B+SIB+cgrxDO/dBDD9nffg7TAV7tO+64w/7GUEFO9CuvvOL+/PNPK/KF1zidYGQh2oBCbF27djWDCoXiSpcuHfdzeMT9OMMQHi6EEEKkikS0EEKIAoXq2V44eygWhnf63HPPzXoNjzQimvzhsIjeddddLWeW3GnCoil+hYgOQ1Vnim316tXLPf300/bw3mCqc1900UXm2S4Mc5AXcYuBgFxxinLhfe/Xr1/axvrhhx/aI+zpxsgRryJ2qlB0bv369XZODB482F7bcccdTUhjBCFkPSqcm7kkZ14IIYRINwrnFkIIUehAKHthFqzyTb4yYdtRxb/IyaVtlS9GtdNO0XbiFi1amAgkNPyaa65xJ554ogl2cpNPP/10d/PNN7uiCPuEaOSBBxohfeGFF7r58+fb3KULQs8J3+aBuP3888/NgPHaa6+Zp5/CYumEcHyqq2MQwNNNfvyBBx7oli5dam3SGjduHLlNUgX8OMMPPiuEEEKkikS0EEKIAsXnulLBGqioTWEwQpz33XffbMv64lKI7Ch8/nMwDzoKBDZiGrGN5/rLL7+04ma8TrXwsKc1v+cgr+KWEGuEIjni4VB1KqFDrN7aPkw7uGwsMHTsvffeFjFASD0h1MxfJiCKgEiB0aNHW5V1PO9UBP/mm28iK58LIYQQmUIiWgghRIFC2HEwb9cXFHvzzTctTDf4uOqqq+w9QnspIJYuEM+EiJ999tlZ2y7IOcgkvip5vNBx/15UBfNY+Orc6czrjgfedTzUBXG8hBBCFG+UEy2EEKLAWLVqlYVV0+aK/FaqMFM4jKJR7du3j/wMIm3FihVu1qxZWeHb6aJMmTIuv/n555/do48+an/H2ud0t9WiEjph8VGiHQFN9fJq1aolVSQMD3jQi50fFMTxEkIIISSihRBCFAjvvPOOtabasmWL69+/v6tataqbOHGi27Rpk4VtE7YbBVW46R1NSHeyInr27Nm2PQqQhXOmCelG0AMVoPODTz75xObgp59+ssJp4WrimYA887vuusvml/kjTNqDAKaQ17Zt22L2ZY6C/tzkRQM5yumEHO/zzjvPRH0QwtHvvvtu+/u4445L6zaFEEKIeEhECyGEyCiIU181mhBsBOMHH3xgec9UWaZy9IABA7LlOiOaYkEuM8IPQUwusa9snQgUwbruuuss95h8WkKCEWOMkcJYFBi75JJLXP369V06CbZbQnDi7SVnmXkAQslHjBjh8gMKbt1yyy1u0KBBJj7btGljedMUIps3b57N0THHHOP69u2baxVw70l/44033MqVK03oRlUC57h379495pjGjRsX8z3aW9G6DAMDVdepNs78EcJNJAN9pG+99dak50EIIYRIFYloIYQQGWX16tVZrYZoRUWIMEKOytidO3fOqhyNCHv77bddjRo1rKhYLCh2hdcW0Tlp0qSYYi+WF5YQ4Ndff91EPKLxr7/+MlHdsmVLGw8VutNNsN0SoevkGu+3337uiiuusKJctGvKT3r27Onq1q3rxo8fb9W7EfmE0HNcEKS0jWKcibS4oogbx6x3796uT58+JmrD4OGePHlySiKa/HcMHAsXLnQzZ8400c7Y2Cbzx75Urlw56TkQQgghUqXEhg0bYpfnFEIIIYQoxjR5eLFb/9c2t72xoscxrqiBwWvdunVWtT+3Cvwif9AxKZzouGQeVecWQgghhBBCCCESROHcQgghhBAxWNA1823HhBBCFC0kooUQQogIKFzl+zfHg9xi2nOlC1pFxcsRDjJw4MC0bVcIIYQQiSERLYQQQkSAgPbFwOJBkbN0iujffvstoe2CRLQQQgiR/6iwmBBCCCGEKPSoWFLhQ8ekcKLjknlUWEwIIYQQQgghhEgQhXMLIYQQQsRALa6EEEKEkSdaCCGEEEIIIYRIEIloIYQQQgghhBAiQSSihRBCCCGEEEKIBJGIFkKIQsAee+zh2rZtW9DDEEmyZs0aO3bdu3fX3BWh+eZaYz1CCCHEdimi/Q8mj7POOitymUWLFsX9UV27dq2rUKGCLXPvvffG3Nabb76Zta0WLVrEXO61117LWi5803vHHXdkvRfrwTLJMnHixFzXG9z/4Lz5R5UqVdxBBx3k2rVr52677Ta3evXquNuKN87clvn222/dTTfd5Jo1a+aqV6/uKlas6A488EDXoUMH++zff/8dc92nnXaarbthw4Yxj08iD39s/FjvvvvuyO398MMPbvDgwa5Ro0auWrVqNk9HH32069u3r/viiy/i7j+PkSNHRi7D9nifZZOhbt26Se1n586d7Xno0KEx1zlp0iRb5rzzzot5fnCMDj30UHfppZe65cuX58t5DevWrbO5Puqoo1ylSpXcPvvs4w4//HA7V+655x73xx9/pLReIYQQQgghXHGvzj1nzhw3f/5817x586Q+9+STT7p///3XlShRwv7u3bt33OV32mkn9+GHH5qQOOyww3K8/8QTT9gy27Zti7kOhOrBBx8c+V6TJk1cqrDvxx13XEzxFaZWrVomRgDh+tNPP7nFixe74cOHm/i78sor3Q033GBzky6eeeYZd8UVV7jNmze7I444wp177rmubNmyJlbfeOMN9+qrr7opU6a46dOn5/jsV1995RYsWGDj+eSTT9z777/v6tevb+8hxvv3759t+d9++83df//9bt999zUxGYTlc4OxXHLJJW7Tpk2uQYMG7oILLrBju2zZMvfII4+4xx9/3N111132eiwQehdffLErX768SwcYQ9ivsAhGbF5++eWuXLly2d5j26tWrbJxnnzyyTbnQb755hs3YMAAt9dee9lYY50fiFXmm+P34osvuhdeeCHHuZbu85p5PvXUU21/2Vbr1q1dmTJl3Ndff+3eeustOz5ss3bt2kmvWwix/VG1alX33nvv2W+KEEIIUVAUGRGNIOLGesiQISamExV9iGcEyJ577ulOOukk+/vdd991xx57bMzPHH/88eZtRnCHvXu//PKLmzVrljvhhBPczJkzY67j9NNPd+3bt3fpBg/5VVddlfDyiI+BAwfmeP3tt992//vf/0xI77DDDm7QoEFpGd/s2bNdt27dTOgx1y1btsz2/n///edmzJhhhogomHOWQYSPHj3alvMiukaNGjn2BY8qIprzI2o/44Gh5Pzzz7f9x1scjirgRq1Tp05maMBDyvkTBhGKR3/EiBHm3U8HPXr0yPEahgVENAKbeQjDHJx44on2/rx581ypUqWy3sNotHHjRptbvM25nR+33nqr7c8tt9ziXnrppYye19dff32WIaRjx4453ucYEEUihBBQsmRJd8ABB2gyhBBCFCiFPpzbU6dOHfNoLlmyxD3//PMJf27u3LkmvgkFRzBBLAEXtHQj/p5++ukcYcd4UHmtS5curihDqPSzzz5rYosQd+Yor/zzzz+uX79+Zrh49NFHcwhowPhBuHbUMeDzCG9EE95xBN5zzz2XsXBevLNbtmxxd955Z2Qu6jHHHOMefPBBE/XXXnutjS8M3m/GyXKI3IKCUOirr77avPdBMc9xeP31180YgMc3ETCCANdapiEVA4NLlID2xyAqb5Eoka5du1qKAIYBIkauueYa9+uvv8b0eF922WXukEMOcXvvvbd9DmNA2BBGdMmYMWNc48aNXeXKlc04w7xFGcx8SD/PGPYwYpAKgGGFiIFYYyG6gesPwwzh8zfeeKP766+/Yhp62C+WZyyMibQDUgW2bt0aGY3CY8OGDfY51o8BkTESpcDf33//feS2MKqxPxgukoHrnX1q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888/Licnx61YscI9+OCDNg/HHXecHRviNxEYHPr165fnM+aV9ZjHs88+O9/yQgghhIiPRLQQQpRyevbs6apWrZrns59++smE2JNPPulOO+00E7YI7TAIbUQl27jnnnvcI488kiuiAZF60UUXudGjR7s77rjDXXXVVbnfffbZZ27QoEHm1R02bFju51dccYUJyGeeecYdccQRefbHvmbOnJlPjKdzrgjeo446yo4Jb28QROuIESNMdIY555xzcr29wLE3a9bMvfbaayakw8cKtWrVcv379499fBgGopb/8ssv7dhfeukl17FjR/fcc8+5LbaIDiarUaNGvm3gGUdEI5jTOR4hhBBC5Efh3EKIEgUhr4SnIswQDHgPEWtBkoWwElIbDrP14bx4XRGKeGcRX3zu+eGHH0ycEHLMd4gn9k1YchgEV48ePUxs7rHHHvbC44oHNFFYcHBfcc+lIOy0005uzJgxJgzxTOMFDYPQfeyxx9yOO+7oBg4caOf81FNPud9++y3PcojNunXrultvvdUtW7bMPsPrzRjgGR45cqR5rf044nGuV69epCjF492yZUt7TxfGHaMAnudHH300n4D243nDDTe4c889N+X2OG8/9kuXLnXZhGv58ccfd/vss49545999lm3qQjfDwcddJCFxHNfeI/8X3/95QYPHmz3Egaapk2buhkzZkRub926de6WW25xhx56qG2Hcz311FMjw9eXLFlihhhSB1iO5dk2ho+///474f28fv16Mwrtu+++Nu+ssynHUAghxOaNRLQQosRAKHHbtm1NkOH9xEtIyO0xxxxjD/wFpW/fvuZNPfDAA01I7LfffvY5og8RTK4u4bvsu3Xr1uah5D2cY0se7YIFC1yjRo0sLJlwXzy/5ONec801rriAp/PKK6+0fyOOw3B+X3/9tQmerbbaykKwEUR4kINss8025gXFi0xYNwKLMG9E0sUXX5xHLDN3eGO/++67fGK8oOA1Bzy6hHInY+utt05r25l6xtOBcSQUPdF8FDUDBgxw9957r+XQEyJOiDt55lwXGJAwWBx77LHu9NNPN0MWy3CvBFm7dq3dnxhYEObnnXee5cgjlsm1D+bJw8MPP2yfce9h6GA/XFcYPrp27Rp5nKQFcI0STcE2ud/4PWB9ohqEEEKIdFE4txCixMDDOx4pHsQ95JJefvnl5oV6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0bx586T31Nlnn23fz5kzx2UK615wwQV23MwVc9akSRO73955552kcxC+d1K9/PEOHTo0aa93lunYsWPG5ySEEKJ0osJiQoiEINbOOOMM+/fvv/9uogWxN336dHtv1qxZvnU6d+5sD8dRhB/6165d68477zw3e/ZsV6lSJXfEEUfYPsuWLeu++uorN3/+fDdt2jR33333meCLw+LFi12HDh3cd9995/bbbz931llnuW233dZ99NFH7qmnnnJPPPGE69evn7v66qsTbmPixIkmWPfee+9Cvzo4tz59+ti/N27c6D777DP3/PPPu7lz57rrrrvOXXHFFZHrrVu3zsa8TJkyNm7MwamnnmrfVa5c2c4pzLBhw2xcESRBWD4u119/vXvxxRdjL//vv//aedx77712rk2bNjVjRoUKFdwPP/xgomjgwIEmbvh3omsl1T6uvfZaN3LkSLflllvaddOmTRtXrlw5t2rVKvfKK6+4yZMnuwEDBri+ffu6wgTDx4UXXpjWOhg8brrpJjdmzJiky2VzHg8//HB7nzdvXj6h/PPPP7sVK1bYtcX3UeO9YMECt/XWW5tRJF02bNhgxg4MGNyLRx55pKtTp459t3LlSjdlyhT30EMPufvvv9/u1yg4d4xjYRG8evVqM46Fx4LfFbZ9++23u+OOO86MK0H4feE3AOPgnXfemfY5CSGEKN1IRAshElKrVi3Xv3//PJ/hybrhhhvczTffbB7kMHiP8a6lAgGJt+iNN95wZ555pgmFsCePh3cEHGIpDjxQ4yHlYfuOO+5wXbt2zfP9J598YkYBBBwPz3jFwiDiP//8c3fjjTe6Rx55xBU2iL7wmL755pvu+OOPd8OHDzdBgNAI8/TTT7vffvvNxP2oUaPs2LyIZtzC2wTGFHER9V0cGAvmhzlApMZh8ODBJqAPOOAA9+CDD9o1FAZjzKBBg9wff/yR0XEhSLkmMMpMmDDBjjMs2saOHWvisLDZaaed0h5Pju/JJ590l112matfv37C5bI1j4CIrFixol1r3Htchx6EMxEhJ510knvuuefct99+a55iz/Lly11OTo4ZzcqXL5/2vnv27GkCGmPK6NGj3S677JLne7bN70pYJAfp3r17vs84bu55BHaNGjXyfY8oP+aYY+x7DHUYATzMxa+//moGM6IkhBBCiHRQOLcQIi3wNMPSpUsL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++23n9tll11ctWrVXLNmzayf64cffhi53nfffeeuv/5617RpU1t+t912cwcddJC78sor3aeffpqwf7I/5jvuuCNymREjRtj3LAuMR6rzD74Yc+ABPvg581WzZk138sknu2eeeSbluPTo0cPWY50///wz5fJLlixxl156qWvUqJHbfffd3a677uoOPPBAd9FFF7lZs2blO/84r0TXX5g410jwdeaZZ7oqVaq4Qw45xNpdRPHjjz+6vffe21WvXt2tXr06ci522GEHq8rcpk0bOzeupaj7LNErU5EV3s5OO+1kx8p5zZ49O6NtCiGEEEIUFBUWE6WCmTNnujlz5rgjjzwyrfUmTpzo/v33X1emTBn792WXXZZ0+S233NJE1nvvvefq16+f7/tHHnnEltm4MXGRGsRfvXr1Ir9r3ry5y4S1a9e6Ll26uLlz57rKlSu7o446yu21117ur7/+MvH8wAMPuNGjR7tnn33W2uZ4XnnlFXf++ee7devWuYMPPtidc845dvz0nH3wwQfdhAkT3O23326fJ+LOO+905513ngmxZJx99tn5zo8WUoxlhw4dTOQFCf5dtmxZ16dPH/s3Y/vZZ5+5559/3s73uuuuc1dccUXkPjkvhDbzyxixv0QGF66Da6+91o0cOdLG4IgjjjBRWa5cObdq1Sobq8mTJ7sBAwa44447zvXr1y+fQWbSpEl2XYQNKHFFZtT8MxcvvPCCGUPC3/M3PX1vvfVWN3jwYHfzzTfnW5+x+eGHH6yXNf2Eg2AsqFChgvvnn39MLD/33HPujTfesGt8+PDheZbFCHHGGWdEHjfXXKZgFLnwwgvt3xg5PvjgAxvrl19+2Y0bN861b9/elWQwfAkhhBCieCERLUo8iK01a9a4QYMGmZhGMMUB0fTYY4+Z9+vYY4+1fy9cuNC8eolo2bKleZsR3EOHDs3z3U8//eReeukl17p1a/fiiy8m3Ebbtm3daaed5goLRGXHjh3dggULTOTcdtttrlKlSnmW+fbbb01k/frrr7mfIZQ6d+7stthiC/M+hoXfW2+9ZeK2V69ermrVqjZGYRBWn3/+ue0zSsAF4RjDIDwR0QjsoLgPg6jFmx7kzTffdMcff7yJvUsuucRtu+22+dZ7+umn3W+//Wbe6FGjRk2l6u0AAB/+SURBVJmRI5GIvummm0xAI3gxHnBuQTZs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kEMOySOggb/5fNWqVfnyQkXmYJC4/fbbzYi07777Ri6jeSkaMCjl5OS4E044wf3zzz8WxTFixAg3fvx499lnn2lOihCJaCGEEEKUahAAULt27XzfUbCHfMPwA6rIPuSjz5492+26667uf//7X565IqQ4Cv+5X04UjD///NN169bNCrf16tUr4XKal6LBR1hgVGrWrJk755xz3A033GDpC40bN3bXXnut5qSIkIgWQgghRKmG6rVQqVKlyO8rVqyYu4wouhzciy++2EQcuc7eE+3noXLlypHr+TnUfBUO5DkjkElzCOfeBtG8FA0//vijvTMfXOt4pom6oJhenTp13L333useeOABzUkRIBEthBBCCCGKDf/++6/loVNYrEuXLu6ss87a1IdUKnnrrbfcPffc4/r06WN56KJ43Buw1VZbuUcffdSq0RMp07RpU6vWvcUWW5iQFtlHIloIIYQQpZpU3kuKWCXyUovCFwk9evRwU6ZMcWeccYble0bNFZXTM4kqEPGgwjNh3ITR004pFZqXosGP84EHHuh22223PN9h6Nhrr73c559/bnnTmpPskrikmxBCCCFEKcDnQhO2ysNpkO+++86tX7/ePD6iaDzQjz/+uGvfvr218sGzFjVXiXLU/edR+e0iPlzzPs955513jlymdevW9j5x4sTcgmOal+yy9957J01n8J//8ccfuleyjES0EEIIIUo1FOi54447LL/wtNNOy/Pda6+9lruMKBoBTVur0aNHR+bgIo7xwC1cuNBaWoVbXPF5jRo1XLVq1TRdBYCe3J07d478jjB7BHabNm2snRj90zUvRcPhhx9u7x9//HFkHQGMGNwTzAtFEXWvZA+FcwshhBCiVHPkkUdaGOSTTz7pli1blvs5IcOIa/IPlZeb/RBuBHS7du3cmDFjEhaxKlOmjIk7PKXDhw/P8x1/8zl51KJgbLPNNpYPHfVq0qSJLUNFaP5u0KCB5qWIqFmzprXiQyxPmDAhz3ekPvCbRfsr+kfrXskuZXJycv7L8j6EEEIIIYo1c+fONS90+fLlzRNKsR56sNJmafDgwa5nz56b+hBLLEOGDHHDhg2zMb/kkksiBTTCALHmPc7HHnuse++990xQHHDAAW7p0qUWSUDY/fTp000EiuxArvSkSZPcjBkz3MEHH5z7uealaCDn+ZhjjnE//PCD3QeEeGP84zdszz33dK+++qp5oTUn2UUiWgghhBDCObdo0SITdFQlJjSSQj14SBHVIvuiLBm09OnYsWPu33jchg4d6p577jnLW0c04MXu16+ftSQTRS+iNS9FB22taD9GusnPP/9s1z/h9X379s2Xw657JTtIRAshhBBCCCGEEDFRTrQQQgghhBBCCBETiWghhBBCCCGEECImEtFCCCGEEEIIIURMJKKFEEIIIYQQQoiYSEQLIYQQQgghhBAxkYgWQgghhBBCCCFiIhEthBBCCCGEEELERCJaCCGEEEIIIYSIiUS0EEIIIYQQQggRE4loIYQQQgghApxwwglu++23d48++qjGRQiRjy3zfySEEEIIIYQQzj3//PNu+fLlrnnz5u7www/XkAghES2EEEIIIUReqlWr5vbee29XqVKlUj8006dPd5MmTbJxkIgW4v+QJ1oIIYQQQogAo0eP1ngIIRKinGghhBBCCCGEECImEtFCCCGEEEKkKCz2+uuv22f777+//T1lyhTXunVrt+eee7patWq5s88+23344Ye5yy9ZssR16tTJwsJ33XVXd+SRR7pp06ZFjvOQIUNs2926dXN//PGHu/nmm13jxo1tvTp16rjzzz/fffLJJwnn6L///nNPPvmka9eunatZs6bbeeed3X777ecuuOACO44oODf2ybn++++/bty4ce7oo4921atXt8+/+OILe/eh3MOGDbO//cuPA6xfv9498cQTdpxNmjSxbXDsjRo1cldeeaVbtWpV5DGEx/SFF16w42H93Xff3bVs2dJNnTo16bX57bffukGDBlnONnOx22672X67du3qXnzxxch1PvvsMzuugw46yJYnfP+oo45yI0eOdH/++WfS/QkBEtFCCCGEEEKkwY033uguvPBC980337i99trL/f777yYA27Rp4z799FPLIz722GPdvHnz3B577OHKly/vli5d6rp06eKefvrphNv9+++/3cknn+yGDx9uwnafffZx69atMyHZokULt2DBgnzrbNy40Z177rkmmGfPnu223XZbV79+fRO2CGuE6EMPPZRUgHNcffr0cd9//72J9p122sn+feihh5ogB4Qmf/sXQtXDeV588cXu2Weftf1iVEAIMz4PPPCAO+KII9yiRYuSjikiHUMExgLWL1eunK2DMB8zZkzkOq+++qqJ9jvvvNO9//77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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,6))\n", "sns.barplot(\n", " data = features_importance_plot,\n", " x= 'importance',\n", " y = 'feature'\n", ")\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "id": "0bceb33a", "metadata": {}, "source": [ "还是有点提升的,我们看到有一些新的重要特征" ] }, { "cell_type": "markdown", "id": "9d24bfe7", "metadata": {}, "source": [ "## 第二部分\n", "- 按照第一部分步骤,做一些最基本的处理。使用`previous_application 、 POS_CASH_balance 、 installments_payments 和 credit_card_balance`文件" ] }, { "cell_type": "code", "execution_count": 96, "id": "6e6226c9", "metadata": {}, "outputs": [], "source": [ "def get_missing_columns(df, rate=90):\n", " \"\"\"只计算需要删除的列名\"\"\"\n", " missing_stats = df.isnull().sum() / len(df) * 100\n", " to_drop = missing_stats[missing_stats > rate].index.tolist()\n", " return to_drop" ] }, { "cell_type": "code", "execution_count": 97, "id": "8eb879c5", "metadata": {}, "outputs": [], "source": [ "def get_high_corr_columns(df, threshold=0.9):\n", " \"\"\"\n", " 高效获取高相关特征,优先保留缺失值较少的特征\n", " \"\"\"\n", " # 1. 计算相关性矩阵\n", " corr_matrix = df.corr().abs()\n", " \n", " # 2. 提取上三角(不含对角线)\n", " upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(bool))\n", " \n", " # 3. 找出所有超过阈值的列名\n", " # 这里的 to_drop 是我们要剔除的特征候选名单\n", " to_drop = set()\n", " \n", " # 4. 获取缺失值统计\n", " missing_counts = df.isnull().sum()\n", " \n", " # 5. 遍历每一列,检查是否存在高相关\n", " for column in upper.columns:\n", " # 找到与当前列 column 相关性大于阈值的所有特征\n", " high_corr_features = upper[column][upper[column] > threshold].index.tolist()\n", " \n", " for feature in high_corr_features:\n", " # 比较 column 和 feature 的缺失值情况\n", " # 谁缺失多删谁\n", " if missing_counts[column] > missing_counts[feature]:\n", " to_drop.add(column)\n", " break # column 既然要被删了,就不用再看它与其他特征的关系了\n", " else:\n", " to_drop.add(feature)\n", " \n", " return list(to_drop)\n" ] }, { "cell_type": "code", "execution_count": 98, "id": "7f6d2516", "metadata": {}, "outputs": [], "source": [ "def feature_select(train, test):\n", " \"\"\" 移除 高缺失值列和高相关特征\n", " \"\"\" \n", " train = train.copy()\n", " test = test.copy()\n", "\n", " train_labels = train['TARGET']\n", " train_ids = train['SK_ID_CURR']\n", " test_ids = test['SK_ID_CURR']\n", "\n", " # 这两列不参与\n", " train = train.drop(columns=['TARGET', 'SK_ID_CURR'])\n", " test = test.drop(columns=['SK_ID_CURR'])\n", "\n", " train = train.drop(columns=get_missing_columns(train))\n", " test = test.drop(columns=get_missing_columns(test))\n", " print('remove high missing cols. ', train.shape, test.shape)\n", "\n", " train, test = train.align(test, join='inner', axis=1)\n", " print('align train and test.', train.shape, test.shape)\n", " \n", " train_sample = train.sample(n=int(len(train) * 0.3))\n", " to_drop_columns = get_high_corr_columns(train_sample)\n", " train = train.drop(columns=to_drop_columns)\n", " test = test.drop(columns=to_drop_columns)\n", " \n", " train['TARGET'] = train_labels\n", " train['SK_ID_CURR'] = train_ids\n", " test['SK_ID_CURR'] = test_ids\n", "\n", " print('remove high corr cols.', train.shape, test.shape)\n", "\n", " return train, test" ] }, { "cell_type": "code", "execution_count": 99, "id": "ba1e9454", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import roc_auc_score\n", "from sklearn.metrics import roc_curve\n", "\n", "def plot_roc(targets, prob, name):\n", " fpr, tpr, thresholds = roc_curve(targets, prob)\n", " auc = roc_auc_score(targets, prob)\n", " plt.figure(figsize=(3,3))\n", " plt.plot(fpr, tpr, color='blue', lw=2)\n", " plt.title(f'{name} Roc curve, auc={auc:.3f}')" ] }, { "cell_type": "markdown", "id": "99c51d7e", "metadata": {}, "source": [ "### 引入previous_application表\n", "- previous_agg_by_client" ] }, { "cell_type": "code", "execution_count": 100, "id": "1f93d89f", "metadata": {}, "outputs": [], "source": [ "previous = pd.read_csv('data/previous_application.csv')\n" ] }, { "cell_type": "code", "execution_count": 101, "id": "26473d94", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_PREVSK_ID_CURRNAME_CONTRACT_TYPEAMT_ANNUITYAMT_APPLICATIONAMT_CREDITAMT_DOWN_PAYMENTAMT_GOODS_PRICEWEEKDAY_APPR_PROCESS_STARTHOUR_APPR_PROCESS_START...NAME_SELLER_INDUSTRYCNT_PAYMENTNAME_YIELD_GROUPPRODUCT_COMBINATIONDAYS_FIRST_DRAWINGDAYS_FIRST_DUEDAYS_LAST_DUE_1ST_VERSIONDAYS_LAST_DUEDAYS_TERMINATIONNFLAG_INSURED_ON_APPROVAL
02030495271877Consumer loans1730.43017145.017145.00.017145.0SATURDAY15...Connectivity12.0middlePOS mobile with interest365243.0-42.0300.0-42.0-37.00.0
12802425108129Cash loans25188.615607500.0679671.0NaN607500.0THURSDAY11...XNA36.0low_actionCash X-Sell: low365243.0-134.0916.0365243.0365243.01.0
22523466122040Cash loans15060.735112500.0136444.5NaN112500.0TUESDAY11...XNA12.0highCash X-Sell: high365243.0-271.059.0365243.0365243.01.0
32819243176158Cash loans47041.335450000.0470790.0NaN450000.0MONDAY7...XNA12.0middleCash X-Sell: middle365243.0-482.0-152.0-182.0-177.01.0
41784265202054Cash loans31924.395337500.0404055.0NaN337500.0THURSDAY9...XNA24.0highCash Street: highNaNNaNNaNNaNNaNNaN
\n", "

5 rows × 37 columns

\n", "
" ], "text/plain": [ " SK_ID_PREV SK_ID_CURR NAME_CONTRACT_TYPE AMT_ANNUITY AMT_APPLICATION \\\n", "0 2030495 271877 Consumer loans 1730.430 17145.0 \n", "1 2802425 108129 Cash loans 25188.615 607500.0 \n", "2 2523466 122040 Cash loans 15060.735 112500.0 \n", "3 2819243 176158 Cash loans 47041.335 450000.0 \n", "4 1784265 202054 Cash loans 31924.395 337500.0 \n", "\n", " AMT_CREDIT AMT_DOWN_PAYMENT AMT_GOODS_PRICE WEEKDAY_APPR_PROCESS_START \\\n", "0 17145.0 0.0 17145.0 SATURDAY \n", "1 679671.0 NaN 607500.0 THURSDAY \n", "2 136444.5 NaN 112500.0 TUESDAY \n", "3 470790.0 NaN 450000.0 MONDAY \n", "4 404055.0 NaN 337500.0 THURSDAY \n", "\n", " HOUR_APPR_PROCESS_START ... NAME_SELLER_INDUSTRY CNT_PAYMENT \\\n", "0 15 ... Connectivity 12.0 \n", "1 11 ... XNA 36.0 \n", "2 11 ... XNA 12.0 \n", "3 7 ... XNA 12.0 \n", "4 9 ... XNA 24.0 \n", "\n", " NAME_YIELD_GROUP PRODUCT_COMBINATION DAYS_FIRST_DRAWING \\\n", "0 middle POS mobile with interest 365243.0 \n", "1 low_action Cash X-Sell: low 365243.0 \n", "2 high Cash X-Sell: high 365243.0 \n", "3 middle Cash X-Sell: middle 365243.0 \n", "4 high Cash Street: high NaN \n", "\n", " DAYS_FIRST_DUE DAYS_LAST_DUE_1ST_VERSION DAYS_LAST_DUE DAYS_TERMINATION \\\n", "0 -42.0 300.0 -42.0 -37.0 \n", "1 -134.0 916.0 365243.0 365243.0 \n", "2 -271.0 59.0 365243.0 365243.0 \n", "3 -482.0 -152.0 -182.0 -177.0 \n", "4 NaN NaN NaN NaN \n", "\n", " NFLAG_INSURED_ON_APPROVAL \n", "0 0.0 \n", "1 1.0 \n", "2 1.0 \n", "3 1.0 \n", "4 NaN \n", "\n", "[5 rows x 37 columns]" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous.head()" ] }, { "cell_type": "code", "execution_count": 102, "id": "c9bcc290", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1670214, 37)" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous.shape" ] }, { "cell_type": "code", "execution_count": 103, "id": "ab956de9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['SK_ID_PREV', 'SK_ID_CURR', 'NAME_CONTRACT_TYPE', 'AMT_ANNUITY',\n", " 'AMT_APPLICATION', 'AMT_CREDIT', 'AMT_DOWN_PAYMENT', 'AMT_GOODS_PRICE',\n", " 'WEEKDAY_APPR_PROCESS_START', 'HOUR_APPR_PROCESS_START',\n", " 'FLAG_LAST_APPL_PER_CONTRACT', 'NFLAG_LAST_APPL_IN_DAY',\n", " 'RATE_DOWN_PAYMENT', 'RATE_INTEREST_PRIMARY',\n", " 'RATE_INTEREST_PRIVILEGED', 'NAME_CASH_LOAN_PURPOSE',\n", " 'NAME_CONTRACT_STATUS', 'DAYS_DECISION', 'NAME_PAYMENT_TYPE',\n", " 'CODE_REJECT_REASON', 'NAME_TYPE_SUITE', 'NAME_CLIENT_TYPE',\n", " 'NAME_GOODS_CATEGORY', 'NAME_PORTFOLIO', 'NAME_PRODUCT_TYPE',\n", " 'CHANNEL_TYPE', 'SELLERPLACE_AREA', 'NAME_SELLER_INDUSTRY',\n", " 'CNT_PAYMENT', 'NAME_YIELD_GROUP', 'PRODUCT_COMBINATION',\n", " 'DAYS_FIRST_DRAWING', 'DAYS_FIRST_DUE', 'DAYS_LAST_DUE_1ST_VERSION',\n", " 'DAYS_LAST_DUE', 'DAYS_TERMINATION', 'NFLAG_INSURED_ON_APPROVAL'],\n", " dtype='str')" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous.columns" ] }, { "cell_type": "code", "execution_count": 104, "id": "3ce14a25", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SK_ID_PREV int64\n", "SK_ID_CURR int64\n", "NAME_CONTRACT_TYPE str\n", "AMT_ANNUITY float64\n", "AMT_APPLICATION float64\n", "AMT_CREDIT float64\n", "AMT_DOWN_PAYMENT float64\n", "AMT_GOODS_PRICE float64\n", "WEEKDAY_APPR_PROCESS_START str\n", "HOUR_APPR_PROCESS_START int64\n", "FLAG_LAST_APPL_PER_CONTRACT str\n", "NFLAG_LAST_APPL_IN_DAY int64\n", "RATE_DOWN_PAYMENT float64\n", "RATE_INTEREST_PRIMARY float64\n", "RATE_INTEREST_PRIVILEGED float64\n", "NAME_CASH_LOAN_PURPOSE str\n", "NAME_CONTRACT_STATUS str\n", "DAYS_DECISION int64\n", "NAME_PAYMENT_TYPE str\n", "CODE_REJECT_REASON str\n", "NAME_TYPE_SUITE str\n", "NAME_CLIENT_TYPE str\n", "NAME_GOODS_CATEGORY str\n", "NAME_PORTFOLIO str\n", "NAME_PRODUCT_TYPE str\n", "CHANNEL_TYPE str\n", "SELLERPLACE_AREA int64\n", "NAME_SELLER_INDUSTRY str\n", "CNT_PAYMENT float64\n", "NAME_YIELD_GROUP str\n", "PRODUCT_COMBINATION str\n", "DAYS_FIRST_DRAWING float64\n", "DAYS_FIRST_DUE float64\n", "DAYS_LAST_DUE_1ST_VERSION float64\n", "DAYS_LAST_DUE float64\n", "DAYS_TERMINATION float64\n", "NFLAG_INSURED_ON_APPROVAL float64\n", "dtype: object" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous.dtypes" ] }, { "cell_type": "code", "execution_count": 105, "id": "727132f5", "metadata": {}, "outputs": [], "source": [ "previous_categorical_agg = agg_categorical(previous, ['SK_ID_PREV', 'SK_ID_CURR'], 'previous')" ] }, { "cell_type": "code", "execution_count": 106, "id": "9cb1e993", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_PREVSK_ID_CURRprevious_NAME_CONTRACT_TYPE_Cash loans_meanprevious_NAME_CONTRACT_TYPE_Cash loans_sumprevious_NAME_CONTRACT_TYPE_Consumer loans_meanprevious_NAME_CONTRACT_TYPE_Consumer loans_sumprevious_NAME_CONTRACT_TYPE_Revolving loans_meanprevious_NAME_CONTRACT_TYPE_Revolving loans_sumprevious_NAME_CONTRACT_TYPE_XNA_meanprevious_NAME_CONTRACT_TYPE_XNA_sum...previous_PRODUCT_COMBINATION_POS industry without interest_meanprevious_PRODUCT_COMBINATION_POS industry without interest_sumprevious_PRODUCT_COMBINATION_POS mobile with interest_meanprevious_PRODUCT_COMBINATION_POS mobile with interest_sumprevious_PRODUCT_COMBINATION_POS mobile without interest_meanprevious_PRODUCT_COMBINATION_POS mobile without interest_sumprevious_PRODUCT_COMBINATION_POS other with interest_meanprevious_PRODUCT_COMBINATION_POS other with interest_sumprevious_PRODUCT_COMBINATION_POS others without interest_meanprevious_PRODUCT_COMBINATION_POS others without interest_sum
010000011582710.001.010.000.00...0.000.000.000.000.00
110000021019620.001.010.000.00...0.000.000.000.000.00
210000032524570.001.010.000.00...0.000.000.000.000.00
310000042600940.001.010.000.00...0.000.000.000.000.00
410000051764560.001.010.000.00...0.000.000.000.000.00
\n", "

5 rows × 288 columns

\n", "
" ], "text/plain": [ " SK_ID_PREV SK_ID_CURR previous_NAME_CONTRACT_TYPE_Cash loans_mean \\\n", "0 1000001 158271 0.0 \n", "1 1000002 101962 0.0 \n", "2 1000003 252457 0.0 \n", "3 1000004 260094 0.0 \n", "4 1000005 176456 0.0 \n", "\n", " previous_NAME_CONTRACT_TYPE_Cash loans_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_NAME_CONTRACT_TYPE_Consumer loans_mean \\\n", "0 1.0 \n", "1 1.0 \n", "2 1.0 \n", "3 1.0 \n", "4 1.0 \n", "\n", " previous_NAME_CONTRACT_TYPE_Consumer loans_sum \\\n", "0 1 \n", "1 1 \n", "2 1 \n", "3 1 \n", "4 1 \n", "\n", " previous_NAME_CONTRACT_TYPE_Revolving loans_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_NAME_CONTRACT_TYPE_Revolving loans_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_NAME_CONTRACT_TYPE_XNA_mean previous_NAME_CONTRACT_TYPE_XNA_sum \\\n", "0 0.0 0 \n", "1 0.0 0 \n", "2 0.0 0 \n", "3 0.0 0 \n", "4 0.0 0 \n", "\n", " ... previous_PRODUCT_COMBINATION_POS industry without interest_mean \\\n", "0 ... 0.0 \n", "1 ... 0.0 \n", "2 ... 0.0 \n", "3 ... 0.0 \n", "4 ... 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS industry without interest_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_PRODUCT_COMBINATION_POS mobile with interest_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS mobile with interest_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_PRODUCT_COMBINATION_POS mobile without interest_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS mobile without interest_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_PRODUCT_COMBINATION_POS other with interest_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS other with interest_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_PRODUCT_COMBINATION_POS others without interest_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS others without interest_sum \n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", "[5 rows x 288 columns]" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous_categorical_agg.head()" ] }, { "cell_type": "code", "execution_count": 107, "id": "7e2e86b9", "metadata": {}, "outputs": [], "source": [ "previous_numeric_agg = agg_numeric(previous,['SK_ID_PREV', 'SK_ID_CURR'], 'previous')" ] }, { "cell_type": "code", "execution_count": 108, "id": "b9e1115a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_PREVSK_ID_CURRPREVIOUS_AMT_ANNUITY_MINPREVIOUS_AMT_ANNUITY_MAXPREVIOUS_AMT_ANNUITY_MEANPREVIOUS_AMT_ANNUITY_SUMPREVIOUS_AMT_APPLICATION_MINPREVIOUS_AMT_APPLICATION_MAXPREVIOUS_AMT_APPLICATION_MEANPREVIOUS_AMT_APPLICATION_SUM...PREVIOUS_DAYS_LAST_DUE_MEANPREVIOUS_DAYS_LAST_DUE_SUMPREVIOUS_DAYS_TERMINATION_MINPREVIOUS_DAYS_TERMINATION_MAXPREVIOUS_DAYS_TERMINATION_MEANPREVIOUS_DAYS_TERMINATION_SUMPREVIOUS_NFLAG_INSURED_ON_APPROVAL_MINPREVIOUS_NFLAG_INSURED_ON_APPROVAL_MAXPREVIOUS_NFLAG_INSURED_ON_APPROVAL_MEANPREVIOUS_NFLAG_INSURED_ON_APPROVAL_SUM
010000011582716404.3106404.3106404.3106404.31058905.00058905.00058905.00058905.000...-238.0-238.0-233.0-233.0-233.0-233.00.00.00.00.0
110000021019626264.0006264.0006264.0006264.00039145.50039145.50039145.50039145.500...-1510.0-1510.0-1501.0-1501.0-1501.0-1501.00.00.00.00.0
210000032524574951.3504951.3504951.3504951.35047056.27547056.27547056.27547056.275...365243.0365243.0365243.0365243.0365243.0365243.01.01.01.01.0
310000042600943391.1103391.1103391.1103391.11035144.37035144.37035144.37035144.370...-682.0-682.0-672.0-672.0-672.0-672.00.00.00.00.0
4100000517645614713.60514713.60514713.60514713.605123486.075123486.075123486.075123486.075...-1418.0-1418.0-1415.0-1415.0-1415.0-1415.00.00.00.00.0
\n", "

5 rows × 78 columns

\n", "
" ], "text/plain": [ " SK_ID_PREV SK_ID_CURR PREVIOUS_AMT_ANNUITY_MIN PREVIOUS_AMT_ANNUITY_MAX \\\n", "0 1000001 158271 6404.310 6404.310 \n", "1 1000002 101962 6264.000 6264.000 \n", "2 1000003 252457 4951.350 4951.350 \n", "3 1000004 260094 3391.110 3391.110 \n", "4 1000005 176456 14713.605 14713.605 \n", "\n", " PREVIOUS_AMT_ANNUITY_MEAN PREVIOUS_AMT_ANNUITY_SUM \\\n", "0 6404.310 6404.310 \n", "1 6264.000 6264.000 \n", "2 4951.350 4951.350 \n", "3 3391.110 3391.110 \n", "4 14713.605 14713.605 \n", "\n", " PREVIOUS_AMT_APPLICATION_MIN PREVIOUS_AMT_APPLICATION_MAX \\\n", "0 58905.000 58905.000 \n", "1 39145.500 39145.500 \n", "2 47056.275 47056.275 \n", "3 35144.370 35144.370 \n", "4 123486.075 123486.075 \n", "\n", " PREVIOUS_AMT_APPLICATION_MEAN PREVIOUS_AMT_APPLICATION_SUM ... \\\n", "0 58905.000 58905.000 ... \n", "1 39145.500 39145.500 ... \n", "2 47056.275 47056.275 ... \n", "3 35144.370 35144.370 ... \n", "4 123486.075 123486.075 ... \n", "\n", " PREVIOUS_DAYS_LAST_DUE_MEAN PREVIOUS_DAYS_LAST_DUE_SUM \\\n", "0 -238.0 -238.0 \n", "1 -1510.0 -1510.0 \n", "2 365243.0 365243.0 \n", "3 -682.0 -682.0 \n", "4 -1418.0 -1418.0 \n", "\n", " PREVIOUS_DAYS_TERMINATION_MIN PREVIOUS_DAYS_TERMINATION_MAX \\\n", "0 -233.0 -233.0 \n", "1 -1501.0 -1501.0 \n", "2 365243.0 365243.0 \n", "3 -672.0 -672.0 \n", "4 -1415.0 -1415.0 \n", "\n", " PREVIOUS_DAYS_TERMINATION_MEAN PREVIOUS_DAYS_TERMINATION_SUM \\\n", "0 -233.0 -233.0 \n", "1 -1501.0 -1501.0 \n", "2 365243.0 365243.0 \n", "3 -672.0 -672.0 \n", "4 -1415.0 -1415.0 \n", "\n", " PREVIOUS_NFLAG_INSURED_ON_APPROVAL_MIN \\\n", "0 0.0 \n", "1 0.0 \n", "2 1.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " PREVIOUS_NFLAG_INSURED_ON_APPROVAL_MAX \\\n", "0 0.0 \n", "1 0.0 \n", "2 1.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " PREVIOUS_NFLAG_INSURED_ON_APPROVAL_MEAN \\\n", "0 0.0 \n", "1 0.0 \n", "2 1.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " PREVIOUS_NFLAG_INSURED_ON_APPROVAL_SUM \n", "0 0.0 \n", "1 0.0 \n", "2 1.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", "[5 rows x 78 columns]" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous_numeric_agg.head()" ] }, { "cell_type": "code", "execution_count": 109, "id": "a371364d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_PREVSK_ID_CURRPREVIOUS_AMT_ANNUITY_MINPREVIOUS_AMT_ANNUITY_MAXPREVIOUS_AMT_ANNUITY_MEANPREVIOUS_AMT_ANNUITY_SUMPREVIOUS_AMT_APPLICATION_MINPREVIOUS_AMT_APPLICATION_MAXPREVIOUS_AMT_APPLICATION_MEANPREVIOUS_AMT_APPLICATION_SUM...previous_PRODUCT_COMBINATION_POS industry without interest_meanprevious_PRODUCT_COMBINATION_POS industry without interest_sumprevious_PRODUCT_COMBINATION_POS mobile with interest_meanprevious_PRODUCT_COMBINATION_POS mobile with interest_sumprevious_PRODUCT_COMBINATION_POS mobile without interest_meanprevious_PRODUCT_COMBINATION_POS mobile without interest_sumprevious_PRODUCT_COMBINATION_POS other with interest_meanprevious_PRODUCT_COMBINATION_POS other with interest_sumprevious_PRODUCT_COMBINATION_POS others without interest_meanprevious_PRODUCT_COMBINATION_POS others without interest_sum
010000011582716404.3106404.3106404.3106404.31058905.00058905.00058905.00058905.000...0.000.000.000.000.00
110000021019626264.0006264.0006264.0006264.00039145.50039145.50039145.50039145.500...0.000.000.000.000.00
210000032524574951.3504951.3504951.3504951.35047056.27547056.27547056.27547056.275...0.000.000.000.000.00
310000042600943391.1103391.1103391.1103391.11035144.37035144.37035144.37035144.370...0.000.000.000.000.00
4100000517645614713.60514713.60514713.60514713.605123486.075123486.075123486.075123486.075...0.000.000.000.000.00
\n", "

5 rows × 364 columns

\n", "
" ], "text/plain": [ " SK_ID_PREV SK_ID_CURR PREVIOUS_AMT_ANNUITY_MIN PREVIOUS_AMT_ANNUITY_MAX \\\n", "0 1000001 158271 6404.310 6404.310 \n", "1 1000002 101962 6264.000 6264.000 \n", "2 1000003 252457 4951.350 4951.350 \n", "3 1000004 260094 3391.110 3391.110 \n", "4 1000005 176456 14713.605 14713.605 \n", "\n", " PREVIOUS_AMT_ANNUITY_MEAN PREVIOUS_AMT_ANNUITY_SUM \\\n", "0 6404.310 6404.310 \n", "1 6264.000 6264.000 \n", "2 4951.350 4951.350 \n", "3 3391.110 3391.110 \n", "4 14713.605 14713.605 \n", "\n", " PREVIOUS_AMT_APPLICATION_MIN PREVIOUS_AMT_APPLICATION_MAX \\\n", "0 58905.000 58905.000 \n", "1 39145.500 39145.500 \n", "2 47056.275 47056.275 \n", "3 35144.370 35144.370 \n", "4 123486.075 123486.075 \n", "\n", " PREVIOUS_AMT_APPLICATION_MEAN PREVIOUS_AMT_APPLICATION_SUM ... \\\n", "0 58905.000 58905.000 ... \n", "1 39145.500 39145.500 ... \n", "2 47056.275 47056.275 ... \n", "3 35144.370 35144.370 ... \n", "4 123486.075 123486.075 ... \n", "\n", " previous_PRODUCT_COMBINATION_POS industry without interest_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS industry without interest_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_PRODUCT_COMBINATION_POS mobile with interest_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS mobile with interest_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_PRODUCT_COMBINATION_POS mobile without interest_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS mobile without interest_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_PRODUCT_COMBINATION_POS other with interest_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS other with interest_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " previous_PRODUCT_COMBINATION_POS others without interest_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " previous_PRODUCT_COMBINATION_POS others without interest_sum \n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", "[5 rows x 364 columns]" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous_agg = pd.merge(previous_numeric_agg, previous_categorical_agg, on=['SK_ID_PREV', 'SK_ID_CURR'], how='left')\n", "previous_agg.head()" ] }, { "cell_type": "markdown", "id": "fdf7db02", "metadata": {}, "source": [ "按照client聚合" ] }, { "cell_type": "code", "execution_count": 110, "id": "8f2d1f46", "metadata": {}, "outputs": [], "source": [ "previous_agg_by_client = agg_numeric(previous_agg, 'SK_ID_CURR', exclude_columns=['SK_ID_PREV'])" ] }, { "cell_type": "code", "execution_count": 111, "id": "6baefb18", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['SK_ID_CURR', 'PREVIOUS_AMT_ANNUITY_MIN_MIN',\n", " 'PREVIOUS_AMT_ANNUITY_MIN_MAX', 'PREVIOUS_AMT_ANNUITY_MIN_MEAN',\n", " 'PREVIOUS_AMT_ANNUITY_MIN_SUM', 'PREVIOUS_AMT_ANNUITY_MAX_MIN',\n", " 'PREVIOUS_AMT_ANNUITY_MAX_MAX', 'PREVIOUS_AMT_ANNUITY_MAX_MEAN',\n", " 'PREVIOUS_AMT_ANNUITY_MAX_SUM', 'PREVIOUS_AMT_ANNUITY_MEAN_MIN',\n", " ...\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_SUM'],\n", " dtype='str', length=1449)" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous_agg_by_client.columns" ] }, { "cell_type": "code", "execution_count": 112, "id": "517de46a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRPREVIOUS_AMT_ANNUITY_MIN_MINPREVIOUS_AMT_ANNUITY_MIN_MAXPREVIOUS_AMT_ANNUITY_MIN_MEANPREVIOUS_AMT_ANNUITY_MIN_SUMPREVIOUS_AMT_ANNUITY_MAX_MINPREVIOUS_AMT_ANNUITY_MAX_MAXPREVIOUS_AMT_ANNUITY_MAX_MEANPREVIOUS_AMT_ANNUITY_MAX_SUMPREVIOUS_AMT_ANNUITY_MEAN_MIN...PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_MEANPREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_SUMPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MINPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MAXPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MEANPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_SUMPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MINPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MAXPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MEANPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_SUM
01000013951.0003951.0003951.0003951.0003951.0003951.0003951.0003951.0003951.000...0.000.00.00.00.0000.00
11000029251.7759251.7759251.7759251.7759251.7759251.7759251.7759251.7759251.775...1.010.00.00.00.0000.00
21000036737.31098356.99556553.990169661.9706737.31098356.99556553.990169661.9706737.310...0.000.00.00.00.0000.00
31000045357.2505357.2505357.2505357.2505357.2505357.2505357.2505357.2505357.250...0.000.00.00.00.0000.00
41000054813.2004813.2004813.2004813.2004813.2004813.2004813.2004813.2004813.200...0.000.00.00.00.0000.00
\n", "

5 rows × 1449 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR PREVIOUS_AMT_ANNUITY_MIN_MIN PREVIOUS_AMT_ANNUITY_MIN_MAX \\\n", "0 100001 3951.000 3951.000 \n", "1 100002 9251.775 9251.775 \n", "2 100003 6737.310 98356.995 \n", "3 100004 5357.250 5357.250 \n", "4 100005 4813.200 4813.200 \n", "\n", " PREVIOUS_AMT_ANNUITY_MIN_MEAN PREVIOUS_AMT_ANNUITY_MIN_SUM \\\n", "0 3951.000 3951.000 \n", "1 9251.775 9251.775 \n", "2 56553.990 169661.970 \n", "3 5357.250 5357.250 \n", "4 4813.200 4813.200 \n", "\n", " PREVIOUS_AMT_ANNUITY_MAX_MIN PREVIOUS_AMT_ANNUITY_MAX_MAX \\\n", "0 3951.000 3951.000 \n", "1 9251.775 9251.775 \n", "2 6737.310 98356.995 \n", "3 5357.250 5357.250 \n", "4 4813.200 4813.200 \n", "\n", " PREVIOUS_AMT_ANNUITY_MAX_MEAN PREVIOUS_AMT_ANNUITY_MAX_SUM \\\n", "0 3951.000 3951.000 \n", "1 9251.775 9251.775 \n", "2 56553.990 169661.970 \n", "3 5357.250 5357.250 \n", "4 4813.200 4813.200 \n", "\n", " PREVIOUS_AMT_ANNUITY_MEAN_MIN ... \\\n", "0 3951.000 ... \n", "1 9251.775 ... \n", "2 6737.310 ... \n", "3 5357.250 ... \n", "4 4813.200 ... \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_MEAN \\\n", "0 0.0 \n", "1 1.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_SUM \\\n", "0 0 \n", "1 1 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MIN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MAX \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MEAN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_SUM \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MIN \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MAX \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MEAN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_SUM \n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", "[5 rows x 1449 columns]" ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous_agg_by_client.head()" ] }, { "cell_type": "code", "execution_count": 113, "id": "80b055b7", "metadata": {}, "outputs": [], "source": [ "sk_id_prev_cnts = previous_agg.groupby(by='SK_ID_CURR')['SK_ID_PREV'].count().reset_index().rename(columns = {'SK_ID_PREV' : 'prev_applications_counts'})" ] }, { "cell_type": "code", "execution_count": 114, "id": "504b90e8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRprev_applications_counts
01000011
11000021
21000033
31000041
41000052
.........
3388524562511
3388534562521
3388544562532
3388554562542
3388564562558
\n", "

338857 rows × 2 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR prev_applications_counts\n", "0 100001 1\n", "1 100002 1\n", "2 100003 3\n", "3 100004 1\n", "4 100005 2\n", "... ... ...\n", "338852 456251 1\n", "338853 456252 1\n", "338854 456253 2\n", "338855 456254 2\n", "338856 456255 8\n", "\n", "[338857 rows x 2 columns]" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sk_id_prev_cnts" ] }, { "cell_type": "code", "execution_count": 115, "id": "d2ca8c08", "metadata": {}, "outputs": [], "source": [ "previous_agg_by_client = pd.merge(\n", " previous_agg_by_client,\n", " sk_id_prev_cnts,\n", " on = 'SK_ID_CURR',\n", " how = 'left'\n", ")" ] }, { "cell_type": "code", "execution_count": 116, "id": "36781ed3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRPREVIOUS_AMT_ANNUITY_MIN_MINPREVIOUS_AMT_ANNUITY_MIN_MAXPREVIOUS_AMT_ANNUITY_MIN_MEANPREVIOUS_AMT_ANNUITY_MIN_SUMPREVIOUS_AMT_ANNUITY_MAX_MINPREVIOUS_AMT_ANNUITY_MAX_MAXPREVIOUS_AMT_ANNUITY_MAX_MEANPREVIOUS_AMT_ANNUITY_MAX_SUMPREVIOUS_AMT_ANNUITY_MEAN_MIN...PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_SUMPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MINPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MAXPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MEANPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_SUMPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MINPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MAXPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MEANPREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_SUMprev_applications_counts
01000013951.0003951.0003951.0000003951.0003951.0003951.0003951.0000003951.0003951.000...00.00.00.00.0000.001
11000029251.7759251.7759251.7750009251.7759251.7759251.7759251.7750009251.7759251.775...10.00.00.00.0000.001
21000036737.31098356.99556553.990000169661.9706737.31098356.99556553.990000169661.9706737.310...00.00.00.00.0000.003
31000045357.2505357.2505357.2500005357.2505357.2505357.2505357.2500005357.2505357.250...00.00.00.00.0000.001
41000054813.2004813.2004813.2000004813.2004813.2004813.2004813.2000004813.2004813.200...00.00.00.00.0000.002
..................................................................
3388524562516605.9106605.9106605.9100006605.9106605.9106605.9106605.9100006605.9106605.910...00.00.00.00.0000.001
33885345625210074.46510074.46510074.46500010074.46510074.46510074.46510074.46500010074.46510074.465...00.00.00.00.0000.001
3388544562533973.0955567.7154770.4050009540.8103973.0955567.7154770.4050009540.8103973.095...00.00.00.00.0000.002
3388554562542296.44019065.82510681.13250021362.2652296.44019065.82510681.13250021362.2652296.440...00.00.00.00.0000.002
3388564562552250.00054022.14020775.391875166203.1352250.00054022.14020775.391875166203.1352250.000...00.00.00.00.0000.008
\n", "

338857 rows × 1450 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR PREVIOUS_AMT_ANNUITY_MIN_MIN \\\n", "0 100001 3951.000 \n", "1 100002 9251.775 \n", "2 100003 6737.310 \n", "3 100004 5357.250 \n", "4 100005 4813.200 \n", "... ... ... \n", "338852 456251 6605.910 \n", "338853 456252 10074.465 \n", "338854 456253 3973.095 \n", "338855 456254 2296.440 \n", "338856 456255 2250.000 \n", "\n", " PREVIOUS_AMT_ANNUITY_MIN_MAX PREVIOUS_AMT_ANNUITY_MIN_MEAN \\\n", "0 3951.000 3951.000000 \n", "1 9251.775 9251.775000 \n", "2 98356.995 56553.990000 \n", "3 5357.250 5357.250000 \n", "4 4813.200 4813.200000 \n", "... ... ... \n", "338852 6605.910 6605.910000 \n", "338853 10074.465 10074.465000 \n", "338854 5567.715 4770.405000 \n", "338855 19065.825 10681.132500 \n", "338856 54022.140 20775.391875 \n", "\n", " PREVIOUS_AMT_ANNUITY_MIN_SUM PREVIOUS_AMT_ANNUITY_MAX_MIN \\\n", "0 3951.000 3951.000 \n", "1 9251.775 9251.775 \n", "2 169661.970 6737.310 \n", "3 5357.250 5357.250 \n", "4 4813.200 4813.200 \n", "... ... ... \n", "338852 6605.910 6605.910 \n", "338853 10074.465 10074.465 \n", "338854 9540.810 3973.095 \n", "338855 21362.265 2296.440 \n", "338856 166203.135 2250.000 \n", "\n", " PREVIOUS_AMT_ANNUITY_MAX_MAX PREVIOUS_AMT_ANNUITY_MAX_MEAN \\\n", "0 3951.000 3951.000000 \n", "1 9251.775 9251.775000 \n", "2 98356.995 56553.990000 \n", "3 5357.250 5357.250000 \n", "4 4813.200 4813.200000 \n", "... ... ... \n", "338852 6605.910 6605.910000 \n", "338853 10074.465 10074.465000 \n", "338854 5567.715 4770.405000 \n", "338855 19065.825 10681.132500 \n", "338856 54022.140 20775.391875 \n", "\n", " PREVIOUS_AMT_ANNUITY_MAX_SUM PREVIOUS_AMT_ANNUITY_MEAN_MIN ... \\\n", "0 3951.000 3951.000 ... \n", "1 9251.775 9251.775 ... \n", "2 169661.970 6737.310 ... \n", "3 5357.250 5357.250 ... \n", "4 4813.200 4813.200 ... \n", "... ... ... ... \n", "338852 6605.910 6605.910 ... \n", "338853 10074.465 10074.465 ... \n", "338854 9540.810 3973.095 ... \n", "338855 21362.265 2296.440 ... \n", "338856 166203.135 2250.000 ... \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_SUM \\\n", "0 0 \n", "1 1 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "338852 0 \n", "338853 0 \n", "338854 0 \n", "338855 0 \n", "338856 0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MIN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "338852 0.0 \n", "338853 0.0 \n", "338854 0.0 \n", "338855 0.0 \n", "338856 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MAX \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "338852 0.0 \n", "338853 0.0 \n", "338854 0.0 \n", "338855 0.0 \n", "338856 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_MEAN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "338852 0.0 \n", "338853 0.0 \n", "338854 0.0 \n", "338855 0.0 \n", "338856 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_MEAN_SUM \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "338852 0.0 \n", "338853 0.0 \n", "338854 0.0 \n", "338855 0.0 \n", "338856 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MIN \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "338852 0 \n", "338853 0 \n", "338854 0 \n", "338855 0 \n", "338856 0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MAX \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "338852 0 \n", "338853 0 \n", "338854 0 \n", "338855 0 \n", "338856 0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MEAN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "338852 0.0 \n", "338853 0.0 \n", "338854 0.0 \n", "338855 0.0 \n", "338856 0.0 \n", "\n", " PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_SUM \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "338852 0 \n", "338853 0 \n", "338854 0 \n", "338855 0 \n", "338856 0 \n", "\n", " prev_applications_counts \n", "0 1 \n", "1 1 \n", "2 3 \n", "3 1 \n", "4 2 \n", "... ... \n", "338852 1 \n", "338853 1 \n", "338854 2 \n", "338855 2 \n", "338856 8 \n", "\n", "[338857 rows x 1450 columns]" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "previous_agg_by_client" ] }, { "cell_type": "code", "execution_count": 117, "id": "c9cb86eb", "metadata": {}, "outputs": [], "source": [ "previous_agg_by_client.to_feather('checkpoints/02_previous_agg.feather')" ] }, { "cell_type": "code", "execution_count": 118, "id": "57dd07fc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6381" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "del previous, previous_categorical_agg, previous_numeric_agg, previous_agg,sk_id_prev_cnts\n", "gc.collect()" ] }, { "cell_type": "markdown", "id": "f2a2fa74", "metadata": {}, "source": [ "特征选择" ] }, { "cell_type": "code", "execution_count": 119, "id": "2ae594db", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train: (307511, 1692), test: (48744, 1691)\n", "remove high missing cols. (307511, 1672) (48744, 1672)\n", "align train and test. (307511, 1672) (48744, 1672)\n", "remove high corr cols. (307511, 764) (48744, 763)\n", "train: (307511, 764), test: (48744, 763)\n" ] } ], "source": [ "train = pd.read_feather('checkpoints/01_train_app_base.feather')\n", "test = pd.read_feather('checkpoints/01_test_app_base.feather')\n", "previous_agg = pd.read_feather('checkpoints/02_previous_agg.feather')\n", "\n", "train = pd.merge(train, previous_agg, on='SK_ID_CURR', how='left')\n", "test = pd.merge(test, previous_agg, on='SK_ID_CURR', how='left')\n", "\n", "print(f'train: {train.shape}, test: {test.shape}')\n", "train, test = feature_select(train, test)\n", "print(f'train: {train.shape}, test: {test.shape}')\n", "\n", "train.to_feather('checkpoints/04_train_app_previous_cleaned.feather')\n", "test.to_feather('checkpoints/04_test_app_previous_cleaned.feather')\n" ] }, { "cell_type": "code", "execution_count": null, "id": "8e75ffee", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "e81bdb9f", "metadata": {}, "source": [ "### credit_card_balance" ] }, { "cell_type": "code", "execution_count": 120, "id": "d140241e", "metadata": {}, "outputs": [], "source": [ "credit_card_balance = pd.read_csv('data/credit_card_balance.csv')" ] }, { "cell_type": "code", "execution_count": 121, "id": "9b3374b3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_PREVSK_ID_CURRMONTHS_BALANCEAMT_BALANCEAMT_CREDIT_LIMIT_ACTUALAMT_DRAWINGS_ATM_CURRENTAMT_DRAWINGS_CURRENTAMT_DRAWINGS_OTHER_CURRENTAMT_DRAWINGS_POS_CURRENTAMT_INST_MIN_REGULARITY...AMT_RECIVABLEAMT_TOTAL_RECEIVABLECNT_DRAWINGS_ATM_CURRENTCNT_DRAWINGS_CURRENTCNT_DRAWINGS_OTHER_CURRENTCNT_DRAWINGS_POS_CURRENTCNT_INSTALMENT_MATURE_CUMNAME_CONTRACT_STATUSSK_DPDSK_DPD_DEF
02562384378907-656.9701350000.0877.50.0877.51700.325...0.0000.0000.010.01.035.0Active00
12582071363914-163975.555450002250.02250.00.00.02250.000...64875.55564875.5551.010.00.069.0Active00
21740877371185-731815.2254500000.00.00.00.02250.000...31460.08531460.0850.000.00.030.0Active00
31389973337855-4236572.1102250002250.02250.00.00.011795.760...233048.970233048.9701.010.00.010.0Active00
41891521126868-1453919.4554500000.011547.00.011547.022924.890...453919.455453919.4550.010.01.0101.0Active00
\n", "

5 rows × 23 columns

\n", "
" ], "text/plain": [ " SK_ID_PREV SK_ID_CURR MONTHS_BALANCE AMT_BALANCE \\\n", "0 2562384 378907 -6 56.970 \n", "1 2582071 363914 -1 63975.555 \n", "2 1740877 371185 -7 31815.225 \n", "3 1389973 337855 -4 236572.110 \n", "4 1891521 126868 -1 453919.455 \n", "\n", " AMT_CREDIT_LIMIT_ACTUAL AMT_DRAWINGS_ATM_CURRENT AMT_DRAWINGS_CURRENT \\\n", "0 135000 0.0 877.5 \n", "1 45000 2250.0 2250.0 \n", "2 450000 0.0 0.0 \n", "3 225000 2250.0 2250.0 \n", "4 450000 0.0 11547.0 \n", "\n", " AMT_DRAWINGS_OTHER_CURRENT AMT_DRAWINGS_POS_CURRENT \\\n", "0 0.0 877.5 \n", "1 0.0 0.0 \n", "2 0.0 0.0 \n", "3 0.0 0.0 \n", "4 0.0 11547.0 \n", "\n", " AMT_INST_MIN_REGULARITY ... AMT_RECIVABLE AMT_TOTAL_RECEIVABLE \\\n", "0 1700.325 ... 0.000 0.000 \n", "1 2250.000 ... 64875.555 64875.555 \n", "2 2250.000 ... 31460.085 31460.085 \n", "3 11795.760 ... 233048.970 233048.970 \n", "4 22924.890 ... 453919.455 453919.455 \n", "\n", " CNT_DRAWINGS_ATM_CURRENT CNT_DRAWINGS_CURRENT CNT_DRAWINGS_OTHER_CURRENT \\\n", "0 0.0 1 0.0 \n", "1 1.0 1 0.0 \n", "2 0.0 0 0.0 \n", "3 1.0 1 0.0 \n", "4 0.0 1 0.0 \n", "\n", " CNT_DRAWINGS_POS_CURRENT CNT_INSTALMENT_MATURE_CUM NAME_CONTRACT_STATUS \\\n", "0 1.0 35.0 Active \n", "1 0.0 69.0 Active \n", "2 0.0 30.0 Active \n", "3 0.0 10.0 Active \n", "4 1.0 101.0 Active \n", "\n", " SK_DPD SK_DPD_DEF \n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 \n", "\n", "[5 rows x 23 columns]" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "credit_card_balance.head()" ] }, { "cell_type": "code", "execution_count": 122, "id": "d8db17ad", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SK_ID_PREV int64\n", "SK_ID_CURR int64\n", "MONTHS_BALANCE int64\n", "AMT_BALANCE float64\n", "AMT_CREDIT_LIMIT_ACTUAL int64\n", "AMT_DRAWINGS_ATM_CURRENT float64\n", "AMT_DRAWINGS_CURRENT float64\n", "AMT_DRAWINGS_OTHER_CURRENT float64\n", "AMT_DRAWINGS_POS_CURRENT float64\n", "AMT_INST_MIN_REGULARITY float64\n", "AMT_PAYMENT_CURRENT float64\n", "AMT_PAYMENT_TOTAL_CURRENT float64\n", "AMT_RECEIVABLE_PRINCIPAL float64\n", "AMT_RECIVABLE float64\n", "AMT_TOTAL_RECEIVABLE float64\n", "CNT_DRAWINGS_ATM_CURRENT float64\n", "CNT_DRAWINGS_CURRENT int64\n", "CNT_DRAWINGS_OTHER_CURRENT float64\n", "CNT_DRAWINGS_POS_CURRENT float64\n", "CNT_INSTALMENT_MATURE_CUM float64\n", "NAME_CONTRACT_STATUS str\n", "SK_DPD int64\n", "SK_DPD_DEF int64\n", "dtype: object" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "credit_card_balance.dtypes" ] }, { "cell_type": "code", "execution_count": 123, "id": "3972293c", "metadata": {}, "outputs": [], "source": [ "credit_card_balance_numeric_agg = agg_numeric(credit_card_balance, ['SK_ID_CURR', 'SK_ID_PREV'], 'credit_card_balance')" ] }, { "cell_type": "code", "execution_count": 124, "id": "2cecf9f9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRSK_ID_PREVCREDIT_CARD_BALANCE_MONTHS_BALANCE_MINCREDIT_CARD_BALANCE_MONTHS_BALANCE_MAXCREDIT_CARD_BALANCE_MONTHS_BALANCE_MEANCREDIT_CARD_BALANCE_MONTHS_BALANCE_SUMCREDIT_CARD_BALANCE_AMT_BALANCE_MINCREDIT_CARD_BALANCE_AMT_BALANCE_MAXCREDIT_CARD_BALANCE_AMT_BALANCE_MEANCREDIT_CARD_BALANCE_AMT_BALANCE_SUM...CREDIT_CARD_BALANCE_CNT_INSTALMENT_MATURE_CUM_MEANCREDIT_CARD_BALANCE_CNT_INSTALMENT_MATURE_CUM_SUMCREDIT_CARD_BALANCE_SK_DPD_MINCREDIT_CARD_BALANCE_SK_DPD_MAXCREDIT_CARD_BALANCE_SK_DPD_MEANCREDIT_CARD_BALANCE_SK_DPD_SUMCREDIT_CARD_BALANCE_SK_DPD_DEF_MINCREDIT_CARD_BALANCE_SK_DPD_DEF_MAXCREDIT_CARD_BALANCE_SK_DPD_DEF_MEANCREDIT_CARD_BALANCE_SK_DPD_DEF_SUM
01000061489396-6-1-3.5-210.0000.0000.0000000.000...0.0000000.0000.0000000000.0000000
11000111843384-75-2-38.5-28490.000189000.00054482.1111494031676.225...25.7671231881.0000.0000000000.0000000
21000132038692-96-1-48.5-46560.000161420.22018159.9192191743352.245...18.7191011666.0010.0104171010.0104171
31000212594025-18-2-10.0-1700.0000.0000.0000000.000...0.0000000.0000.0000000000.0000000
41000231499902-11-4-7.5-600.0000.0000.0000000.000...0.0000000.0000.0000000000.0000000
..................................................................
1043024562442181926-41-1-21.0-8610.000453627.675131834.7307325405223.960...13.600000544.0000.0000000000.0000000
1043034562461079732-9-2-5.5-440.00043490.11513136.731875105093.855...3.50000028.0000.0000000000.0000000
1043044562471595171-96-2-49.0-46550.000190202.13023216.3962112205557.640...26.4947372517.0010.0315793010.0210532
1043054562482743495-24-2-13.0-2990.0000.0000.0000000.000...0.0000000.0000.0000000000.0000000
1043064562501794451-12-1-6.5-78153832.725200208.915173589.3262502083071.915...4.58333355.0000.0000000000.0000000
\n", "

104307 rows × 82 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR SK_ID_PREV CREDIT_CARD_BALANCE_MONTHS_BALANCE_MIN \\\n", "0 100006 1489396 -6 \n", "1 100011 1843384 -75 \n", "2 100013 2038692 -96 \n", "3 100021 2594025 -18 \n", "4 100023 1499902 -11 \n", "... ... ... ... \n", "104302 456244 2181926 -41 \n", "104303 456246 1079732 -9 \n", "104304 456247 1595171 -96 \n", "104305 456248 2743495 -24 \n", "104306 456250 1794451 -12 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX \\\n", "0 -1 \n", "1 -2 \n", "2 -1 \n", "3 -2 \n", "4 -4 \n", "... ... \n", "104302 -1 \n", "104303 -2 \n", "104304 -2 \n", "104305 -2 \n", "104306 -1 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MEAN \\\n", "0 -3.5 \n", "1 -38.5 \n", "2 -48.5 \n", "3 -10.0 \n", "4 -7.5 \n", "... ... \n", "104302 -21.0 \n", "104303 -5.5 \n", "104304 -49.0 \n", "104305 -13.0 \n", "104306 -6.5 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_SUM \\\n", "0 -21 \n", "1 -2849 \n", "2 -4656 \n", "3 -170 \n", "4 -60 \n", "... ... \n", "104302 -861 \n", "104303 -44 \n", "104304 -4655 \n", "104305 -299 \n", "104306 -78 \n", "\n", " CREDIT_CARD_BALANCE_AMT_BALANCE_MIN \\\n", "0 0.000 \n", "1 0.000 \n", "2 0.000 \n", "3 0.000 \n", "4 0.000 \n", "... ... \n", "104302 0.000 \n", "104303 0.000 \n", "104304 0.000 \n", "104305 0.000 \n", "104306 153832.725 \n", "\n", " CREDIT_CARD_BALANCE_AMT_BALANCE_MAX \\\n", "0 0.000 \n", "1 189000.000 \n", "2 161420.220 \n", "3 0.000 \n", "4 0.000 \n", "... ... \n", "104302 453627.675 \n", "104303 43490.115 \n", "104304 190202.130 \n", "104305 0.000 \n", "104306 200208.915 \n", "\n", " CREDIT_CARD_BALANCE_AMT_BALANCE_MEAN \\\n", "0 0.000000 \n", "1 54482.111149 \n", "2 18159.919219 \n", "3 0.000000 \n", "4 0.000000 \n", "... ... \n", "104302 131834.730732 \n", "104303 13136.731875 \n", "104304 23216.396211 \n", "104305 0.000000 \n", "104306 173589.326250 \n", "\n", " CREDIT_CARD_BALANCE_AMT_BALANCE_SUM ... \\\n", "0 0.000 ... \n", "1 4031676.225 ... \n", "2 1743352.245 ... \n", "3 0.000 ... \n", "4 0.000 ... \n", "... ... ... \n", "104302 5405223.960 ... \n", "104303 105093.855 ... \n", "104304 2205557.640 ... \n", "104305 0.000 ... \n", "104306 2083071.915 ... \n", "\n", " CREDIT_CARD_BALANCE_CNT_INSTALMENT_MATURE_CUM_MEAN \\\n", "0 0.000000 \n", "1 25.767123 \n", "2 18.719101 \n", "3 0.000000 \n", "4 0.000000 \n", "... ... \n", "104302 13.600000 \n", "104303 3.500000 \n", "104304 26.494737 \n", "104305 0.000000 \n", "104306 4.583333 \n", "\n", " CREDIT_CARD_BALANCE_CNT_INSTALMENT_MATURE_CUM_SUM \\\n", "0 0.0 \n", "1 1881.0 \n", "2 1666.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "104302 544.0 \n", "104303 28.0 \n", "104304 2517.0 \n", "104305 0.0 \n", "104306 55.0 \n", "\n", " CREDIT_CARD_BALANCE_SK_DPD_MIN CREDIT_CARD_BALANCE_SK_DPD_MAX \\\n", "0 0 0 \n", "1 0 0 \n", "2 0 1 \n", "3 0 0 \n", "4 0 0 \n", "... ... ... \n", "104302 0 0 \n", "104303 0 0 \n", "104304 0 1 \n", "104305 0 0 \n", "104306 0 0 \n", "\n", " CREDIT_CARD_BALANCE_SK_DPD_MEAN CREDIT_CARD_BALANCE_SK_DPD_SUM \\\n", "0 0.000000 0 \n", "1 0.000000 0 \n", "2 0.010417 1 \n", "3 0.000000 0 \n", "4 0.000000 0 \n", "... ... ... \n", "104302 0.000000 0 \n", "104303 0.000000 0 \n", "104304 0.031579 3 \n", "104305 0.000000 0 \n", "104306 0.000000 0 \n", "\n", " CREDIT_CARD_BALANCE_SK_DPD_DEF_MIN \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "104302 0 \n", "104303 0 \n", "104304 0 \n", "104305 0 \n", "104306 0 \n", "\n", " CREDIT_CARD_BALANCE_SK_DPD_DEF_MAX \\\n", "0 0 \n", "1 0 \n", "2 1 \n", "3 0 \n", "4 0 \n", "... ... \n", "104302 0 \n", "104303 0 \n", "104304 1 \n", "104305 0 \n", "104306 0 \n", "\n", " CREDIT_CARD_BALANCE_SK_DPD_DEF_MEAN \\\n", "0 0.000000 \n", "1 0.000000 \n", "2 0.010417 \n", "3 0.000000 \n", "4 0.000000 \n", "... ... \n", "104302 0.000000 \n", "104303 0.000000 \n", "104304 0.021053 \n", "104305 0.000000 \n", "104306 0.000000 \n", "\n", " CREDIT_CARD_BALANCE_SK_DPD_DEF_SUM \n", "0 0 \n", "1 0 \n", "2 1 \n", "3 0 \n", "4 0 \n", "... ... \n", "104302 0 \n", "104303 0 \n", "104304 2 \n", "104305 0 \n", "104306 0 \n", "\n", "[104307 rows x 82 columns]" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "credit_card_balance_numeric_agg" ] }, { "cell_type": "code", "execution_count": 125, "id": "8c344c1c", "metadata": {}, "outputs": [], "source": [ "credit_card_balance_categorical_agg = agg_categorical(credit_card_balance, ['SK_ID_CURR', 'SK_ID_PREV'], 'credit_card_balance')" ] }, { "cell_type": "code", "execution_count": 126, "id": "04c08130", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRSK_ID_PREVcredit_card_balance_NAME_CONTRACT_STATUS_Active_meancredit_card_balance_NAME_CONTRACT_STATUS_Active_sumcredit_card_balance_NAME_CONTRACT_STATUS_Approved_meancredit_card_balance_NAME_CONTRACT_STATUS_Approved_sumcredit_card_balance_NAME_CONTRACT_STATUS_Completed_meancredit_card_balance_NAME_CONTRACT_STATUS_Completed_sumcredit_card_balance_NAME_CONTRACT_STATUS_Demand_meancredit_card_balance_NAME_CONTRACT_STATUS_Demand_sumcredit_card_balance_NAME_CONTRACT_STATUS_Refused_meancredit_card_balance_NAME_CONTRACT_STATUS_Refused_sumcredit_card_balance_NAME_CONTRACT_STATUS_Sent proposal_meancredit_card_balance_NAME_CONTRACT_STATUS_Sent proposal_sumcredit_card_balance_NAME_CONTRACT_STATUS_Signed_meancredit_card_balance_NAME_CONTRACT_STATUS_Signed_sum
010000614893961.00000060.000.00000000.000.000.000.00
110001118433841.000000740.000.00000000.000.000.000.00
210001320386921.000000960.000.00000000.000.000.000.00
310002125940250.41176570.000.588235100.000.000.000.00
410002314999021.00000080.000.00000000.000.000.000.00
...................................................
10430245624421819260.878049360.000.12195150.000.000.000.00
10430345624610797321.00000080.000.00000000.000.000.000.00
10430445624715951711.000000950.000.00000000.000.000.000.00
10430545624827434951.000000230.000.00000000.000.000.000.00
10430645625017944511.000000120.000.00000000.000.000.000.00
\n", "

104307 rows × 16 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR SK_ID_PREV \\\n", "0 100006 1489396 \n", "1 100011 1843384 \n", "2 100013 2038692 \n", "3 100021 2594025 \n", "4 100023 1499902 \n", "... ... ... \n", "104302 456244 2181926 \n", "104303 456246 1079732 \n", "104304 456247 1595171 \n", "104305 456248 2743495 \n", "104306 456250 1794451 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Active_mean \\\n", "0 1.000000 \n", "1 1.000000 \n", "2 1.000000 \n", "3 0.411765 \n", "4 1.000000 \n", "... ... \n", "104302 0.878049 \n", "104303 1.000000 \n", "104304 1.000000 \n", "104305 1.000000 \n", "104306 1.000000 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Active_sum \\\n", "0 6 \n", "1 74 \n", "2 96 \n", "3 7 \n", "4 8 \n", "... ... \n", "104302 36 \n", "104303 8 \n", "104304 95 \n", "104305 23 \n", "104306 12 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Approved_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "104302 0.0 \n", "104303 0.0 \n", "104304 0.0 \n", "104305 0.0 \n", "104306 0.0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Approved_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "104302 0 \n", "104303 0 \n", "104304 0 \n", "104305 0 \n", "104306 0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Completed_mean \\\n", "0 0.000000 \n", "1 0.000000 \n", "2 0.000000 \n", "3 0.588235 \n", "4 0.000000 \n", "... ... \n", "104302 0.121951 \n", "104303 0.000000 \n", "104304 0.000000 \n", "104305 0.000000 \n", "104306 0.000000 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Completed_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 10 \n", "4 0 \n", "... ... \n", "104302 5 \n", "104303 0 \n", "104304 0 \n", "104305 0 \n", "104306 0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Demand_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "104302 0.0 \n", "104303 0.0 \n", "104304 0.0 \n", "104305 0.0 \n", "104306 0.0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Demand_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "104302 0 \n", "104303 0 \n", "104304 0 \n", "104305 0 \n", "104306 0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Refused_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "104302 0.0 \n", "104303 0.0 \n", "104304 0.0 \n", "104305 0.0 \n", "104306 0.0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Refused_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "104302 0 \n", "104303 0 \n", "104304 0 \n", "104305 0 \n", "104306 0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Sent proposal_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "104302 0.0 \n", "104303 0.0 \n", "104304 0.0 \n", "104305 0.0 \n", "104306 0.0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Sent proposal_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "104302 0 \n", "104303 0 \n", "104304 0 \n", "104305 0 \n", "104306 0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Signed_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "104302 0.0 \n", "104303 0.0 \n", "104304 0.0 \n", "104305 0.0 \n", "104306 0.0 \n", "\n", " credit_card_balance_NAME_CONTRACT_STATUS_Signed_sum \n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "104302 0 \n", "104303 0 \n", "104304 0 \n", "104305 0 \n", "104306 0 \n", "\n", "[104307 rows x 16 columns]" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "credit_card_balance_categorical_agg" ] }, { "cell_type": "code", "execution_count": 127, "id": "df9eafa7", "metadata": {}, "outputs": [], "source": [ "credit_card_balance_agg = pd.merge(credit_card_balance_numeric_agg, credit_card_balance_categorical_agg, \n", " on = ['SK_ID_CURR', 'SK_ID_PREV'],\n", " how = 'left'\n", ")" ] }, { "cell_type": "code", "execution_count": 128, "id": "5a4dd61a", "metadata": {}, "outputs": [], "source": [ "credit_card_balance_agg_by_client = agg_numeric(credit_card_balance_agg, 'SK_ID_CURR', exclude_columns=['SK_ID_PREV'])" ] }, { "cell_type": "code", "execution_count": 129, "id": "e110b41d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRCREDIT_CARD_BALANCE_MONTHS_BALANCE_MIN_MINCREDIT_CARD_BALANCE_MONTHS_BALANCE_MIN_MAXCREDIT_CARD_BALANCE_MONTHS_BALANCE_MIN_MEANCREDIT_CARD_BALANCE_MONTHS_BALANCE_MIN_SUMCREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX_MINCREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX_MAXCREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX_MEANCREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX_SUMCREDIT_CARD_BALANCE_MONTHS_BALANCE_MEAN_MIN...CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SENT PROPOSAL_SUM_MEANCREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SENT PROPOSAL_SUM_SUMCREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_MEAN_MINCREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_MEAN_MAXCREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_MEAN_MEANCREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_MEAN_SUMCREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_SUM_MINCREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_SUM_MAXCREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_SUM_MEANCREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_SUM_SUM
0100006-6-6-6.0-6-1-1-1.0-1-3.5...0.000.00.00.00.0000.00
1100011-75-75-75.0-75-2-2-2.0-2-38.5...0.000.00.00.00.0000.00
2100013-96-96-96.0-96-1-1-1.0-1-48.5...0.000.00.00.00.0000.00
3100021-18-18-18.0-18-2-2-2.0-2-10.0...0.000.00.00.00.0000.00
4100023-11-11-11.0-11-4-4-4.0-4-7.5...0.000.00.00.00.0000.00
\n", "

5 rows × 377 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR CREDIT_CARD_BALANCE_MONTHS_BALANCE_MIN_MIN \\\n", "0 100006 -6 \n", "1 100011 -75 \n", "2 100013 -96 \n", "3 100021 -18 \n", "4 100023 -11 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MIN_MAX \\\n", "0 -6 \n", "1 -75 \n", "2 -96 \n", "3 -18 \n", "4 -11 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MIN_MEAN \\\n", "0 -6.0 \n", "1 -75.0 \n", "2 -96.0 \n", "3 -18.0 \n", "4 -11.0 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MIN_SUM \\\n", "0 -6 \n", "1 -75 \n", "2 -96 \n", "3 -18 \n", "4 -11 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX_MIN \\\n", "0 -1 \n", "1 -2 \n", "2 -1 \n", "3 -2 \n", "4 -4 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX_MAX \\\n", "0 -1 \n", "1 -2 \n", "2 -1 \n", "3 -2 \n", "4 -4 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX_MEAN \\\n", "0 -1.0 \n", "1 -2.0 \n", "2 -1.0 \n", "3 -2.0 \n", "4 -4.0 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX_SUM \\\n", "0 -1 \n", "1 -2 \n", "2 -1 \n", "3 -2 \n", "4 -4 \n", "\n", " CREDIT_CARD_BALANCE_MONTHS_BALANCE_MEAN_MIN ... \\\n", "0 -3.5 ... \n", "1 -38.5 ... \n", "2 -48.5 ... \n", "3 -10.0 ... \n", "4 -7.5 ... \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SENT PROPOSAL_SUM_MEAN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SENT PROPOSAL_SUM_SUM \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_MEAN_MIN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_MEAN_MAX \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_MEAN_MEAN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_MEAN_SUM \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_SUM_MIN \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_SUM_MAX \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_SUM_MEAN \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", " CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_SUM_SUM \n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "\n", "[5 rows x 377 columns]" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "credit_card_balance_agg_by_client.head()" ] }, { "cell_type": "code", "execution_count": 130, "id": "2ed31e67", "metadata": {}, "outputs": [], "source": [ "credit_card_balance_agg_by_client.to_feather('checkpoints/02_credit_balance_agg.feather')" ] }, { "cell_type": "code", "execution_count": 131, "id": "9b588220", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" } ], "source": [ "del credit_card_balance, credit_card_balance_numeric_agg, credit_card_balance_categorical_agg, credit_card_balance_agg\n", "gc.collect()" ] }, { "cell_type": "code", "execution_count": null, "id": "65cb1dde", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 132, "id": "c55ad152", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(307511, 764) (48744, 763)\n" ] } ], "source": [ "print(train.shape, test.shape)" ] }, { "cell_type": "code", "execution_count": 133, "id": "6bbcbb28", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Missing Values% of total values
COMMONAREA_MEDI21486569.872297
NONLIVINGAPARTMENTS_MEDI21351469.432963
FLOORSMIN_MEDI20864267.848630
YEARS_BUILD_MEDI20448866.497784
OWN_CAR_AGE20292965.990810
.........
DEF_60_CNT_SOCIAL_CIRCLE10210.332021
EXT_SOURCE_26600.214626
AMT_ANNUITY120.003902
CNT_FAM_MEMBERS20.000650
DAYS_LAST_PHONE_CHANGE10.000325
\n", "

591 rows × 2 columns

\n", "
" ], "text/plain": [ " Missing Values % of total values\n", "COMMONAREA_MEDI 214865 69.872297\n", "NONLIVINGAPARTMENTS_MEDI 213514 69.432963\n", "FLOORSMIN_MEDI 208642 67.848630\n", "YEARS_BUILD_MEDI 204488 66.497784\n", "OWN_CAR_AGE 202929 65.990810\n", "... ... ...\n", "DEF_60_CNT_SOCIAL_CIRCLE 1021 0.332021\n", "EXT_SOURCE_2 660 0.214626\n", "AMT_ANNUITY 12 0.003902\n", "CNT_FAM_MEMBERS 2 0.000650\n", "DAYS_LAST_PHONE_CHANGE 1 0.000325\n", "\n", "[591 rows x 2 columns]" ] }, "execution_count": 133, "metadata": {}, "output_type": "execute_result" } ], "source": [ "missing_values_table(train)" ] }, { "cell_type": "code", "execution_count": 134, "id": "5b739a94", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train: (307511, 619), test: (48744, 618)\n", "remove high missing cols. (307511, 617) (48744, 617)\n", "align train and test. (307511, 617) (48744, 617)\n", "remove high corr cols. (307511, 264) (48744, 263)\n", "train: (307511, 264), test: (48744, 263)\n" ] } ], "source": [ "train = pd.read_feather('checkpoints/01_train_app_base.feather')\n", "test = pd.read_feather('checkpoints/01_test_app_base.feather')\n", "credit_card_balance_agg = pd.read_feather('checkpoints/02_credit_balance_agg.feather')\n", "\n", "train = pd.merge(train, credit_card_balance_agg, on='SK_ID_CURR', how='left')\n", "test = pd.merge(test, credit_card_balance_agg, on='SK_ID_CURR', how='left')\n", "\n", "print(f'train: {train.shape}, test: {test.shape}')\n", "train, test = feature_select(train, test)\n", "print(f'train: {train.shape}, test: {test.shape}')\n", "\n", "train.to_feather('checkpoints/04_train_app_credit_cleaned.feather')\n", "test.to_feather('checkpoints/04_test_app_credit_cleaned.feather')" ] }, { "cell_type": "code", "execution_count": 135, "id": "11688230", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" } ], "source": [ "del credit_card_balance_agg\n", "gc.collect()" ] }, { "cell_type": "markdown", "id": "1989ab44", "metadata": {}, "source": [ "### 引入 pos_cash_balance表" ] }, { "cell_type": "code", "execution_count": null, "id": "0302d111", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 136, "id": "ce86b98f", "metadata": {}, "outputs": [], "source": [ "pos_cash_balance = pd.read_csv('data/pos_cash_balance.csv')" ] }, { "cell_type": "code", "execution_count": 137, "id": "90392e63", "metadata": {}, "outputs": [], "source": [ "pos_cash_balance_numeric_agg = agg_numeric(pos_cash_balance, ['SK_ID_CURR', 'SK_ID_PREV'], 'pos')" ] }, { "cell_type": "code", "execution_count": 138, "id": "6dd1391a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRSK_ID_PREVPOS_MONTHS_BALANCE_MINPOS_MONTHS_BALANCE_MAXPOS_MONTHS_BALANCE_MEANPOS_MONTHS_BALANCE_SUMPOS_CNT_INSTALMENT_MINPOS_CNT_INSTALMENT_MAXPOS_CNT_INSTALMENT_MEANPOS_CNT_INSTALMENT_SUM...POS_CNT_INSTALMENT_FUTURE_MEANPOS_CNT_INSTALMENT_FUTURE_SUMPOS_SK_DPD_MINPOS_SK_DPD_MAXPOS_SK_DPD_MEANPOS_SK_DPD_SUMPOS_SK_DPD_DEF_MINPOS_SK_DPD_DEF_MAXPOS_SK_DPD_DEF_MEANPOS_SK_DPD_DEF_SUM
01000011369693-57-53-55.0-2754.04.04.00000020.0...2.00000010.0000.0000000000.0000000
11000011851984-96-93-94.5-3784.04.04.00000016.0...0.7500003.0071.7500007071.7500007
21000021038818-19-1-10.0-19024.024.024.000000456.0...15.000000285.0000.0000000000.0000000
31000031810518-25-18-21.5-1727.012.011.37500091.0...7.87500063.0000.0000000000.0000000
41000032396755-77-66-71.5-85812.012.012.000000144.0...6.50000078.0000.0000000000.0000000
..................................................................
9363204562551359084-15-7-11.0-998.012.011.555556104.0...7.55555668.0000.0000000000.0000000
9363214562551743609-33-23-28.0-30810.012.011.818182130.0...6.81818275.0050.4545455050.4545455
9363224562552073384-21-17-19.0-953.024.015.60000078.0...13.80000069.0000.0000000000.0000000
9363234562552631384-26-2-14.0-35024.036.035.520000888.0...23.520000588.0000.0000000000.0000000
9363244562552729207-16-13-14.5-583.06.04.50000018.0...2.75000011.0000.0000000000.0000000
\n", "

936325 rows × 22 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR SK_ID_PREV POS_MONTHS_BALANCE_MIN \\\n", "0 100001 1369693 -57 \n", "1 100001 1851984 -96 \n", "2 100002 1038818 -19 \n", "3 100003 1810518 -25 \n", "4 100003 2396755 -77 \n", "... ... ... ... \n", "936320 456255 1359084 -15 \n", "936321 456255 1743609 -33 \n", "936322 456255 2073384 -21 \n", "936323 456255 2631384 -26 \n", "936324 456255 2729207 -16 \n", "\n", " POS_MONTHS_BALANCE_MAX POS_MONTHS_BALANCE_MEAN \\\n", "0 -53 -55.0 \n", "1 -93 -94.5 \n", "2 -1 -10.0 \n", "3 -18 -21.5 \n", "4 -66 -71.5 \n", "... ... ... \n", "936320 -7 -11.0 \n", "936321 -23 -28.0 \n", "936322 -17 -19.0 \n", "936323 -2 -14.0 \n", "936324 -13 -14.5 \n", "\n", " POS_MONTHS_BALANCE_SUM POS_CNT_INSTALMENT_MIN \\\n", "0 -275 4.0 \n", "1 -378 4.0 \n", "2 -190 24.0 \n", "3 -172 7.0 \n", "4 -858 12.0 \n", "... ... ... \n", "936320 -99 8.0 \n", "936321 -308 10.0 \n", "936322 -95 3.0 \n", "936323 -350 24.0 \n", "936324 -58 3.0 \n", "\n", " POS_CNT_INSTALMENT_MAX POS_CNT_INSTALMENT_MEAN \\\n", "0 4.0 4.000000 \n", "1 4.0 4.000000 \n", "2 24.0 24.000000 \n", "3 12.0 11.375000 \n", "4 12.0 12.000000 \n", "... ... ... \n", "936320 12.0 11.555556 \n", "936321 12.0 11.818182 \n", "936322 24.0 15.600000 \n", "936323 36.0 35.520000 \n", "936324 6.0 4.500000 \n", "\n", " POS_CNT_INSTALMENT_SUM ... POS_CNT_INSTALMENT_FUTURE_MEAN \\\n", "0 20.0 ... 2.000000 \n", "1 16.0 ... 0.750000 \n", "2 456.0 ... 15.000000 \n", "3 91.0 ... 7.875000 \n", "4 144.0 ... 6.500000 \n", "... ... ... ... \n", "936320 104.0 ... 7.555556 \n", "936321 130.0 ... 6.818182 \n", "936322 78.0 ... 13.800000 \n", "936323 888.0 ... 23.520000 \n", "936324 18.0 ... 2.750000 \n", "\n", " POS_CNT_INSTALMENT_FUTURE_SUM POS_SK_DPD_MIN POS_SK_DPD_MAX \\\n", "0 10.0 0 0 \n", "1 3.0 0 7 \n", "2 285.0 0 0 \n", "3 63.0 0 0 \n", "4 78.0 0 0 \n", "... ... ... ... \n", "936320 68.0 0 0 \n", "936321 75.0 0 5 \n", "936322 69.0 0 0 \n", "936323 588.0 0 0 \n", "936324 11.0 0 0 \n", "\n", " POS_SK_DPD_MEAN POS_SK_DPD_SUM POS_SK_DPD_DEF_MIN \\\n", "0 0.000000 0 0 \n", "1 1.750000 7 0 \n", "2 0.000000 0 0 \n", "3 0.000000 0 0 \n", "4 0.000000 0 0 \n", "... ... ... ... \n", "936320 0.000000 0 0 \n", "936321 0.454545 5 0 \n", "936322 0.000000 0 0 \n", "936323 0.000000 0 0 \n", "936324 0.000000 0 0 \n", "\n", " POS_SK_DPD_DEF_MAX POS_SK_DPD_DEF_MEAN POS_SK_DPD_DEF_SUM \n", "0 0 0.000000 0 \n", "1 7 1.750000 7 \n", "2 0 0.000000 0 \n", "3 0 0.000000 0 \n", "4 0 0.000000 0 \n", "... ... ... ... \n", "936320 0 0.000000 0 \n", "936321 5 0.454545 5 \n", "936322 0 0.000000 0 \n", "936323 0 0.000000 0 \n", "936324 0 0.000000 0 \n", "\n", "[936325 rows x 22 columns]" ] }, "execution_count": 138, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pos_cash_balance_numeric_agg" ] }, { "cell_type": "code", "execution_count": 139, "id": "5d7ae04f", "metadata": {}, "outputs": [], "source": [ "pos_cash_balance_categorical_agg = agg_categorical(pos_cash_balance, ['SK_ID_CURR', 'SK_ID_PREV'], 'pos')" ] }, { "cell_type": "code", "execution_count": 140, "id": "56fdf51f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRSK_ID_PREVpos_NAME_CONTRACT_STATUS_Active_meanpos_NAME_CONTRACT_STATUS_Active_sumpos_NAME_CONTRACT_STATUS_Amortized debt_meanpos_NAME_CONTRACT_STATUS_Amortized debt_sumpos_NAME_CONTRACT_STATUS_Approved_meanpos_NAME_CONTRACT_STATUS_Approved_sumpos_NAME_CONTRACT_STATUS_Canceled_meanpos_NAME_CONTRACT_STATUS_Canceled_sumpos_NAME_CONTRACT_STATUS_Completed_meanpos_NAME_CONTRACT_STATUS_Completed_sumpos_NAME_CONTRACT_STATUS_Demand_meanpos_NAME_CONTRACT_STATUS_Demand_sumpos_NAME_CONTRACT_STATUS_Returned to the store_meanpos_NAME_CONTRACT_STATUS_Returned to the store_sumpos_NAME_CONTRACT_STATUS_Signed_meanpos_NAME_CONTRACT_STATUS_Signed_sumpos_NAME_CONTRACT_STATUS_XNA_meanpos_NAME_CONTRACT_STATUS_XNA_sum
010000113696930.80000040.000.000.000.20000010.000.000.000.00
110000118519840.75000030.000.000.000.25000010.000.000.000.00
210000210388181.000000190.000.000.000.00000000.000.000.000.00
310000318105180.87500070.000.000.000.12500010.000.000.000.00
410000323967551.000000120.000.000.000.00000000.000.000.000.00
...............................................................
93632045625513590840.88888980.000.000.000.11111110.000.000.000.00
93632145625517436090.909091100.000.000.000.09090910.000.000.000.00
93632245625520733840.80000040.000.000.000.20000010.000.000.000.00
93632345625526313840.960000240.000.000.000.04000010.000.000.000.00
93632445625527292070.75000030.000.000.000.25000010.000.000.000.00
\n", "

936325 rows × 20 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR SK_ID_PREV pos_NAME_CONTRACT_STATUS_Active_mean \\\n", "0 100001 1369693 0.800000 \n", "1 100001 1851984 0.750000 \n", "2 100002 1038818 1.000000 \n", "3 100003 1810518 0.875000 \n", "4 100003 2396755 1.000000 \n", "... ... ... ... \n", "936320 456255 1359084 0.888889 \n", "936321 456255 1743609 0.909091 \n", "936322 456255 2073384 0.800000 \n", "936323 456255 2631384 0.960000 \n", "936324 456255 2729207 0.750000 \n", "\n", " pos_NAME_CONTRACT_STATUS_Active_sum \\\n", "0 4 \n", "1 3 \n", "2 19 \n", "3 7 \n", "4 12 \n", "... ... \n", "936320 8 \n", "936321 10 \n", "936322 4 \n", "936323 24 \n", "936324 3 \n", "\n", " pos_NAME_CONTRACT_STATUS_Amortized debt_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "936320 0.0 \n", "936321 0.0 \n", "936322 0.0 \n", "936323 0.0 \n", "936324 0.0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Amortized debt_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "936320 0 \n", "936321 0 \n", "936322 0 \n", "936323 0 \n", "936324 0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Approved_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "936320 0.0 \n", "936321 0.0 \n", "936322 0.0 \n", "936323 0.0 \n", "936324 0.0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Approved_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "936320 0 \n", "936321 0 \n", "936322 0 \n", "936323 0 \n", "936324 0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Canceled_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "936320 0.0 \n", "936321 0.0 \n", "936322 0.0 \n", "936323 0.0 \n", "936324 0.0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Canceled_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "936320 0 \n", "936321 0 \n", "936322 0 \n", "936323 0 \n", "936324 0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Completed_mean \\\n", "0 0.200000 \n", "1 0.250000 \n", "2 0.000000 \n", "3 0.125000 \n", "4 0.000000 \n", "... ... \n", "936320 0.111111 \n", "936321 0.090909 \n", "936322 0.200000 \n", "936323 0.040000 \n", "936324 0.250000 \n", "\n", " pos_NAME_CONTRACT_STATUS_Completed_sum \\\n", "0 1 \n", "1 1 \n", "2 0 \n", "3 1 \n", "4 0 \n", "... ... \n", "936320 1 \n", "936321 1 \n", "936322 1 \n", "936323 1 \n", "936324 1 \n", "\n", " pos_NAME_CONTRACT_STATUS_Demand_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "936320 0.0 \n", "936321 0.0 \n", "936322 0.0 \n", "936323 0.0 \n", "936324 0.0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Demand_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "936320 0 \n", "936321 0 \n", "936322 0 \n", "936323 0 \n", "936324 0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Returned to the store_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "936320 0.0 \n", "936321 0.0 \n", "936322 0.0 \n", "936323 0.0 \n", "936324 0.0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Returned to the store_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "936320 0 \n", "936321 0 \n", "936322 0 \n", "936323 0 \n", "936324 0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Signed_mean \\\n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "... ... \n", "936320 0.0 \n", "936321 0.0 \n", "936322 0.0 \n", "936323 0.0 \n", "936324 0.0 \n", "\n", " pos_NAME_CONTRACT_STATUS_Signed_sum \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 \n", "... ... \n", "936320 0 \n", "936321 0 \n", "936322 0 \n", "936323 0 \n", "936324 0 \n", "\n", " pos_NAME_CONTRACT_STATUS_XNA_mean pos_NAME_CONTRACT_STATUS_XNA_sum \n", "0 0.0 0 \n", "1 0.0 0 \n", "2 0.0 0 \n", "3 0.0 0 \n", "4 0.0 0 \n", "... ... ... \n", "936320 0.0 0 \n", "936321 0.0 0 \n", "936322 0.0 0 \n", "936323 0.0 0 \n", "936324 0.0 0 \n", "\n", "[936325 rows x 20 columns]" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pos_cash_balance_categorical_agg" ] }, { "cell_type": "code", "execution_count": 141, "id": "2d36cdca", "metadata": {}, "outputs": [], "source": [ "pos_cash_balance_agg = pd.merge(pos_cash_balance_categorical_agg, pos_cash_balance_numeric_agg, \n", " on = ['SK_ID_CURR', 'SK_ID_PREV'],\n", " how = 'left'\n", ")" ] }, { "cell_type": "code", "execution_count": 142, "id": "c5e010f3", "metadata": {}, "outputs": [], "source": [ "pos_cash_balance_agg_by_client = agg_numeric(pos_cash_balance_agg, 'SK_ID_CURR', exclude_columns=['SK_ID_PREV'])" ] }, { "cell_type": "code", "execution_count": 143, "id": "752f2fd6", "metadata": {}, "outputs": [], "source": [ "pos_cash_balance_agg_by_client.to_feather('checkpoints/02_pos_agg.feather')" ] }, { "cell_type": "code", "execution_count": 144, "id": "45b6af4f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 144, "metadata": {}, "output_type": "execute_result" } ], "source": [ "del pos_cash_balance, pos_cash_balance_numeric_agg, pos_cash_balance_categorical_agg, pos_cash_balance_agg\n", "gc.collect()" ] }, { "cell_type": "code", "execution_count": 145, "id": "86b0ed81", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train: (307511, 395), test: (48744, 394)\n", "remove high missing cols. (307511, 393) (48744, 393)\n", "align train and test. (307511, 393) (48744, 393)\n", "remove high corr cols. (307511, 288) (48744, 287)\n", "train: (307511, 288), test: (48744, 287)\n" ] } ], "source": [ "train = pd.read_feather('checkpoints/01_train_app_base.feather')\n", "test = pd.read_feather('checkpoints/01_test_app_base.feather')\n", "pos_cash_balance_agg = pd.read_feather('checkpoints/02_pos_agg.feather')\n", "\n", "train = pd.merge(train, pos_cash_balance_agg, on='SK_ID_CURR', how='left')\n", "test = pd.merge(test, pos_cash_balance_agg, on='SK_ID_CURR', how='left')\n", "\n", "print(f'train: {train.shape}, test: {test.shape}')\n", "train, test = feature_select(train, test)\n", "print(f'train: {train.shape}, test: {test.shape}')\n", "\n", "train.to_feather('checkpoints/04_train_app_pos_cleaned.feather')\n", "test.to_feather('checkpoints/04_test_app_pos_cleaned.feather')" ] }, { "cell_type": "markdown", "id": "b2c0b6ad", "metadata": {}, "source": [ "### installments_payments表" ] }, { "cell_type": "code", "execution_count": 146, "id": "0f5b5ae9", "metadata": {}, "outputs": [], "source": [ "installments_payments = pd.read_csv('data/installments_payments.csv')" ] }, { "cell_type": "code", "execution_count": 147, "id": "a1ed135d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SK_ID_PREV int64\n", "SK_ID_CURR int64\n", "NUM_INSTALMENT_VERSION float64\n", "NUM_INSTALMENT_NUMBER int64\n", "DAYS_INSTALMENT float64\n", "DAYS_ENTRY_PAYMENT float64\n", "AMT_INSTALMENT float64\n", "AMT_PAYMENT float64\n", "dtype: object" ] }, "execution_count": 147, "metadata": {}, "output_type": "execute_result" } ], "source": [ "installments_payments.dtypes" ] }, { "cell_type": "markdown", "id": "c6304d67", "metadata": {}, "source": [ "没有分类特征,都是数值的" ] }, { "cell_type": "code", "execution_count": 148, "id": "aaa3efd2", "metadata": {}, "outputs": [], "source": [ "installments_payments_numeric_agg = agg_numeric(installments_payments, ['SK_ID_CURR', 'SK_ID_PREV'], 'installments')" ] }, { "cell_type": "code", "execution_count": 149, "id": "0972bc19", "metadata": {}, "outputs": [], "source": [ "installments_payments_agg = installments_payments_numeric_agg" ] }, { "cell_type": "code", "execution_count": 150, "id": "4b2228e8", "metadata": {}, "outputs": [], "source": [ "installments_payments_agg_by_client = agg_numeric(installments_payments_agg, 'SK_ID_CURR', exclude_columns=['SK_ID_PREV'])" ] }, { "cell_type": "code", "execution_count": 151, "id": "22626083", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRINSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_MININSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_MAXINSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_MEANINSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_SUMINSTALLMENTS_NUM_INSTALMENT_VERSION_MAX_MININSTALLMENTS_NUM_INSTALMENT_VERSION_MAX_MAXINSTALLMENTS_NUM_INSTALMENT_VERSION_MAX_MEANINSTALLMENTS_NUM_INSTALMENT_VERSION_MAX_SUMINSTALLMENTS_NUM_INSTALMENT_VERSION_MEAN_MIN...INSTALLMENTS_AMT_PAYMENT_MAX_MEANINSTALLMENTS_AMT_PAYMENT_MAX_SUMINSTALLMENTS_AMT_PAYMENT_MEAN_MININSTALLMENTS_AMT_PAYMENT_MEAN_MAXINSTALLMENTS_AMT_PAYMENT_MEAN_MEANINSTALLMENTS_AMT_PAYMENT_MEAN_SUMINSTALLMENTS_AMT_PAYMENT_SUM_MININSTALLMENTS_AMT_PAYMENT_SUM_MAXINSTALLMENTS_AMT_PAYMENT_SUM_MEANINSTALLMENTS_AMT_PAYMENT_SUM_SUM
01000011.01.01.02.01.02.01.5000003.01.000000...10689.97521379.9503981.6750007312.7250005647.20000011294.40000011945.02529250.90020597.962541195.925
11000021.01.01.01.02.02.02.0000002.01.052632...53093.74553093.74511559.24710511559.24710511559.24710511559.247105219625.695219625.695219625.6950219625.695
21000031.01.01.03.01.02.01.3333334.01.000000...210713.445632140.3356731.115000164425.33285778558.479286235675.43785780773.3801150977.330539621.55001618864.650
31000041.01.01.01.02.02.02.0000002.01.333333...10573.96510573.9657096.1550007096.1550007096.1550007096.15500021288.46521288.46521288.465021288.465
41000051.01.01.01.02.02.02.0000002.01.111111...17656.24517656.2456240.2050006240.2050006240.2050006240.20500056161.84556161.84556161.845056161.845
\n", "

5 rows × 97 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR INSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_MIN \\\n", "0 100001 1.0 \n", "1 100002 1.0 \n", "2 100003 1.0 \n", "3 100004 1.0 \n", "4 100005 1.0 \n", "\n", " INSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_MAX \\\n", "0 1.0 \n", "1 1.0 \n", "2 1.0 \n", "3 1.0 \n", "4 1.0 \n", "\n", " INSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_MEAN \\\n", "0 1.0 \n", "1 1.0 \n", "2 1.0 \n", "3 1.0 \n", "4 1.0 \n", "\n", " INSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_SUM \\\n", "0 2.0 \n", "1 1.0 \n", "2 3.0 \n", "3 1.0 \n", "4 1.0 \n", "\n", " INSTALLMENTS_NUM_INSTALMENT_VERSION_MAX_MIN \\\n", "0 1.0 \n", "1 2.0 \n", "2 1.0 \n", "3 2.0 \n", "4 2.0 \n", "\n", " INSTALLMENTS_NUM_INSTALMENT_VERSION_MAX_MAX \\\n", "0 2.0 \n", "1 2.0 \n", "2 2.0 \n", "3 2.0 \n", "4 2.0 \n", "\n", " INSTALLMENTS_NUM_INSTALMENT_VERSION_MAX_MEAN \\\n", "0 1.500000 \n", "1 2.000000 \n", "2 1.333333 \n", "3 2.000000 \n", "4 2.000000 \n", "\n", " INSTALLMENTS_NUM_INSTALMENT_VERSION_MAX_SUM \\\n", "0 3.0 \n", "1 2.0 \n", "2 4.0 \n", "3 2.0 \n", "4 2.0 \n", "\n", " INSTALLMENTS_NUM_INSTALMENT_VERSION_MEAN_MIN ... \\\n", "0 1.000000 ... \n", "1 1.052632 ... \n", "2 1.000000 ... \n", "3 1.333333 ... \n", "4 1.111111 ... \n", "\n", " INSTALLMENTS_AMT_PAYMENT_MAX_MEAN INSTALLMENTS_AMT_PAYMENT_MAX_SUM \\\n", "0 10689.975 21379.950 \n", "1 53093.745 53093.745 \n", "2 210713.445 632140.335 \n", "3 10573.965 10573.965 \n", "4 17656.245 17656.245 \n", "\n", " INSTALLMENTS_AMT_PAYMENT_MEAN_MIN INSTALLMENTS_AMT_PAYMENT_MEAN_MAX \\\n", "0 3981.675000 7312.725000 \n", "1 11559.247105 11559.247105 \n", "2 6731.115000 164425.332857 \n", "3 7096.155000 7096.155000 \n", "4 6240.205000 6240.205000 \n", "\n", " INSTALLMENTS_AMT_PAYMENT_MEAN_MEAN INSTALLMENTS_AMT_PAYMENT_MEAN_SUM \\\n", "0 5647.200000 11294.400000 \n", "1 11559.247105 11559.247105 \n", "2 78558.479286 235675.437857 \n", "3 7096.155000 7096.155000 \n", "4 6240.205000 6240.205000 \n", "\n", " INSTALLMENTS_AMT_PAYMENT_SUM_MIN INSTALLMENTS_AMT_PAYMENT_SUM_MAX \\\n", "0 11945.025 29250.900 \n", "1 219625.695 219625.695 \n", "2 80773.380 1150977.330 \n", "3 21288.465 21288.465 \n", "4 56161.845 56161.845 \n", "\n", " INSTALLMENTS_AMT_PAYMENT_SUM_MEAN INSTALLMENTS_AMT_PAYMENT_SUM_SUM \n", "0 20597.9625 41195.925 \n", "1 219625.6950 219625.695 \n", "2 539621.5500 1618864.650 \n", "3 21288.4650 21288.465 \n", "4 56161.8450 56161.845 \n", "\n", "[5 rows x 97 columns]" ] }, "execution_count": 151, "metadata": {}, "output_type": "execute_result" } ], "source": [ "installments_payments_agg_by_client.head()" ] }, { "cell_type": "code", "execution_count": 152, "id": "9dec7707", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 152, "metadata": {}, "output_type": "execute_result" } ], "source": [ "del installments_payments, installments_payments_numeric_agg, installments_payments_agg\n", "gc.collect()" ] }, { "cell_type": "code", "execution_count": 153, "id": "42e253bc", "metadata": {}, "outputs": [], "source": [ "installments_payments_agg_by_client.to_feather('checkpoints/02_installments_agg.feather')" ] }, { "cell_type": "code", "execution_count": 154, "id": "ef1348db", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train: (307511, 339), test: (48744, 338)\n", "remove high missing cols. (307511, 337) (48744, 337)\n", "align train and test. (307511, 337) (48744, 337)\n", "remove high corr cols. (307511, 242) (48744, 241)\n", "train: (307511, 242), test: (48744, 241)\n" ] } ], "source": [ "train = pd.read_feather('checkpoints/01_train_app_base.feather')\n", "test = pd.read_feather('checkpoints/01_test_app_base.feather')\n", "installments_payments_agg = pd.read_feather('checkpoints/02_installments_agg.feather')\n", "\n", "train = pd.merge(train, installments_payments_agg, on='SK_ID_CURR', how='left')\n", "test = pd.merge(test, installments_payments_agg, on='SK_ID_CURR', how='left')\n", "\n", "print(f'train: {train.shape}, test: {test.shape}')\n", "train, test = feature_select(train, test)\n", "print(f'train: {train.shape}, test: {test.shape}')\n", "\n", "train.to_feather('checkpoints/04_train_app_installments_cleaned.feather')\n", "test.to_feather('checkpoints/04_test_app_installments_cleaned.feather')" ] }, { "cell_type": "markdown", "id": "6a777cce", "metadata": {}, "source": [ "## 合并所有app-子表" ] }, { "cell_type": "code", "execution_count": 155, "id": "b9c98808", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "app (307511, 243) (48744, 242)\n" ] } ], "source": [ "# 仅查看appbase shape\n", "train = pd.read_feather('checkpoints/01_train_app_base.feather')\n", "test = pd.read_feather('checkpoints/01_test_app_base.feather')\n", "print('app', train.shape, test.shape)" ] }, { "cell_type": "code", "execution_count": 156, "id": "69fd5e99", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "app_previous (307511, 764) (48744, 763)\n", "app_credit (307511, 264) (48744, 263)\n", "app_pos (307511, 288) (48744, 287)\n", "app_installments (307511, 242) (48744, 241)\n", "app_bureau (307511, 306) (48744, 305)\n" ] } ], "source": [ "train_app_previous = pd.read_feather('checkpoints/04_train_app_previous_cleaned.feather')\n", "test_app_previous = pd.read_feather('checkpoints/04_test_app_previous_cleaned.feather')\n", "print('app_previous', train_app_previous.shape, test_app_previous.shape)\n", "\n", "train_app_credit = pd.read_feather('checkpoints/04_train_app_credit_cleaned.feather')\n", "test_app_credit= pd.read_feather('checkpoints/04_test_app_credit_cleaned.feather')\n", "print('app_credit', train_app_credit.shape, test_app_credit.shape)\n", "\n", "train_app_pos = pd.read_feather('checkpoints/04_train_app_pos_cleaned.feather')\n", "test_app_pos = pd.read_feather('checkpoints/04_test_app_pos_cleaned.feather')\n", "print('app_pos', train_app_pos.shape, test_app_pos.shape)\n", "\n", "train_app_install = pd.read_feather('checkpoints/04_train_app_installments_cleaned.feather')\n", "test_app_install = pd.read_feather('checkpoints/04_test_app_installments_cleaned.feather')\n", "print('app_installments', train_app_install.shape, test_app_install.shape)\n", "\n", "train_app_bureau = pd.read_feather('checkpoints/04_train_app_bureau_balance_bureau_cleaned.feather')\n", "test_app_bureau = pd.read_feather('checkpoints/04_test_app_bureau_balance_bureau_cleaned.feather')\n", "print('app_bureau', train_app_bureau.shape, test_app_bureau.shape)\n", "\n" ] }, { "cell_type": "code", "execution_count": 157, "id": "be7658ae", "metadata": {}, "outputs": [], "source": [ "from functools import reduce\n", "def merge_dataframes(dfs, key):\n", " res = dfs[0].copy()\n", " # 不要合并重复的列\n", " for i,df in enumerate(dfs[1:], 1):\n", " unique_cols = [col for col in df.columns if col not in res.columns] + [key]\n", " res = pd.merge(res, df[unique_cols], on=key, how='left')\n", " return res" ] }, { "cell_type": "code", "execution_count": 158, "id": "e6990fad", "metadata": {}, "outputs": [], "source": [ "train_dfs = [train_app_previous, train_app_credit, train_app_pos, train_app_install, train_app_bureau]\n", "test_dfs = [test_app_previous, test_app_credit, test_app_pos, test_app_install, test_app_bureau]\n", "train = merge_dataframes(train_dfs, key='SK_ID_CURR')\n", "test = merge_dataframes(test_dfs, key='SK_ID_CURR')" ] }, { "cell_type": "code", "execution_count": 159, "id": "571e2102", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(307511, 1066) (48744, 1065)\n" ] } ], "source": [ "print(train.shape, test.shape)" ] }, { "cell_type": "code", "execution_count": 160, "id": "b1e6a7e3", "metadata": {}, "outputs": [], "source": [ "train.to_feather('checkpoints/05_train_merged_v1.feather')\n", "test.to_feather('checkpoints/05_test_merged_v1.feather')" ] }, { "cell_type": "markdown", "id": "e51740ee", "metadata": {}, "source": [ "### modeling\n" ] }, { "cell_type": "code", "execution_count": 161, "id": "f1e67ffe", "metadata": {}, "outputs": [], "source": [ "train = pd.read_feather('checkpoints/05_train_merged_v1.feather')\n", "test = pd.read_feather('checkpoints/05_test_merged_v1.feather')\n", "\n", "train_labels = train['TARGET']\n", "train_ids = train['SK_ID_CURR']\n", "test_ids = test['SK_ID_CURR']\n", "train_features = train.drop(columns=['TARGET', 'SK_ID_CURR'])\n", "test_features = test.drop(columns=['SK_ID_CURR'])" ] }, { "cell_type": "code", "execution_count": 162, "id": "8417e0ba", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(307511, 1066) (48744, 1065)\n" ] } ], "source": [ "print(train.shape, test.shape)" ] }, { "cell_type": "code", "execution_count": 163, "id": "a35f4b8a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['CNT_CHILDREN',\n", " 'AMT_INCOME_TOTAL',\n", " 'AMT_CREDIT',\n", " 'AMT_ANNUITY',\n", " 'REGION_POPULATION_RELATIVE',\n", " 'DAYS_BIRTH',\n", " 'DAYS_REGISTRATION',\n", " 'DAYS_ID_PUBLISH',\n", " 'OWN_CAR_AGE',\n", " 'FLAG_MOBIL',\n", " 'FLAG_WORK_PHONE',\n", " 'FLAG_CONT_MOBILE',\n", " 'FLAG_PHONE',\n", " 'FLAG_EMAIL',\n", " 'CNT_FAM_MEMBERS',\n", " 'REGION_RATING_CLIENT_W_CITY',\n", " 'HOUR_APPR_PROCESS_START',\n", " 'REG_REGION_NOT_LIVE_REGION',\n", " 'REG_REGION_NOT_WORK_REGION',\n", " 'LIVE_REGION_NOT_WORK_REGION',\n", " 'REG_CITY_NOT_LIVE_CITY',\n", " 'REG_CITY_NOT_WORK_CITY',\n", " 'LIVE_CITY_NOT_WORK_CITY',\n", " 'EXT_SOURCE_1',\n", " 'EXT_SOURCE_2',\n", " 'EXT_SOURCE_3',\n", " 'BASEMENTAREA_MEDI',\n", " 'YEARS_BEGINEXPLUATATION_MEDI',\n", " 'YEARS_BUILD_MEDI',\n", " 'COMMONAREA_MEDI',\n", " 'ELEVATORS_MEDI',\n", " 'ENTRANCES_MEDI',\n", " 'FLOORSMAX_MEDI',\n", " 'FLOORSMIN_MEDI',\n", " 'LANDAREA_MEDI',\n", " 'NONLIVINGAPARTMENTS_MEDI',\n", " 'NONLIVINGAREA_MEDI',\n", " 'TOTALAREA_MODE',\n", " 'DEF_30_CNT_SOCIAL_CIRCLE',\n", " 'OBS_60_CNT_SOCIAL_CIRCLE',\n", " 'DEF_60_CNT_SOCIAL_CIRCLE',\n", " 'DAYS_LAST_PHONE_CHANGE',\n", " 'FLAG_DOCUMENT_2',\n", " 'FLAG_DOCUMENT_3',\n", " 'FLAG_DOCUMENT_4',\n", " 'FLAG_DOCUMENT_5',\n", " 'FLAG_DOCUMENT_6',\n", " 'FLAG_DOCUMENT_7',\n", " 'FLAG_DOCUMENT_8',\n", " 'FLAG_DOCUMENT_9',\n", " 'FLAG_DOCUMENT_10',\n", " 'FLAG_DOCUMENT_11',\n", " 'FLAG_DOCUMENT_12',\n", " 'FLAG_DOCUMENT_13',\n", " 'FLAG_DOCUMENT_14',\n", " 'FLAG_DOCUMENT_15',\n", " 'FLAG_DOCUMENT_16',\n", " 'FLAG_DOCUMENT_17',\n", " 'FLAG_DOCUMENT_18',\n", " 'FLAG_DOCUMENT_19',\n", " 'FLAG_DOCUMENT_20',\n", " 'FLAG_DOCUMENT_21',\n", " 'AMT_REQ_CREDIT_BUREAU_HOUR',\n", " 'AMT_REQ_CREDIT_BUREAU_DAY',\n", " 'AMT_REQ_CREDIT_BUREAU_WEEK',\n", " 'AMT_REQ_CREDIT_BUREAU_MON',\n", " 'AMT_REQ_CREDIT_BUREAU_QRT',\n", " 'AMT_REQ_CREDIT_BUREAU_YEAR',\n", " 'NAME_CONTRACT_TYPE_Revolving loans',\n", " 'CODE_GENDER_M',\n", " 'FLAG_OWN_CAR_Y',\n", " 'FLAG_OWN_REALTY_Y',\n", " 'NAME_TYPE_SUITE_Children',\n", " 'NAME_TYPE_SUITE_Family',\n", " 'NAME_TYPE_SUITE_Group of people',\n", " 'NAME_TYPE_SUITE_Other_A',\n", " 'NAME_TYPE_SUITE_Other_B',\n", " 'NAME_TYPE_SUITE_Spouse, partner',\n", " 'NAME_TYPE_SUITE_Unaccompanied',\n", " 'NAME_INCOME_TYPE_Businessman',\n", " 'NAME_INCOME_TYPE_Commercial associate',\n", " 'NAME_INCOME_TYPE_State servant',\n", " 'NAME_INCOME_TYPE_Student',\n", " 'NAME_INCOME_TYPE_Unemployed',\n", " 'NAME_INCOME_TYPE_Working',\n", " 'NAME_EDUCATION_TYPE_Academic degree',\n", " 'NAME_EDUCATION_TYPE_Higher education',\n", " 'NAME_EDUCATION_TYPE_Incomplete higher',\n", " 'NAME_EDUCATION_TYPE_Lower secondary',\n", " 'NAME_EDUCATION_TYPE_Secondary / secondary special',\n", " 'NAME_FAMILY_STATUS_Civil marriage',\n", " 'NAME_FAMILY_STATUS_Married',\n", " 'NAME_FAMILY_STATUS_Separated',\n", " 'NAME_FAMILY_STATUS_Single / not married',\n", " 'NAME_FAMILY_STATUS_Widow',\n", " 'NAME_HOUSING_TYPE_Co-op apartment',\n", " 'NAME_HOUSING_TYPE_House / apartment',\n", " 'NAME_HOUSING_TYPE_Municipal apartment',\n", " 'NAME_HOUSING_TYPE_Office apartment',\n", " 'NAME_HOUSING_TYPE_Rented apartment',\n", " 'NAME_HOUSING_TYPE_With parents',\n", " 'OCCUPATION_TYPE_Accountants',\n", " 'OCCUPATION_TYPE_Cleaning staff',\n", " 'OCCUPATION_TYPE_Cooking staff',\n", " 'OCCUPATION_TYPE_Core staff',\n", " 'OCCUPATION_TYPE_Drivers',\n", " 'OCCUPATION_TYPE_HR staff',\n", " 'OCCUPATION_TYPE_High skill tech staff',\n", " 'OCCUPATION_TYPE_IT staff',\n", " 'OCCUPATION_TYPE_Laborers',\n", " 'OCCUPATION_TYPE_Low-skill Laborers',\n", " 'OCCUPATION_TYPE_Managers',\n", " 'OCCUPATION_TYPE_Medicine staff',\n", " 'OCCUPATION_TYPE_Private service staff',\n", " 'OCCUPATION_TYPE_Realty agents',\n", " 'OCCUPATION_TYPE_Sales staff',\n", " 'OCCUPATION_TYPE_Secretaries',\n", " 'OCCUPATION_TYPE_Security staff',\n", " 'OCCUPATION_TYPE_Waiters/barmen staff',\n", " 'WEEKDAY_APPR_PROCESS_START_FRIDAY',\n", " 'WEEKDAY_APPR_PROCESS_START_MONDAY',\n", " 'WEEKDAY_APPR_PROCESS_START_SATURDAY',\n", " 'WEEKDAY_APPR_PROCESS_START_SUNDAY',\n", " 'WEEKDAY_APPR_PROCESS_START_THURSDAY',\n", " 'WEEKDAY_APPR_PROCESS_START_TUESDAY',\n", " 'WEEKDAY_APPR_PROCESS_START_WEDNESDAY',\n", " 'ORGANIZATION_TYPE_Advertising',\n", " 'ORGANIZATION_TYPE_Agriculture',\n", " 'ORGANIZATION_TYPE_Bank',\n", " 'ORGANIZATION_TYPE_Business Entity Type 1',\n", " 'ORGANIZATION_TYPE_Business Entity Type 2',\n", " 'ORGANIZATION_TYPE_Business Entity Type 3',\n", " 'ORGANIZATION_TYPE_Cleaning',\n", " 'ORGANIZATION_TYPE_Construction',\n", " 'ORGANIZATION_TYPE_Culture',\n", " 'ORGANIZATION_TYPE_Electricity',\n", " 'ORGANIZATION_TYPE_Emergency',\n", " 'ORGANIZATION_TYPE_Government',\n", " 'ORGANIZATION_TYPE_Hotel',\n", " 'ORGANIZATION_TYPE_Housing',\n", " 'ORGANIZATION_TYPE_Industry: type 1',\n", " 'ORGANIZATION_TYPE_Industry: type 10',\n", " 'ORGANIZATION_TYPE_Industry: type 11',\n", " 'ORGANIZATION_TYPE_Industry: type 12',\n", " 'ORGANIZATION_TYPE_Industry: type 13',\n", " 'ORGANIZATION_TYPE_Industry: type 2',\n", " 'ORGANIZATION_TYPE_Industry: type 3',\n", " 'ORGANIZATION_TYPE_Industry: type 4',\n", " 'ORGANIZATION_TYPE_Industry: type 5',\n", " 'ORGANIZATION_TYPE_Industry: type 6',\n", " 'ORGANIZATION_TYPE_Industry: type 7',\n", " 'ORGANIZATION_TYPE_Industry: type 8',\n", " 'ORGANIZATION_TYPE_Industry: type 9',\n", " 'ORGANIZATION_TYPE_Insurance',\n", " 'ORGANIZATION_TYPE_Kindergarten',\n", " 'ORGANIZATION_TYPE_Legal Services',\n", " 'ORGANIZATION_TYPE_Medicine',\n", " 'ORGANIZATION_TYPE_Military',\n", " 'ORGANIZATION_TYPE_Mobile',\n", " 'ORGANIZATION_TYPE_Other',\n", " 'ORGANIZATION_TYPE_Police',\n", " 'ORGANIZATION_TYPE_Postal',\n", " 'ORGANIZATION_TYPE_Realtor',\n", " 'ORGANIZATION_TYPE_Religion',\n", " 'ORGANIZATION_TYPE_Restaurant',\n", " 'ORGANIZATION_TYPE_School',\n", " 'ORGANIZATION_TYPE_Security',\n", " 'ORGANIZATION_TYPE_Security Ministries',\n", " 'ORGANIZATION_TYPE_Self-employed',\n", " 'ORGANIZATION_TYPE_Services',\n", " 'ORGANIZATION_TYPE_Telecom',\n", " 'ORGANIZATION_TYPE_Trade: type 1',\n", " 'ORGANIZATION_TYPE_Trade: type 2',\n", " 'ORGANIZATION_TYPE_Trade: type 3',\n", " 'ORGANIZATION_TYPE_Trade: type 4',\n", " 'ORGANIZATION_TYPE_Trade: type 5',\n", " 'ORGANIZATION_TYPE_Trade: type 6',\n", " 'ORGANIZATION_TYPE_Trade: type 7',\n", " 'ORGANIZATION_TYPE_Transport: type 1',\n", " 'ORGANIZATION_TYPE_Transport: type 2',\n", " 'ORGANIZATION_TYPE_Transport: type 3',\n", " 'ORGANIZATION_TYPE_Transport: type 4',\n", " 'ORGANIZATION_TYPE_University',\n", " 'ORGANIZATION_TYPE_XNA',\n", " 'FONDKAPREMONT_MODE_not specified',\n", " 'FONDKAPREMONT_MODE_org spec account',\n", " 'FONDKAPREMONT_MODE_reg oper account',\n", " 'FONDKAPREMONT_MODE_reg oper spec account',\n", " 'HOUSETYPE_MODE_specific housing',\n", " 'HOUSETYPE_MODE_terraced house',\n", " 'WALLSMATERIAL_MODE_Block',\n", " 'WALLSMATERIAL_MODE_Mixed',\n", " 'WALLSMATERIAL_MODE_Monolithic',\n", " 'WALLSMATERIAL_MODE_Others',\n", " 'WALLSMATERIAL_MODE_Panel',\n", " 'WALLSMATERIAL_MODE_Stone, brick',\n", " 'WALLSMATERIAL_MODE_Wooden',\n", " 'EMERGENCYSTATE_MODE_No',\n", " 'EMERGENCYSTATE_MODE_Yes',\n", " 'PREVIOUS_AMT_ANNUITY_MEAN_MIN',\n", " 'PREVIOUS_AMT_ANNUITY_SUM_MIN',\n", " 'PREVIOUS_AMT_ANNUITY_SUM_MAX',\n", " 'PREVIOUS_AMT_ANNUITY_SUM_MEAN',\n", " 'PREVIOUS_AMT_DOWN_PAYMENT_MEAN_MIN',\n", " 'PREVIOUS_AMT_DOWN_PAYMENT_MEAN_MEAN',\n", " 'PREVIOUS_AMT_DOWN_PAYMENT_SUM_MIN',\n", " 'PREVIOUS_AMT_DOWN_PAYMENT_SUM_MEAN',\n", " 'PREVIOUS_AMT_DOWN_PAYMENT_SUM_SUM',\n", " 'PREVIOUS_AMT_GOODS_PRICE_MEAN_MIN',\n", " 'PREVIOUS_AMT_GOODS_PRICE_SUM_MIN',\n", " 'PREVIOUS_AMT_GOODS_PRICE_SUM_MAX',\n", " 'PREVIOUS_AMT_GOODS_PRICE_SUM_MEAN',\n", " 'PREVIOUS_AMT_GOODS_PRICE_SUM_SUM',\n", " 'PREVIOUS_HOUR_APPR_PROCESS_START_SUM_MIN',\n", " 'PREVIOUS_HOUR_APPR_PROCESS_START_SUM_MAX',\n", " 'PREVIOUS_HOUR_APPR_PROCESS_START_SUM_MEAN',\n", " 'PREVIOUS_NFLAG_LAST_APPL_IN_DAY_SUM_MIN',\n", " 'PREVIOUS_NFLAG_LAST_APPL_IN_DAY_SUM_MAX',\n", " 'PREVIOUS_NFLAG_LAST_APPL_IN_DAY_SUM_MEAN',\n", " 'PREVIOUS_RATE_DOWN_PAYMENT_MEAN_MIN',\n", " 'PREVIOUS_RATE_DOWN_PAYMENT_MEAN_MEAN',\n", " 'PREVIOUS_RATE_DOWN_PAYMENT_SUM_MIN',\n", " 'PREVIOUS_RATE_DOWN_PAYMENT_SUM_MAX',\n", " 'PREVIOUS_RATE_DOWN_PAYMENT_SUM_MEAN',\n", " 'PREVIOUS_RATE_DOWN_PAYMENT_SUM_SUM',\n", " 'PREVIOUS_RATE_INTEREST_PRIMARY_SUM_MIN',\n", " 'PREVIOUS_RATE_INTEREST_PRIMARY_SUM_MEAN',\n", " 'PREVIOUS_RATE_INTEREST_PRIMARY_SUM_SUM',\n", " 'PREVIOUS_RATE_INTEREST_PRIVILEGED_SUM_MIN',\n", " 'PREVIOUS_RATE_INTEREST_PRIVILEGED_SUM_MEAN',\n", " 'PREVIOUS_RATE_INTEREST_PRIVILEGED_SUM_SUM',\n", " 'PREVIOUS_DAYS_DECISION_SUM_MIN',\n", " 'PREVIOUS_DAYS_DECISION_SUM_MAX',\n", " 'PREVIOUS_DAYS_DECISION_SUM_MEAN',\n", " 'PREVIOUS_DAYS_DECISION_SUM_SUM',\n", " 'PREVIOUS_SELLERPLACE_AREA_SUM_MEAN',\n", " 'PREVIOUS_SELLERPLACE_AREA_SUM_SUM',\n", " 'PREVIOUS_CNT_PAYMENT_MEAN_MIN',\n", " 'PREVIOUS_CNT_PAYMENT_MEAN_MEAN',\n", " 'PREVIOUS_CNT_PAYMENT_SUM_MIN',\n", " 'PREVIOUS_CNT_PAYMENT_SUM_MAX',\n", " 'PREVIOUS_CNT_PAYMENT_SUM_MEAN',\n", " 'PREVIOUS_CNT_PAYMENT_SUM_SUM',\n", " 'PREVIOUS_DAYS_FIRST_DRAWING_MEAN_MIN',\n", " 'PREVIOUS_DAYS_FIRST_DRAWING_MEAN_MEAN',\n", " 'PREVIOUS_DAYS_FIRST_DRAWING_SUM_MIN',\n", " 'PREVIOUS_DAYS_FIRST_DRAWING_SUM_MAX',\n", " 'PREVIOUS_DAYS_FIRST_DRAWING_SUM_MEAN',\n", " 'PREVIOUS_DAYS_FIRST_DUE_MEAN_MIN',\n", " 'PREVIOUS_DAYS_FIRST_DUE_SUM_MIN',\n", " 'PREVIOUS_DAYS_FIRST_DUE_SUM_MEAN',\n", " 'PREVIOUS_DAYS_FIRST_DUE_SUM_SUM',\n", " 'PREVIOUS_DAYS_LAST_DUE_1ST_VERSION_SUM_MEAN',\n", " 'PREVIOUS_DAYS_LAST_DUE_1ST_VERSION_SUM_SUM',\n", " 'PREVIOUS_DAYS_TERMINATION_MEAN_MIN',\n", " 'PREVIOUS_DAYS_TERMINATION_MEAN_MEAN',\n", " 'PREVIOUS_DAYS_TERMINATION_SUM_MIN',\n", " 'PREVIOUS_DAYS_TERMINATION_SUM_MAX',\n", " 'PREVIOUS_DAYS_TERMINATION_SUM_MEAN',\n", " 'PREVIOUS_DAYS_TERMINATION_SUM_SUM',\n", " 'PREVIOUS_NFLAG_INSURED_ON_APPROVAL_MEAN_MIN',\n", " 'PREVIOUS_NFLAG_INSURED_ON_APPROVAL_MEAN_MEAN',\n", " 'PREVIOUS_NFLAG_INSURED_ON_APPROVAL_SUM_MIN',\n", " 'PREVIOUS_NFLAG_INSURED_ON_APPROVAL_SUM_MAX',\n", " 'PREVIOUS_NFLAG_INSURED_ON_APPROVAL_SUM_MEAN',\n", " 'PREVIOUS_NFLAG_INSURED_ON_APPROVAL_SUM_SUM',\n", " 'PREVIOUS_NAME_CONTRACT_TYPE_REVOLVING LOANS_SUM_SUM',\n", " 'PREVIOUS_NAME_CONTRACT_TYPE_XNA_MEAN_MIN',\n", " 'PREVIOUS_NAME_CONTRACT_TYPE_XNA_SUM_MIN',\n", " 'PREVIOUS_NAME_CONTRACT_TYPE_XNA_SUM_MEAN',\n", " 'PREVIOUS_NAME_CONTRACT_TYPE_XNA_SUM_SUM',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_FRIDAY_SUM_MIN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_FRIDAY_SUM_MAX',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_FRIDAY_SUM_MEAN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_FRIDAY_SUM_SUM',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_MONDAY_SUM_MIN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_MONDAY_SUM_MAX',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_MONDAY_SUM_MEAN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_MONDAY_SUM_SUM',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_SATURDAY_SUM_MIN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_SATURDAY_SUM_MAX',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_SATURDAY_SUM_MEAN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_SATURDAY_SUM_SUM',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_SUNDAY_SUM_MIN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_SUNDAY_SUM_MAX',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_SUNDAY_SUM_MEAN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_SUNDAY_SUM_SUM',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_THURSDAY_SUM_MIN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_THURSDAY_SUM_MAX',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_THURSDAY_SUM_MEAN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_THURSDAY_SUM_SUM',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_TUESDAY_SUM_MIN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_TUESDAY_SUM_MAX',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_TUESDAY_SUM_MEAN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_TUESDAY_SUM_SUM',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_WEDNESDAY_SUM_MIN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_WEDNESDAY_SUM_MAX',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_WEDNESDAY_SUM_MEAN',\n", " 'PREVIOUS_WEEKDAY_APPR_PROCESS_START_WEDNESDAY_SUM_SUM',\n", " 'PREVIOUS_FLAG_LAST_APPL_PER_CONTRACT_N_MEAN_MIN',\n", " 'PREVIOUS_FLAG_LAST_APPL_PER_CONTRACT_N_SUM_MIN',\n", " 'PREVIOUS_FLAG_LAST_APPL_PER_CONTRACT_N_SUM_SUM',\n", " 'PREVIOUS_FLAG_LAST_APPL_PER_CONTRACT_Y_MEAN_MAX',\n", " 'PREVIOUS_FLAG_LAST_APPL_PER_CONTRACT_Y_SUM_MIN',\n", " 'PREVIOUS_FLAG_LAST_APPL_PER_CONTRACT_Y_SUM_MAX',\n", " 'PREVIOUS_FLAG_LAST_APPL_PER_CONTRACT_Y_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUILDING A HOUSE OR AN ANNEX_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUILDING A HOUSE OR AN ANNEX_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUILDING A HOUSE OR AN ANNEX_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUILDING A HOUSE OR AN ANNEX_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUSINESS DEVELOPMENT_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUSINESS DEVELOPMENT_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUSINESS DEVELOPMENT_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A GARAGE_MEAN_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A GARAGE_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A GARAGE_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A GARAGE_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A HOLIDAY HOME / LAND_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A HOLIDAY HOME / LAND_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A HOLIDAY HOME / LAND_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A HOLIDAY HOME / LAND_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A HOME_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A HOME_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A HOME_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A HOME_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A NEW CAR_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A NEW CAR_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A NEW CAR_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A NEW CAR_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A USED CAR_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A USED CAR_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A USED CAR_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_BUYING A USED CAR_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_CAR REPAIRS_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_CAR REPAIRS_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_CAR REPAIRS_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_EDUCATION_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_EDUCATION_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_EDUCATION_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_EDUCATION_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_EVERYDAY EXPENSES_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_EVERYDAY EXPENSES_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_EVERYDAY EXPENSES_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_FURNITURE_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_FURNITURE_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_FURNITURE_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_FURNITURE_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_GASIFICATION / WATER SUPPLY_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_GASIFICATION / WATER SUPPLY_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_GASIFICATION / WATER SUPPLY_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_GASIFICATION / WATER SUPPLY_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_HOBBY_MEAN_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_HOBBY_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_HOBBY_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_HOBBY_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_JOURNEY_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_JOURNEY_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_JOURNEY_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_MEDICINE_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_MEDICINE_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_MEDICINE_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_MEDICINE_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_MONEY FOR A THIRD PERSON_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_MONEY FOR A THIRD PERSON_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_OTHER_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_OTHER_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_OTHER_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_OTHER_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_PAYMENTS ON OTHER LOANS_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_PAYMENTS ON OTHER LOANS_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_PAYMENTS ON OTHER LOANS_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_PAYMENTS ON OTHER LOANS_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_PURCHASE OF ELECTRONIC EQUIPMENT_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_PURCHASE OF ELECTRONIC EQUIPMENT_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_PURCHASE OF ELECTRONIC EQUIPMENT_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_PURCHASE OF ELECTRONIC EQUIPMENT_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_REFUSAL TO NAME THE GOAL_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_REFUSAL TO NAME THE GOAL_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_REPAIRS_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_REPAIRS_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_REPAIRS_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_REPAIRS_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_URGENT NEEDS_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_URGENT NEEDS_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_URGENT NEEDS_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_URGENT NEEDS_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_WEDDING / GIFT / HOLIDAY_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_WEDDING / GIFT / HOLIDAY_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_WEDDING / GIFT / HOLIDAY_SUM_MEAN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_WEDDING / GIFT / HOLIDAY_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_XAP_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_XAP_SUM_SUM',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_XNA_SUM_MIN',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_XNA_SUM_MAX',\n", " 'PREVIOUS_NAME_CASH_LOAN_PURPOSE_XNA_SUM_MEAN',\n", " 'PREVIOUS_NAME_CONTRACT_STATUS_APPROVED_SUM_MIN',\n", " 'PREVIOUS_NAME_CONTRACT_STATUS_APPROVED_SUM_MAX',\n", " 'PREVIOUS_NAME_CONTRACT_STATUS_APPROVED_SUM_MEAN',\n", " 'PREVIOUS_NAME_CONTRACT_STATUS_APPROVED_SUM_SUM',\n", " 'PREVIOUS_NAME_CONTRACT_STATUS_CANCELED_SUM_MIN',\n", " 'PREVIOUS_NAME_CONTRACT_STATUS_CANCELED_SUM_MAX',\n", " 'PREVIOUS_NAME_CONTRACT_STATUS_CANCELED_SUM_MEAN',\n", " 'PREVIOUS_NAME_CONTRACT_STATUS_REFUSED_SUM_MIN',\n", " 'PREVIOUS_NAME_CONTRACT_STATUS_REFUSED_SUM_SUM',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_CASH THROUGH THE BANK_SUM_SUM',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_CASHLESS FROM THE ACCOUNT OF THE EMPLOYER_SUM_MIN',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_CASHLESS FROM THE ACCOUNT OF THE EMPLOYER_SUM_MEAN',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_CASHLESS FROM THE ACCOUNT OF THE EMPLOYER_SUM_SUM',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_NON-CASH FROM YOUR ACCOUNT_SUM_MIN',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_NON-CASH FROM YOUR ACCOUNT_SUM_MAX',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_NON-CASH FROM YOUR ACCOUNT_SUM_MEAN',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_NON-CASH FROM YOUR ACCOUNT_SUM_SUM',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_XNA_SUM_MIN',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_XNA_SUM_MAX',\n", " 'PREVIOUS_NAME_PAYMENT_TYPE_XNA_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_CLIENT_SUM_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_CLIENT_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_CLIENT_SUM_SUM',\n", " 'PREVIOUS_CODE_REJECT_REASON_HC_SUM_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_HC_SUM_MAX',\n", " 'PREVIOUS_CODE_REJECT_REASON_HC_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_HC_SUM_SUM',\n", " 'PREVIOUS_CODE_REJECT_REASON_LIMIT_SUM_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_LIMIT_SUM_MAX',\n", " 'PREVIOUS_CODE_REJECT_REASON_LIMIT_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_LIMIT_SUM_SUM',\n", " 'PREVIOUS_CODE_REJECT_REASON_SCO_SUM_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_SCO_SUM_MAX',\n", " 'PREVIOUS_CODE_REJECT_REASON_SCO_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_SCO_SUM_SUM',\n", " 'PREVIOUS_CODE_REJECT_REASON_SCOFR_MEAN_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_SCOFR_SUM_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_SCOFR_SUM_MAX',\n", " 'PREVIOUS_CODE_REJECT_REASON_SCOFR_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_SCOFR_SUM_SUM',\n", " 'PREVIOUS_CODE_REJECT_REASON_SYSTEM_SUM_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_SYSTEM_SUM_MAX',\n", " 'PREVIOUS_CODE_REJECT_REASON_SYSTEM_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_SYSTEM_SUM_SUM',\n", " 'PREVIOUS_CODE_REJECT_REASON_VERIF_SUM_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_VERIF_SUM_MAX',\n", " 'PREVIOUS_CODE_REJECT_REASON_VERIF_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_VERIF_SUM_SUM',\n", " 'PREVIOUS_CODE_REJECT_REASON_XAP_SUM_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_XAP_SUM_MAX',\n", " 'PREVIOUS_CODE_REJECT_REASON_XAP_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_XNA_SUM_MIN',\n", " 'PREVIOUS_CODE_REJECT_REASON_XNA_SUM_MAX',\n", " 'PREVIOUS_CODE_REJECT_REASON_XNA_SUM_MEAN',\n", " 'PREVIOUS_CODE_REJECT_REASON_XNA_SUM_SUM',\n", " 'PREVIOUS_NAME_TYPE_SUITE_CHILDREN_SUM_MIN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_CHILDREN_SUM_MAX',\n", " 'PREVIOUS_NAME_TYPE_SUITE_CHILDREN_SUM_MEAN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_CHILDREN_SUM_SUM',\n", " 'PREVIOUS_NAME_TYPE_SUITE_FAMILY_SUM_MIN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_FAMILY_SUM_MAX',\n", " 'PREVIOUS_NAME_TYPE_SUITE_FAMILY_SUM_MEAN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_FAMILY_SUM_SUM',\n", " 'PREVIOUS_NAME_TYPE_SUITE_GROUP OF PEOPLE_SUM_MIN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_GROUP OF PEOPLE_SUM_MEAN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_GROUP OF PEOPLE_SUM_SUM',\n", " 'PREVIOUS_NAME_TYPE_SUITE_OTHER_A_SUM_MIN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_OTHER_A_SUM_MEAN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_OTHER_A_SUM_SUM',\n", " 'PREVIOUS_NAME_TYPE_SUITE_OTHER_B_SUM_MIN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_OTHER_B_SUM_MEAN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_OTHER_B_SUM_SUM',\n", " 'PREVIOUS_NAME_TYPE_SUITE_SPOUSE, PARTNER_SUM_MIN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_SPOUSE, PARTNER_SUM_MAX',\n", " 'PREVIOUS_NAME_TYPE_SUITE_SPOUSE, PARTNER_SUM_MEAN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_SPOUSE, PARTNER_SUM_SUM',\n", " 'PREVIOUS_NAME_TYPE_SUITE_UNACCOMPANIED_SUM_MIN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_UNACCOMPANIED_SUM_MAX',\n", " 'PREVIOUS_NAME_TYPE_SUITE_UNACCOMPANIED_SUM_MEAN',\n", " 'PREVIOUS_NAME_TYPE_SUITE_UNACCOMPANIED_SUM_SUM',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_NEW_SUM_MIN',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_NEW_SUM_MAX',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_NEW_SUM_MEAN',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_NEW_SUM_SUM',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_REFRESHED_SUM_MIN',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_REFRESHED_SUM_MAX',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_REFRESHED_SUM_MEAN',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_REFRESHED_SUM_SUM',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_REPEATER_SUM_MIN',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_REPEATER_SUM_MAX',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_REPEATER_SUM_MEAN',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_XNA_SUM_MIN',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_XNA_SUM_MAX',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_XNA_SUM_MEAN',\n", " 'PREVIOUS_NAME_CLIENT_TYPE_XNA_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_ADDITIONAL SERVICE_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_ADDITIONAL SERVICE_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_ADDITIONAL SERVICE_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_ANIMALS_MEAN_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_ANIMALS_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_ANIMALS_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_AUDIO/VIDEO_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_AUDIO/VIDEO_SUM_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_AUDIO/VIDEO_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_AUDIO/VIDEO_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_AUTO ACCESSORIES_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_AUTO ACCESSORIES_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_AUTO ACCESSORIES_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_COMPUTERS_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_COMPUTERS_SUM_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_COMPUTERS_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_COMPUTERS_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_CONSTRUCTION MATERIALS_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_CONSTRUCTION MATERIALS_SUM_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_CONSTRUCTION MATERIALS_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_CONSTRUCTION MATERIALS_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_CONSUMER ELECTRONICS_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_CONSUMER ELECTRONICS_SUM_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_CONSUMER ELECTRONICS_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_CONSUMER ELECTRONICS_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_DIRECT SALES_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_DIRECT SALES_SUM_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_DIRECT SALES_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_DIRECT SALES_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_EDUCATION_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_EDUCATION_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_EDUCATION_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_FITNESS_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_FITNESS_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_FURNITURE_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_FURNITURE_SUM_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_FURNITURE_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_GARDENING_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_GARDENING_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_GARDENING_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOMEWARES_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOMEWARES_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOMEWARES_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOUSE CONSTRUCTION_MEAN_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOUSE CONSTRUCTION_MEAN_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOUSE CONSTRUCTION_MEAN_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOUSE CONSTRUCTION_MEAN_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOUSE CONSTRUCTION_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOUSE CONSTRUCTION_SUM_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOUSE CONSTRUCTION_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_HOUSE CONSTRUCTION_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_INSURANCE_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_INSURANCE_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_INSURANCE_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_JEWELRY_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_JEWELRY_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_JEWELRY_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MEDICAL SUPPLIES_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MEDICAL SUPPLIES_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MEDICAL SUPPLIES_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MEDICINE_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MEDICINE_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MEDICINE_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MOBILE_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MOBILE_SUM_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MOBILE_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_MOBILE_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_OFFICE APPLIANCES_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_OFFICE APPLIANCES_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_OFFICE APPLIANCES_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_OTHER_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_OTHER_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_OTHER_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_PHOTO / CINEMA EQUIPMENT_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_PHOTO / CINEMA EQUIPMENT_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_PHOTO / CINEMA EQUIPMENT_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_SPORT AND LEISURE_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_SPORT AND LEISURE_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_SPORT AND LEISURE_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_TOURISM_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_TOURISM_SUM_MAX',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_TOURISM_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_TOURISM_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_VEHICLES_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_VEHICLES_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_VEHICLES_SUM_SUM',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_WEAPON_MEAN_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_WEAPON_SUM_MIN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_WEAPON_SUM_MEAN',\n", " 'PREVIOUS_NAME_GOODS_CATEGORY_WEAPON_SUM_SUM',\n", " 'PREVIOUS_NAME_PORTFOLIO_CARDS_SUM_MAX',\n", " 'PREVIOUS_NAME_PORTFOLIO_CARDS_SUM_MEAN',\n", " 'PREVIOUS_NAME_PORTFOLIO_CARDS_SUM_SUM',\n", " 'PREVIOUS_NAME_PORTFOLIO_CASH_SUM_MIN',\n", " 'PREVIOUS_NAME_PORTFOLIO_CASH_SUM_MAX',\n", " 'PREVIOUS_NAME_PORTFOLIO_CASH_SUM_MEAN',\n", " 'PREVIOUS_NAME_PORTFOLIO_CASH_SUM_SUM',\n", " 'PREVIOUS_NAME_PORTFOLIO_POS_SUM_MIN',\n", " 'PREVIOUS_NAME_PORTFOLIO_POS_SUM_MAX',\n", " 'PREVIOUS_NAME_PORTFOLIO_POS_SUM_MEAN',\n", " 'PREVIOUS_NAME_PORTFOLIO_POS_SUM_SUM',\n", " 'PREVIOUS_NAME_PORTFOLIO_XNA_SUM_MIN',\n", " 'PREVIOUS_NAME_PORTFOLIO_XNA_SUM_MAX',\n", " 'PREVIOUS_NAME_PORTFOLIO_XNA_SUM_MEAN',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_XNA_SUM_MIN',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_XNA_SUM_MAX',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_XNA_SUM_MEAN',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_XNA_SUM_SUM',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_WALK-IN_SUM_MIN',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_WALK-IN_SUM_MAX',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_WALK-IN_SUM_MEAN',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_WALK-IN_SUM_SUM',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_X-SELL_SUM_MIN',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_X-SELL_SUM_MAX',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_X-SELL_SUM_MEAN',\n", " 'PREVIOUS_NAME_PRODUCT_TYPE_X-SELL_SUM_SUM',\n", " 'PREVIOUS_CHANNEL_TYPE_AP+ (CASH LOAN)_SUM_MIN',\n", " 'PREVIOUS_CHANNEL_TYPE_AP+ (CASH LOAN)_SUM_MAX',\n", " 'PREVIOUS_CHANNEL_TYPE_AP+ (CASH LOAN)_SUM_MEAN',\n", " 'PREVIOUS_CHANNEL_TYPE_AP+ (CASH LOAN)_SUM_SUM',\n", " 'PREVIOUS_CHANNEL_TYPE_CAR DEALER_SUM_MIN',\n", " 'PREVIOUS_CHANNEL_TYPE_CAR DEALER_SUM_MEAN',\n", " 'PREVIOUS_CHANNEL_TYPE_CAR DEALER_SUM_SUM',\n", " 'PREVIOUS_CHANNEL_TYPE_CHANNEL OF CORPORATE SALES_SUM_MIN',\n", " 'PREVIOUS_CHANNEL_TYPE_CHANNEL OF CORPORATE SALES_SUM_MAX',\n", " 'PREVIOUS_CHANNEL_TYPE_CHANNEL OF CORPORATE SALES_SUM_MEAN',\n", " 'PREVIOUS_CHANNEL_TYPE_CHANNEL OF CORPORATE SALES_SUM_SUM',\n", " 'PREVIOUS_CHANNEL_TYPE_CONTACT CENTER_SUM_MIN',\n", " 'PREVIOUS_CHANNEL_TYPE_CONTACT CENTER_SUM_MAX',\n", " 'PREVIOUS_CHANNEL_TYPE_CONTACT CENTER_SUM_MEAN',\n", " 'PREVIOUS_CHANNEL_TYPE_CONTACT CENTER_SUM_SUM',\n", " 'PREVIOUS_CHANNEL_TYPE_COUNTRY-WIDE_SUM_MIN',\n", " 'PREVIOUS_CHANNEL_TYPE_COUNTRY-WIDE_SUM_MAX',\n", " 'PREVIOUS_CHANNEL_TYPE_COUNTRY-WIDE_SUM_MEAN',\n", " 'PREVIOUS_CHANNEL_TYPE_COUNTRY-WIDE_SUM_SUM',\n", " 'PREVIOUS_CHANNEL_TYPE_CREDIT AND CASH OFFICES_SUM_MIN',\n", " 'PREVIOUS_CHANNEL_TYPE_CREDIT AND CASH OFFICES_SUM_MAX',\n", " 'PREVIOUS_CHANNEL_TYPE_CREDIT AND CASH OFFICES_SUM_MEAN',\n", " 'PREVIOUS_CHANNEL_TYPE_REGIONAL / LOCAL_SUM_MIN',\n", " 'PREVIOUS_CHANNEL_TYPE_REGIONAL / LOCAL_SUM_MAX',\n", " 'PREVIOUS_CHANNEL_TYPE_REGIONAL / LOCAL_SUM_MEAN',\n", " 'PREVIOUS_CHANNEL_TYPE_REGIONAL / LOCAL_SUM_SUM',\n", " 'PREVIOUS_CHANNEL_TYPE_STONE_SUM_MIN',\n", " 'PREVIOUS_CHANNEL_TYPE_STONE_SUM_MAX',\n", " 'PREVIOUS_CHANNEL_TYPE_STONE_SUM_MEAN',\n", " 'PREVIOUS_CHANNEL_TYPE_STONE_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_AUTO TECHNOLOGY_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_AUTO TECHNOLOGY_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_AUTO TECHNOLOGY_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CLOTHING_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CLOTHING_SUM_MAX',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CLOTHING_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CLOTHING_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONNECTIVITY_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONNECTIVITY_SUM_MAX',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONNECTIVITY_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONNECTIVITY_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONSTRUCTION_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONSTRUCTION_SUM_MAX',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONSTRUCTION_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONSTRUCTION_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONSUMER ELECTRONICS_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONSUMER ELECTRONICS_SUM_MAX',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONSUMER ELECTRONICS_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_CONSUMER ELECTRONICS_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_FURNITURE_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_FURNITURE_SUM_MAX',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_FURNITURE_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_FURNITURE_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_INDUSTRY_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_INDUSTRY_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_INDUSTRY_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_JEWELRY_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_JEWELRY_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_JEWELRY_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_MLM PARTNERS_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_MLM PARTNERS_SUM_MAX',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_MLM PARTNERS_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_MLM PARTNERS_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_TOURISM_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_TOURISM_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_TOURISM_SUM_SUM',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_XNA_SUM_MIN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_XNA_SUM_MAX',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_XNA_SUM_MEAN',\n", " 'PREVIOUS_NAME_SELLER_INDUSTRY_XNA_SUM_SUM',\n", " 'PREVIOUS_NAME_YIELD_GROUP_XNA_SUM_MIN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_XNA_SUM_MAX',\n", " 'PREVIOUS_NAME_YIELD_GROUP_XNA_SUM_MEAN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_XNA_SUM_SUM',\n", " 'PREVIOUS_NAME_YIELD_GROUP_HIGH_SUM_MIN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_HIGH_SUM_MAX',\n", " 'PREVIOUS_NAME_YIELD_GROUP_HIGH_SUM_MEAN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_HIGH_SUM_SUM',\n", " 'PREVIOUS_NAME_YIELD_GROUP_LOW_ACTION_SUM_MIN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_LOW_ACTION_SUM_MAX',\n", " 'PREVIOUS_NAME_YIELD_GROUP_LOW_ACTION_SUM_MEAN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_LOW_ACTION_SUM_SUM',\n", " 'PREVIOUS_NAME_YIELD_GROUP_LOW_NORMAL_SUM_MIN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_LOW_NORMAL_SUM_MAX',\n", " 'PREVIOUS_NAME_YIELD_GROUP_LOW_NORMAL_SUM_MEAN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_LOW_NORMAL_SUM_SUM',\n", " 'PREVIOUS_NAME_YIELD_GROUP_MIDDLE_SUM_MIN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_MIDDLE_SUM_MAX',\n", " 'PREVIOUS_NAME_YIELD_GROUP_MIDDLE_SUM_MEAN',\n", " 'PREVIOUS_NAME_YIELD_GROUP_MIDDLE_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CARD STREET_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CARD STREET_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CARD STREET_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CARD STREET_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CARD X-SELL_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CARD X-SELL_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CARD X-SELL_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CARD X-SELL_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: HIGH_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: HIGH_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: HIGH_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: HIGH_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: LOW_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: LOW_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: LOW_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: LOW_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: MIDDLE_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: MIDDLE_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: MIDDLE_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH STREET: MIDDLE_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: HIGH_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: HIGH_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: HIGH_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: HIGH_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: LOW_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: LOW_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: LOW_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: LOW_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: MIDDLE_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: MIDDLE_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: MIDDLE_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_CASH X-SELL: MIDDLE_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS HOUSEHOLD WITH INTEREST_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS HOUSEHOLD WITH INTEREST_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS HOUSEHOLD WITH INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS HOUSEHOLD WITH INTEREST_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS HOUSEHOLD WITHOUT INTEREST_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS HOUSEHOLD WITHOUT INTEREST_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS HOUSEHOLD WITHOUT INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS HOUSEHOLD WITHOUT INTEREST_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS INDUSTRY WITH INTEREST_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS INDUSTRY WITH INTEREST_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS INDUSTRY WITH INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS INDUSTRY WITH INTEREST_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS INDUSTRY WITHOUT INTEREST_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS INDUSTRY WITHOUT INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS INDUSTRY WITHOUT INTEREST_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS MOBILE WITH INTEREST_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS MOBILE WITH INTEREST_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS MOBILE WITH INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS MOBILE WITH INTEREST_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS MOBILE WITHOUT INTEREST_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS MOBILE WITHOUT INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS MOBILE WITHOUT INTEREST_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_MAX',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHER WITH INTEREST_SUM_SUM',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MIN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_MEAN',\n", " 'PREVIOUS_PRODUCT_COMBINATION_POS OTHERS WITHOUT INTEREST_SUM_SUM',\n", " 'prev_applications_counts',\n", " 'TARGET',\n", " 'SK_ID_CURR',\n", " 'CREDIT_CARD_BALANCE_MONTHS_BALANCE_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_CREDIT_LIMIT_ACTUAL_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_CREDIT_LIMIT_ACTUAL_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_CREDIT_LIMIT_ACTUAL_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_ATM_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_ATM_CURRENT_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_ATM_CURRENT_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_ATM_CURRENT_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_CURRENT_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_CURRENT_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_OTHER_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_OTHER_CURRENT_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_OTHER_CURRENT_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_OTHER_CURRENT_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_POS_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_POS_CURRENT_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_POS_CURRENT_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_DRAWINGS_POS_CURRENT_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_INST_MIN_REGULARITY_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_PAYMENT_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_PAYMENT_TOTAL_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_PAYMENT_TOTAL_CURRENT_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_PAYMENT_TOTAL_CURRENT_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_PAYMENT_TOTAL_CURRENT_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_TOTAL_RECEIVABLE_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_TOTAL_RECEIVABLE_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_TOTAL_RECEIVABLE_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_AMT_TOTAL_RECEIVABLE_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_ATM_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_ATM_CURRENT_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_ATM_CURRENT_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_ATM_CURRENT_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_OTHER_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_OTHER_CURRENT_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_OTHER_CURRENT_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_OTHER_CURRENT_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_POS_CURRENT_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_POS_CURRENT_MAX_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_POS_CURRENT_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_DRAWINGS_POS_CURRENT_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_INSTALMENT_MATURE_CUM_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_CNT_INSTALMENT_MATURE_CUM_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_SK_DPD_MIN_MIN',\n", " 'CREDIT_CARD_BALANCE_SK_DPD_MIN_MAX',\n", " 'CREDIT_CARD_BALANCE_SK_DPD_MIN_MEAN',\n", " 'CREDIT_CARD_BALANCE_SK_DPD_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_SK_DPD_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_SK_DPD_DEF_MIN_MIN',\n", " 'CREDIT_CARD_BALANCE_SK_DPD_DEF_MIN_MAX',\n", " 'CREDIT_CARD_BALANCE_SK_DPD_DEF_MIN_MEAN',\n", " 'CREDIT_CARD_BALANCE_SK_DPD_DEF_MIN_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_ACTIVE_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_ACTIVE_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_APPROVED_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_COMPLETED_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_COMPLETED_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_DEMAND_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_REFUSED_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SENT PROPOSAL_SUM_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_MEAN_SUM',\n", " 'CREDIT_CARD_BALANCE_NAME_CONTRACT_STATUS_SIGNED_SUM_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_ACTIVE_MEAN_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_ACTIVE_MEAN_MAX',\n", " 'POS_NAME_CONTRACT_STATUS_ACTIVE_MEAN_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_ACTIVE_MEAN_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_ACTIVE_SUM_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_ACTIVE_SUM_MAX',\n", " 'POS_NAME_CONTRACT_STATUS_ACTIVE_SUM_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_ACTIVE_SUM_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_AMORTIZED DEBT_MEAN_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_AMORTIZED DEBT_SUM_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_AMORTIZED DEBT_SUM_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_APPROVED_MEAN_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_APPROVED_MEAN_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_APPROVED_MEAN_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_APPROVED_SUM_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_APPROVED_SUM_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_APPROVED_SUM_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_CANCELED_SUM_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_CANCELED_SUM_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_COMPLETED_MEAN_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_COMPLETED_MEAN_MAX',\n", " 'POS_NAME_CONTRACT_STATUS_COMPLETED_MEAN_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_COMPLETED_MEAN_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_COMPLETED_SUM_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_COMPLETED_SUM_MAX',\n", " 'POS_NAME_CONTRACT_STATUS_COMPLETED_SUM_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_COMPLETED_SUM_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_DEMAND_MEAN_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_DEMAND_MEAN_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_DEMAND_SUM_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_DEMAND_SUM_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_DEMAND_SUM_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_RETURNED TO THE STORE_MEAN_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_RETURNED TO THE STORE_MEAN_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_RETURNED TO THE STORE_MEAN_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_RETURNED TO THE STORE_SUM_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_RETURNED TO THE STORE_SUM_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_RETURNED TO THE STORE_SUM_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_SIGNED_MEAN_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_SIGNED_MEAN_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_SIGNED_MEAN_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_SIGNED_SUM_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_SIGNED_SUM_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_SIGNED_SUM_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_XNA_MEAN_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_XNA_MEAN_MAX',\n", " 'POS_NAME_CONTRACT_STATUS_XNA_MEAN_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_XNA_MEAN_SUM',\n", " 'POS_NAME_CONTRACT_STATUS_XNA_SUM_MIN',\n", " 'POS_NAME_CONTRACT_STATUS_XNA_SUM_MAX',\n", " 'POS_NAME_CONTRACT_STATUS_XNA_SUM_MEAN',\n", " 'POS_NAME_CONTRACT_STATUS_XNA_SUM_SUM',\n", " 'POS_MONTHS_BALANCE_MEAN_MIN',\n", " 'POS_MONTHS_BALANCE_MEAN_MAX',\n", " 'POS_MONTHS_BALANCE_MEAN_MEAN',\n", " 'POS_MONTHS_BALANCE_MEAN_SUM',\n", " 'POS_MONTHS_BALANCE_SUM_MIN',\n", " 'POS_MONTHS_BALANCE_SUM_MAX',\n", " 'POS_MONTHS_BALANCE_SUM_MEAN',\n", " 'POS_MONTHS_BALANCE_SUM_SUM',\n", " 'POS_CNT_INSTALMENT_MIN_MIN',\n", " 'POS_CNT_INSTALMENT_MIN_MAX',\n", " 'POS_CNT_INSTALMENT_MIN_MEAN',\n", " 'POS_CNT_INSTALMENT_FUTURE_MIN_MIN',\n", " 'POS_CNT_INSTALMENT_FUTURE_MIN_MEAN',\n", " 'POS_CNT_INSTALMENT_FUTURE_MIN_SUM',\n", " 'POS_CNT_INSTALMENT_FUTURE_MEAN_MIN',\n", " 'POS_CNT_INSTALMENT_FUTURE_MEAN_MAX',\n", " 'POS_CNT_INSTALMENT_FUTURE_MEAN_MEAN',\n", " 'POS_CNT_INSTALMENT_FUTURE_MEAN_SUM',\n", " 'POS_CNT_INSTALMENT_FUTURE_SUM_MIN',\n", " 'POS_CNT_INSTALMENT_FUTURE_SUM_MAX',\n", " 'POS_CNT_INSTALMENT_FUTURE_SUM_MEAN',\n", " 'POS_CNT_INSTALMENT_FUTURE_SUM_SUM',\n", " 'POS_SK_DPD_MIN_MIN',\n", " 'POS_SK_DPD_MIN_MEAN',\n", " 'POS_SK_DPD_MIN_SUM',\n", " 'POS_SK_DPD_MAX_MIN',\n", " 'POS_SK_DPD_MAX_MEAN',\n", " 'POS_SK_DPD_SUM_MIN',\n", " 'POS_SK_DPD_SUM_MEAN',\n", " 'POS_SK_DPD_SUM_SUM',\n", " 'POS_SK_DPD_DEF_MIN_MIN',\n", " 'POS_SK_DPD_DEF_MIN_SUM',\n", " 'POS_SK_DPD_DEF_MAX_MIN',\n", " 'POS_SK_DPD_DEF_SUM_MIN',\n", " 'POS_SK_DPD_DEF_SUM_SUM',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_MIN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_MAX',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_MIN_MEAN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_MAX_MIN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_MEAN_MIN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_MEAN_MAX',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_MEAN_MEAN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_MEAN_SUM',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_SUM_MIN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_SUM_MAX',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_SUM_MEAN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_VERSION_SUM_SUM',\n", " 'INSTALLMENTS_NUM_INSTALMENT_NUMBER_MIN_MIN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_NUMBER_MIN_MAX',\n", " 'INSTALLMENTS_NUM_INSTALMENT_NUMBER_MIN_MEAN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_NUMBER_MIN_SUM',\n", " 'INSTALLMENTS_NUM_INSTALMENT_NUMBER_MAX_MIN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_NUMBER_MAX_MEAN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_NUMBER_MEAN_MIN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_NUMBER_SUM_MIN',\n", " 'INSTALLMENTS_NUM_INSTALMENT_NUMBER_SUM_MEAN',\n", " 'INSTALLMENTS_DAYS_INSTALMENT_MEAN_MIN',\n", " 'INSTALLMENTS_DAYS_INSTALMENT_MEAN_MAX',\n", " 'INSTALLMENTS_DAYS_INSTALMENT_MEAN_MEAN',\n", " 'INSTALLMENTS_DAYS_ENTRY_PAYMENT_MEAN_SUM',\n", " 'INSTALLMENTS_DAYS_ENTRY_PAYMENT_SUM_MAX',\n", " 'INSTALLMENTS_DAYS_ENTRY_PAYMENT_SUM_MEAN',\n", " 'INSTALLMENTS_DAYS_ENTRY_PAYMENT_SUM_SUM',\n", " 'INSTALLMENTS_AMT_INSTALMENT_MIN_MIN',\n", " 'INSTALLMENTS_AMT_INSTALMENT_MIN_MEAN',\n", " 'INSTALLMENTS_AMT_INSTALMENT_MAX_MIN',\n", " 'INSTALLMENTS_AMT_INSTALMENT_MAX_MEAN',\n", " 'INSTALLMENTS_AMT_INSTALMENT_MEAN_MIN',\n", " 'INSTALLMENTS_AMT_INSTALMENT_MEAN_MEAN',\n", " 'INSTALLMENTS_AMT_PAYMENT_MIN_SUM',\n", " 'INSTALLMENTS_AMT_PAYMENT_MAX_SUM',\n", " 'INSTALLMENTS_AMT_PAYMENT_MEAN_SUM',\n", " 'INSTALLMENTS_AMT_PAYMENT_SUM_MIN',\n", " 'INSTALLMENTS_AMT_PAYMENT_SUM_MAX',\n", " 'INSTALLMENTS_AMT_PAYMENT_SUM_MEAN',\n", " 'INSTALLMENTS_AMT_PAYMENT_SUM_SUM',\n", " 'bureau_CREDIT_ACTIVE_Active_sum',\n", " 'bureau_CREDIT_ACTIVE_Bad debt_mean',\n", " 'bureau_CREDIT_ACTIVE_Closed_mean',\n", " 'bureau_CREDIT_ACTIVE_Sold_sum',\n", " 'bureau_CREDIT_ACTIVE_Sold_mean',\n", " 'bureau_CREDIT_CURRENCY_currency 2_sum',\n", " 'bureau_CREDIT_CURRENCY_currency 2_mean',\n", " 'bureau_CREDIT_CURRENCY_currency 3_sum',\n", " 'bureau_CREDIT_CURRENCY_currency 3_mean',\n", " 'bureau_CREDIT_CURRENCY_currency 4_mean',\n", " 'bureau_CREDIT_TYPE_Another type of loan_sum',\n", " 'bureau_CREDIT_TYPE_Another type of loan_mean',\n", " 'bureau_CREDIT_TYPE_Car loan_sum',\n", " 'bureau_CREDIT_TYPE_Car loan_mean',\n", " 'bureau_CREDIT_TYPE_Cash loan (non-earmarked)_mean',\n", " 'bureau_CREDIT_TYPE_Credit card_sum',\n", " 'bureau_CREDIT_TYPE_Credit card_mean',\n", " 'bureau_CREDIT_TYPE_Interbank credit_mean',\n", " 'bureau_CREDIT_TYPE_Loan for business development_sum',\n", " 'bureau_CREDIT_TYPE_Loan for business development_mean',\n", " 'bureau_CREDIT_TYPE_Loan for purchase of shares (margin lending)_mean',\n", " 'bureau_CREDIT_TYPE_Loan for the purchase of equipment_sum',\n", " 'bureau_CREDIT_TYPE_Loan for the purchase of equipment_mean',\n", " 'bureau_CREDIT_TYPE_Loan for working capital replenishment_sum',\n", " 'bureau_CREDIT_TYPE_Loan for working capital replenishment_mean',\n", " 'bureau_CREDIT_TYPE_Microloan_sum',\n", " 'bureau_CREDIT_TYPE_Microloan_mean',\n", " 'bureau_CREDIT_TYPE_Mobile operator loan_mean',\n", " 'bureau_CREDIT_TYPE_Mortgage_sum',\n", " 'bureau_CREDIT_TYPE_Mortgage_mean',\n", " 'bureau_CREDIT_TYPE_Real estate loan_sum',\n", " 'bureau_CREDIT_TYPE_Real estate loan_mean',\n", " 'bureau_CREDIT_TYPE_Unknown type of loan_sum',\n", " 'bureau_CREDIT_TYPE_Unknown type of loan_mean',\n", " 'bureau_DAYS_CREDIT_mean',\n", " 'bureau_DAYS_CREDIT_max',\n", " 'bureau_CREDIT_DAY_OVERDUE_min',\n", " 'bureau_CREDIT_DAY_OVERDUE_mean',\n", " 'bureau_CREDIT_DAY_OVERDUE_sum',\n", " 'bureau_DAYS_CREDIT_ENDDATE_min',\n", " 'bureau_DAYS_CREDIT_ENDDATE_mean',\n", " 'bureau_DAYS_CREDIT_ENDDATE_sum',\n", " 'bureau_DAYS_ENDDATE_FACT_mean',\n", " 'bureau_DAYS_ENDDATE_FACT_max',\n", " 'bureau_AMT_CREDIT_MAX_OVERDUE_sum',\n", " ...]" ] }, "execution_count": 163, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(train.columns)" ] }, { "cell_type": "markdown", "id": "a87a959d", "metadata": {}, "source": [ "#### hgbt" ] }, { "cell_type": "code", "execution_count": 164, "id": "9e488610", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: total: 7min 19s\n", "Wall time: 53.1 s\n" ] }, { "data": { "text/html": [ "
HistGradientBoostingClassifier(max_depth=5)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "HistGradientBoostingClassifier(max_depth=5)" ] }, "execution_count": 164, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "from sklearn.ensemble import HistGradientBoostingClassifier\n", "\n", "hist_gradient_boost_model= HistGradientBoostingClassifier(\n", " max_iter = 100, # 树个数\n", " learning_rate = 0.1,\n", " max_depth = 5,\n", ")\n", "hist_gradient_boost_model.fit(train_features, train_labels)" ] }, { "cell_type": "code", "execution_count": 165, "id": "46d9f8d3", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbEAAAE9CAYAAACFolwSAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAARCVJREFUeJztnQd4VFX6/99JhyQUaUqvS2eVJh0MZVUQlCK4riK6YgUUXVgFVERFLIjYsKIooIKgCCtKExYW+ImAqCi9BIFICymkTTL/53vmfyaTZGoyk5m58/08T56ZzExu7txzz/met5z3mFJTUy1CCCGEhCARgT4BQgghpLRQxAghhIQsFDFCCCEhC0WMEEJIyEIRI4QQErJQxAghhIQsFDFCCCEhC0WMEEJIyEIRI4QQEj4iNnPmTKlSpYr6KQv33XefOkbbtm0lHNDXDNePEEKIb4jy0XFIkHDs2DH561//6vC9mJgYJaTNmzeXvn37ym233SbVqlUr93MkJFzJzs6W999/X5YvXy6HDh1Sv19xxRWSlJQkY8eOlb/85S8++T95eXny2WefyVdffSU///yznD9/XiIjI6VWrVrSsWNHufXWW+Waa65xeYwTJ07Ijz/+KLt27VKPP/30k6Slpan3Jk+eLI899pjb88jKypK1a9fKxo0b1XHwnTMyMiQ+Pl4aN24svXv3ljFjxkiDBg1K/V0NJ2L//e9/5YYbblDPv/76a+nZs2egTyloyM3NlT///FP94Dq99tprqkP16dMn0KdGiOE5evSojBw5Uvbt21fk9cOHD6ufTz75RF5++WUlMGXhxIkTcvPNN8vevXsdngN+li5dKjfddJO8/fbbanJbnOPHj0u7du3KdB6//PKLXHvttUq0inPx4kUlavh566235JlnnpG77747tEQMJ44f4j+uv/56mTp1qu339PR0OXjwoLz33nvq5jl37pz84x//kC1btpRpJkQIcQ0GcnsB+/vf/66EBhbJ9u3bZfbs2cpaGj9+vM0yKw1ms7mIgLVs2VLuv/9+ZeHB6tu5c6fMnTtXLly4oKzByy67TAlncSyWwrrwJpNJGjVqJJdffrn873//8/hcMN5oAevUqZMMGDBAOnTooLw/qamp8t1336mxKCcnR/71r39JbGys3H777V5/Z8NZYqSQypUrS6tWrYpckquvvlp1IMQkP/30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X8ySG24wS4Tj/SgJIUEARYyEbX3DZcuiZfLkODl7tlClatQokAcfzJF7782VWBbYICTooYiRsGPbtkiZPj1Otm4tvP2joixKuOA65N5dhIQOFDESNpw6ZZInnoiTJUtiirzev3+ePPdcNtPlCQlBKGIkLDakfO21WHnhhVjJyiqMe9WtWyAzZ1rjXoSQ0MSwIeudO3fKiBEjpH79+lK7dm3p16+fLF++3KtjnDp1SiZPnixXX321OkazZs3k2muvlU8//VTy8/P9du7Ed+zeHSG9eiUo96EWsMREizz3XJb8+GM6BYyQEMeQltimTZtk2LBhEhcXJ0OHDpWEhARZsWKFjBkzRk6cOCHjxo1ze4yjR49K37595fz58+oR4pWeni6rVq2Se++9V/2PN998s1y+DymdeH3wQayquJGfX2h93XJLrsyYkS3Vq3OxMiFGwJSammqo3mw2m6VTp05y8uRJWbNmjbRr1069fvHiRSVGx48flx07digLzRWPPPKIvP/++zJz5ky57777bK+npqZKjx49lBju2bPH7XE8ITs7W5KTk6VevXpKeEnpSU0VmTSpgnz+edG4V8uW+fLCC1nSs2f5WtBsW2PCdg0eDOdOhIV05MgRGT58uE3AQOXKlWXixImSm5srixcv9sgSAwMGDCjyepUqVaRr167qOaw0Ejxs3BgpXbokFhEwuA6nTs2WjRszyl3ACCH+x3AitnnzZvWYlJRU4j1YYmDLli1uj9OyZUv1+N133xV5HZbYtm3bpFatWtK8eXMfnTUp6/5eDzxQQW68MV5On7be0gkJFpkxI0t+/jlNFeqNKWqYEUIMguFiYocOHVKPTZo0KfEehAfxscOHD7s9zvjx42X16tXy+OOPy7p166R169a2mFiFChXkk08+UY+euB3cAevQ/pF4zqFDkfL3v1eRY8cKb+WuXXNlzpyL0qCBtc5hIDemZNsaE2/alSEC/2I4EUtDHSERqVSpksP3ExMTbZ9xRc2aNVVMbezYsepx7dq16nUIFxJE2rRp49H5IDbnaSZjSkqKR58j1rT5zz+vJW+/XVsuXbIW642NzZf77jspt9ySokpFJScHz5Vi2xoTd+0aGRkpjRs3LrfzCUcMJ2K+AtbaqFGjJD4+Xr755htp27atSg75/PPP5ZlnnpH169er13GTugKp+e7AbA6dAZZiDP1e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li5dqtKoNXANzp49W60fQQxEg4ym/fv3l3Adjh49Wj0+/fTTSrg08+fPVyVssHgSYkdCq113797tUMCQ1IHZes+ePdWMngQv586dU22LR0d99tlnn1XrBjVY7Iz0eyzPYEUW38OKHeVYnggLHWfMmFGkPNF9992nFskWrw6AFHsIlS47hVkeBrmvv/5adQS8Xr16dX+cPvFju6ImX+vWrdUPkjoQA8PaoYMHD0qdOnVk1apVSixJ+YKFylu3blXPkTH6008/qRhlo0aN1Gtdu3aV22+/XT2fOXOmqmmKJRGPPfZYkeOMHz/eVnZqwIABajKD2prwnEDMmjZtyqb1MVwn5gd69eolq1evVjc7buC8vDy1fgSlbDD4eQJiYosWLVIlcFCc9M0331Rp2LfddptMnTqVAhai7YpSYljIjjJHEDBYcBgoH330UfUeRI6UPxCw4hVX4Ba0dw1qEXMFFq/jnvjoo4/U0gmI16BBg2TatGk2QSS+hZYYIYSQkIUxMUIIISELRYwQQkjIQhEjhBASslDECCGEhCwUMUIIISELRYwQQkjIQhEjhBASslDECCGEhCwUMUIIISELRYwQQkjIQhEjhBASslDECCGEhCwUMUIIIRKq/D/1BWLHqp/5XAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "train_prob = hist_gradient_boost_model.predict_proba(train_features)\n", "plot_roc(train_labels, train_prob[:,1], 'hist gb')\n" ] }, { "cell_type": "code", "execution_count": 166, "id": "29bde0c9", "metadata": {}, "outputs": [], "source": [ "import time\n", "import os\n", "\n", "def submit(ids, pred, name, feature_count=None):\n", " \"\"\"\n", " ids: 测试集的 SK_ID_CURR\n", " pred: 模型预测概率\n", " name: 你的实验备注 (如 'lgb_v1', 'baseline')\n", " feature_count: 可选,记录模型使用了多少个特征\n", " \"\"\"\n", " # 1. 创建提交 DataFrame\n", " submit_df = pd.DataFrame({\n", " 'SK_ID_CURR': ids,\n", " 'TARGET': pred\n", " })\n", "\n", " # 2. 生成时间戳 (格式: 0213_1530)\n", " timestamp = time.strftime(\"%m%d_%H%M\")\n", " \n", " # 3. 构造文件名\n", " # 格式: 0213_1530_lgb_v1_f542.csv\n", " f_str = f\"_f{feature_count}\" if feature_count else \"\"\n", " filename = f\"{timestamp}_{name}{f_str}.csv\"\n", " \n", " # 4. 确保保存目录存在 (可选)\n", " if not os.path.exists('submissions'):\n", " os.makedirs('submissions')\n", " \n", " save_path = os.path.join('submissions', filename)\n", " \n", " # 5. 保存并打印提示\n", " submit_df.to_csv(save_path, index=False)\n", " \n", " return submit_df\n" ] }, { "cell_type": "code", "execution_count": 167, "id": "79c03504", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRTARGET
01000010.041575
11000050.161436
21000130.020080
31000280.029833
41000380.178684
.........
487394562210.067602
487404562220.085417
487414562230.022706
487424562240.053502
487434562500.184635
\n", "

48744 rows × 2 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET\n", "0 100001 0.041575\n", "1 100005 0.161436\n", "2 100013 0.020080\n", "3 100028 0.029833\n", "4 100038 0.178684\n", "... ... ...\n", "48739 456221 0.067602\n", "48740 456222 0.085417\n", "48741 456223 0.022706\n", "48742 456224 0.053502\n", "48743 456250 0.184635\n", "\n", "[48744 rows x 2 columns]" ] }, "execution_count": 167, "metadata": {}, "output_type": "execute_result" } ], "source": [ "submit_df = submit(test['SK_ID_CURR'], hist_gradient_boost_model_pred[:, 1], \n", " name='hgbm_baseline',\n", " feature_count=train_features.shape[1]\n", " )\n", "submit_df\n" ] }, { "cell_type": "markdown", "id": "95ba38d4", "metadata": {}, "source": [ "得分 74, 有点不太合理" ] }, { "cell_type": "markdown", "id": "9e49f6b5", "metadata": {}, "source": [ "#### lightbgm" ] }, { "cell_type": "code", "execution_count": 168, "id": "a432c8b1", "metadata": {}, "outputs": [], "source": [ "train_features_cleaned = clean_names(train_features)\n", "test_features_cleaned = clean_names(test_features)" ] }, { "cell_type": "code", "execution_count": null, "id": "8637c8fc", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 169, "id": "991e9974", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[LightGBM] [Info] Number of positive: 24825, number of negative: 282686\n", "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 1.102541 seconds.\n", "You can set `force_col_wise=true` to remove the overhead.\n", "[LightGBM] [Info] Total Bins 73666\n", "[LightGBM] [Info] Number of data points in the train set: 307511, number of used features: 1058\n", "[LightGBM] [Info] [binary:BoostFromScore]: pavg=0.080729 -> initscore=-2.432486\n", "[LightGBM] [Info] Start training from score -2.432486\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n", "CPU times: total: 2min 13s\n", "Wall time: 14.7 s\n" ] }, { "data": { "text/html": [ "
LGBMClassifier(max_depth=3, n_jobs=-1, random_state=42)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LGBMClassifier(max_depth=3, n_jobs=-1, random_state=42)" ] }, "execution_count": 169, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "from lightgbm import LGBMClassifier\n", "lgbm_model = LGBMClassifier(\n", " n_estimators=100, # 对应 max_iter,树的个数\n", " learning_rate=0.1, # 学习率\n", " max_depth=3, # 树的最大深度\n", " random_state=42, # 保证结果可复现\n", " n_jobs=-1 # 使用所有 CPU 核心加速\n", ")\n", "lgbm_model.fit(train_features_cleaned, train_labels)" ] }, { "cell_type": "code", "execution_count": 170, "id": "8cacea95", "metadata": {}, "outputs": [], "source": [ "lgbm_model_pred = lgbm_model.predict_proba(test_features_cleaned)[:, 1]" ] }, { "cell_type": "code", "execution_count": 171, "id": "f253f2c5", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SK_ID_CURRTARGET
01000010.055758
11000050.142900
21000130.029373
31000280.034231
41000380.148776
.........
487394562210.042909
487404562220.063323
487414562230.028442
487424562240.048157
487434562500.175329
\n", "

48744 rows × 2 columns

\n", "
" ], "text/plain": [ " SK_ID_CURR TARGET\n", "0 100001 0.055758\n", "1 100005 0.142900\n", "2 100013 0.029373\n", "3 100028 0.034231\n", "4 100038 0.148776\n", "... ... ...\n", "48739 456221 0.042909\n", "48740 456222 0.063323\n", "48741 456223 0.028442\n", "48742 456224 0.048157\n", "48743 456250 0.175329\n", "\n", "[48744 rows x 2 columns]" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "submit_df = submit(test['SK_ID_CURR'], lgbm_model_pred, \n", " name='lgbm_baseline',\n", " feature_count=train_features.shape[1]\n", " )\n", "submit_df\n" ] }, { "cell_type": "code", "execution_count": 172, "id": "bd584db4", "metadata": {}, "outputs": [], "source": [ "features_importance = pd.DataFrame(\n", " {\n", " 'importance': lgbm_model.feature_importances_,\n", " 'feature': lgbm_model.feature_name_\n", " }\n", ")" ] }, { "cell_type": "code", "execution_count": 173, "id": "3b0b1804", "metadata": {}, "outputs": [], "source": [ "def plot_features_importance(df):\n", " df = df.sort_values(by='importance', ascending=False).head(20)\n", " plt.figure(figsize=(10,6))\n", " sns.barplot(\n", " data = df,\n", " x= 'importance',\n", " y = 'feature'\n", " )\n", " plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": 174, "id": "735a57a3", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9EAAAJBCAYAAABBITaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsnQm4VeP/9p+QCCVKg2ggZKooNIeMEZFUMoVokCgUKRkzRaIUylhKiZQyNZAxFSpjJJmnDiGRvNfn+/89511nnbXnfcbuz3Xt69Tea6/hWcN+7u9YJicn5z8nhBBCCCGEEEKIhGyReBEhhBBCCCGEEEJIRAshhBBCCCGEECkgT7QQQgghhBBCCJEkEtFCCCGEEEIIIUSSSEQLIYQQQgghhBBJIhEthBBCCCGEEEIkiUS0EEIIIYQQQgiRJBLRQgghhBBCCCFEkkhECyGEEEIIIYQQSSIRLYQQQgghhBBCJIlEtBBCCCGEEKJQ+Ouvv9znn39uf4XGq6ReY2VycnL+K7C1CyGEEEIIsRnQYvwSt/avjUW9G0KIECt6HeKyjTzRQgghhBBCCCFEkkhECyGEEEIIIYQQSSIRLYQQQgghhBBCJIlEtBBCCCFKLatXr3Y77rhj3NcBBxxgy7777ruucuXKrnHjxm79+vWR6zvttNPsO5MnT3bt2rVLuO7g69VXX01p3zdu3OjGjRvnjjrqKLf77ru7KlWquL333tsdeeSRbtCgQe69996L/N6vv/7qbr31Vnf44Yfb96pWreoOPPBAd9FFF9kxRvH444/bPt58880x9yfWMoxf8Dh32mknV6dOHde+fXv39NNPx1zff//952bMmOG6devm9t13X7fLLru4mjVruubNm9vxffTRR3mWT2a8Ux1j9uHFF190l112mWvWrJmNV/Xq1W0f7rjjDhW/EkJEslX020IIIYQQpQdEXadOnSI/q1ixov1t2LCh69+/v7vlllvcsGHD3PDhw/Ms99BDD5ngOuGEE9zpp59uIrdFixZ5lpk1a5Zbvny569KliwmyIOH/x+Pff/91HTt2dPPnzzdRd9JJJ5nIRCAjnseOHeu2224716BBgzzfW7JkiW37+++/N2HauXNnV758effxxx+7p556ysT/lVde6QYOHOiyyZZbbukGDBhg/2ZcqIw7c+ZM98orr7ghQ4aYSA2ydu1ad/bZZ9vnjD+Cv3bt2u7vv/828fzggw/aMT7zzDOuZcuWeb7bp08fO/YoUhlj2LBhgxlGypUrZ+cSAwUVfefOneuuv/56O58cB2MohBAeiWghhBBClHrq1q1r3s1EIARnz55tAg6x7EXyF1984QYPHmye6rvuusveO+OMM/J9/8svvzQR3bVr13ziLxWefPJJE9Bt27Z1kyZNcmXLls3zOSL522+/zfPemjVr3KmnnmpCe8SIEa579+55Pv/000/NkIBxgOM4//zzXbbYaqut8o3vm2++6Y4//nh32223mRfcC1FENmP3+uuv2/7cfvvtrkKFCnm++91335mI/e233/Jt6+KLLzbverbEP+eVscCT7fnnn3/cmWee6ebMmeMeeOAB17dv36xsTwhROlA4txBCCCHE/0Cs3nffffa3d+/e7vfff3ebNm1yvXr1sn/feeedJkALmkWLFtnfc845J5+ABkQknvMgiE48vHh9wwIa6tWr5yZOnGjru+6660xsFySHHXaY22uvvSw0Hk+454knnjABTfg0Yx0W0FCtWjV37733mhGhIGEsMJwEBbR/33vPX3vttQLdByFEyUMiWgghhBAiAGHQeFXJp8ZLOXr0aBN9hHCfeOKJhTJWlSpVsr+fffZZUsv/8ccfbvr06W6bbbaxcOdY1K9f344BDy+h0oUFHl/PY489Zn8vv/xyt8UW8aeihFkXFd54Edx3IYQAhXMLIYQQotRDjm6sollNmjTJ5/EkfJd8WPKgt956a7frrrtarnRhQSg5YeM33nijhZIfffTRrlGjRuahjWLp0qUWgnzwwQfn86qGad26teVHv/322+6ss84qoCP4v3DuTz75xAqN4ZH2odyLFy+28O+mTZumtd5Ro0ZF5kRjQLj00ktdtvBi/4gjjsjaOoUQpQOJaCGEEEKUelatWhVTBJOvGxbReB+vueYaK+hFsaubbropoTjNJoRqjxkzxgqATZgwwV6AmEcE9+jRI0849w8//JD7eSL8MuRVZwvEsTdSBAuL4WmmyjUCF3755RcT+4Sj+/dS5Z577ol8n7DwbIloCsgx5lRDJzdaCCGCSEQLIYQQotRD1eVp06al1PqIglgeBCGCujChajSh1/PmzTOvLu2p8B6T10xeMQW5onKfiwKqiYeNFHib8eTjVc8m5Fdnq7BYFFQ4Z1wR5ex/UYaUCyGKJ8qJFkIIIYQIQcGrhQsXWh40PYOplo2QLmzw1h533HHWcoscZjzqV199tRU7w0vtvcm0v4Kvv/464Tr9MkEh6nOTWW8s/GdRecwIzZycHHt99dVXJvQRoXj5ly1blrscod3kGuORpr1UcYOw+A4dOrgyZcpYyDs55EIIEUYiWgghhBAiwMqVK616NWHPt956q1WJJgeXas2Iv6IEUU1BLipbE2aOhxrIl0ac4q1OVHV7wYIF9veQQw7Jfc9XyKa6dyz8sUdV0w6y/fbbW2srwqGpaE6Vczz73jtN3jYh3RRrK24C+uSTT7Z9RUAfdNBBRb1LQohiikS0EEIIIUQgLLlnz57Wlunuu+92FStWdLVr13bXXnut5R0jYIsDCNUgiHwE4F9//RUzZ9iHQuNR32GHHVz79u1z399vv/3sL+HisfCf+WUTQe52u3bt3Pvvv++mTp2a+363bt3sL7nSXlzHorC81V5A421nXxs3blwo2xVClEwkooUQQggh/sfIkSOtRzP9mcmj9px//vmuVatWllc9Y8aMAh8vtoPHOEpksn+vvvqqeXWpLO6hEBrFz0aMGOEeeeSRfN+jXVbXrl3Ngz106NA8hdIwFFAtG8H7+OOP5/vu/Pnz3Zw5c9zuu+9uXvBkIeSc0GjypTFQQOfOnW1bhMvTf3vdunX5vofBggrpL730kito8N4joNk/wvaDHnohhIhChcWEEEIIsVm3uAKqOiMyhw8f7mrVquVuuOGGPJ8jBGmtRH50//797e/OO+9cYPuLUCYvu0aNGiZaa9asaeKXllFz5841jynecT73IHARgQhlBOjYsWNdixYtXPny5c0DjSAljBphi1EgDJ53wrAJvyanmbBrqpSvWLHCvst6WCfiPVkOOOAAKyz27LPPusmTJ9u+8X3Wf/bZZ7tJkya52bNnWxspxp1jZF8R2Oxrp06dkm5xBVRZDxoWEkH4OgKaEHi+SxE3XkGIRkDsCyGEp0xOTk78OBohhBBCiBLK6tWrXYMGDZLKg6ag1PLly83T3LJly8jlqNbcr18/E178Owyh4AhDRGOsdSQDxbmee+45E8wIZwqIISopIEao8bnnnmvh0lFQ3AsBjjilEBkh3nwPQU2hr2BrrDDfffediVRaPK1Zs8bEevXq1V2bNm1MmNetWzdSKOM5jtUyizFlLBDJ77zzTq4Ix8vOWE+ZMsUqYv/888/2GV5xlqdCNi2mPISGv/baa3HHjVZkqQjeZK6P3XbbLU9xtFi0GL/Erf1rY9LbFkIUDit6ZT+6RCJaCCGEEEKIDJGIFmLzEdHKiRZCCCGEEEIIIZJEnmghhBBCCCFEoUB6AakChMnTsk1ovEriNabCYkIIIYQQhcDo0aMT9nAGim+RPyzSg8rlFCZLtuiZEEKkikS0EEIIIUQhMGbMGPOOJIICYBLR6YOApqVWIrp06SIRLYRIC4VzCyGEEEIIIQoFhXNrvErDNabCYkIIIYQQQgghRJIonFsIIYQQQogMUYurVFmra66Ej9eKAmgdVVKQJ1oIIYQQQgghhEgSiWghhBBCCCGEECJJJKKFEEIIIYQQQogkkYgWQgghRKll9erVbscdd4z7ol8wvPvuu65y5cqucePGbv369ZHrO+200+w7kydPdu3atUu47uCL/sWpsHHjRjdu3Dh31FFHud13391VqVLF7b333u7II490gwYNcu+9917k9+hFfeutt7rDDz/cvle1alV34IEHuosuusiOMYrHH3/c9vHmm2+OuT+xlmH8gse50047uTp16rj27du7p59+Oub6/vvvPzdjxgzXrVs3t++++7pddtnF1axZ0zVv3tyO76OPPsqzfDLjneoYw4svvui6d+/umjRpYuNVvXp1+3efPn3cypUrU16fEKL0o8JiQgghhCj1IOo6deoU+VnFihXtb8OGDV3//v2tx/CwYcPc8OHD8yz30EMPmeA64YQT3Omnn24il57OQWbNmuWWL19uPYgRZEHC/4/Hv//+6zp27Ojmz59vou6kk04ykYlARjyPHTvWbbfddq5BgwZ5vrdkyRLb9vfff2/CtHPnzq58+fLu448/dk899ZSJ/yuvvNINHDjQZZMtt9zSDRgwwP7NuHz++edu5syZ7pVXXnFDhgxxl112WZ7l165d684++2z7nPFH8NeuXdv9/fffJp4ffPBBO8ZnnnnGtWzZMs93EbccexSpjLHnhRdecIsWLTLjSdu2bV3ZsmVtvCZNmuSefPJJN2XKFNe6deuU1yuEKL1IRAshhBCi1FO3bl3zbiYCITh79mwTcIhlL5K/+OILN3jwYPNU33XXXfbeGWecke/7X375pYnorl275hN/qYB4Q0Aj6hBzCLsgiORvv/02z3v0RT311FNNaI8YMcK8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pAf5zRQmS7bomRBCpIpEtBBCCCFEITBmzBjzwCWCglYS0emDgKalViK6dOkiES2ESAsVFhNCCCGEEEIUCgpP1ngVNCosJoQQQgghhBBCFCMUzi2EEEIIIUSGqMVVqqzVNVfCx2tFMW1xVRioxZUQQgghhBBCCJEkEtFCCCGEEEIIIUSSSEQLIYQQQgghhBBJIhEthBBCiFLL6tWr3Y477hj3Rb9gePfdd13lypVd48aN3fr16yPXd9ppp9l3Jk+e7Nq1a5dw3cEX/YtTYePGjW7cuHHuqKOOcrvvvrurUqWK23vvvd2RRx7pBg0a5N57773I79GL+tZbb3WHH364fa9q1aruwAMPdBdddJEdYxSPP/647ePNN98cc39iLcP4BY9zp512cnXq1HHt27d3Tz/9dMz1/ffff27GjBmuW7dubt9993W77LKLq1mzpmvevLkd30cffZRn+WTGO9UxhlWrVtkxde7c2dWvXz/PNSGEEFGosJgQQgghSj2Iuk6dOkV+VrFiRfvbsGFD179/f+sxPGzYMDd8+PA8yz300EPuxRdftN7Cp59+uolcejoHmTVrllu+fLn1IEbABgn/Px7//vuv69ixo5s/f76rXr26O+mkk0xkIpARz2PHjnXbbbeda9CgQZ7vLVmyxLb9/fffmzBFGJYvX959/PHH7qmnnjLxf+WVV7qBAwe6bLLlllu6AQMG2L8Zl88//9zNnDnTvfLKK27IkCHusssuy7P82rVr3dlnn22fM/4I/tq1a7u///7bxPODDz5ox/jMM8+4li1b5vlunz597NijSGWMPa+//rqdc44BIwVjJ4QQ8ZCIFkIIIUSpp27duubdTARCcPbs2SbgEMteJH/xxRdu8ODB5qm+66677L0zzjgj3/e//PJLE9Fdu3bNJ/5S4cknnzQB3bZtWzdp0iRXtmzZPJ8j9L799ts8761Zs8adeuqpJrRHjBjhunfvnufzTz/91AwJGAc4jvPPP99li6222irf+L755pvu+OOPd7fddpt5wRHzXmQzdohX9uf22293FSpUyPPd7777zl1//fXut99+y7etiy++2Lzr2QLPN8aR/fff32277bZZXbcQonSicG4hhBBCiP+BWL3vvvvsb+/evd3vv//uNm3a5Hr16mX/vvPOO02AFjSLFi2yv+ecc04+AQ0IPTznQRCdeHjx+oYF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ucsGYdwSHTP7HrXNww47zP3777/5tscxBr/3+OOPpzTGPXv2zF3XBx984C666CIbE46Rc9moUSPXrVs3a1f033//uUw58cQTbbtNmzaNuxz74PeR/YqC8ahfv37uclzXkMrxh89RIqLOIddPgwYNXN++fXP3IcykSZNyl1+yZEmezwYOHGjvDx8+POZ2J06caMucccYZee5hXnvttZfdg1F8/PHHucsxpkGSuVaC10dwm6ecckrk9hYtWpTne5ne84nw9zqvOXPmxFyOZ5FfLvz84r0mTZrEHJsRI0ZErvPOO++0z1k2HZJ9boaPNdY1FmuZ4DXbpk2bmN998cUXYz6HhBCbNyosJoQQSXDDDTe4k046yZUtWzbhsgiZjh07uvnz57vq1avb9xBgv/76q00Cx44d67bbbjsTGfSDDbNs2TL33HPPuebNm+f7PPj/devWuaefftqVKVPGrV271s2aNSvmRL4g2Wqrrdzff//tpkyZYoIzDO/TboLlYgmbhg0bumOOOSbyMybTUXz00Uc2WT/rrLPi7h9C6corr8zz3pdffmkibv/99883OfbCat68ee7000+3fWaifcIJJ7htttnGrVq1yr322mtu5syZ7oILLrDjSpcvvvjCetpyDj/88EP3zjvvuMaNG8dcfost/s/2/dhjj7mbbropctL/7bff5hvr8PEDRoDffvst8rN0CJ5DrnWO65FHHnEzZsxwL7/8sttjjz3yLP/oo4/acWOI4HgOOuig3M+GDh3q5s6d6+644w537LHH2rqDfP311ya0K1eu7O666648n3HsP/zwg3vhhRfc8ccfn28/2a4fx1i0bt3ajDRRhIW3h/1dsGCBfTcemdzzqcA4MK6MXxiutcWLF8e9J+PBmJ977rmuUqVKLluk8tzMFhz/u+++65YvX27PgqhrJd0xEkKUbiSihRAiAXh5EU7jx493F154YcLxevLJJ20i2LZtWxNqYeGNpxShAy1btrRXEIQhE2omz3hfYjF9+nT3xx9/mDcaQcSEryhENOODEGK/o0Q0E/l69erZvz/99NPIdeDdjXesYfBQrV+/3t1yyy2uU6dOJm5jceCBB9orCJ4ozg2CKNZ2L7vsMpvYY6ho1apVns84XkTTlltu6TKBsWFdF198sRs1apSdw3gimmupWbNmZpgYNmxYvmuL9VWoUMEEweuv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1Vbusccec8cee2y+zz788EO3ePFiW2bjxo257/fs2dP9+uuveZadOHGiW7NmjbvoootcxYoV83wW/n8iEKGDBw92o0ePtm23atXKHXfcca5s2bLuiy++cC+88IKbMmWKu+qqq9wVV1yR57vt27d39evXt3//+OOPtuwdd9xhhoK5c+e6cuXK5dveTjvt5C644IKU9hHBvN1229m+MhaffPKJe/LJJ20sDz30UPfAAw+43XbbLeb3GZMrr7wy3/v0xa5QoYKNcXh5IYQAiWghhBBCiCwyffp098cff5g3esyYMe7RRx+NK6Lbtm3rnn/+effTTz+ZVzUI391iiy3MG80ynl69euVbz8KFC01EI/5q1aqV0THccMMNJqDxvj7yyCPm6Q2yfv16d//997tffvkl33dPOukkd+qpp+bp2coxLl++3ERut27d8n1n5513doMGDUppHy+++OJcr7Ln559/NmE8depU2we85QjtKPAuR20TEY1gTnV/hBCbDwrnFkIIIYTIIghfvLeXXHKJa9mypVuwYIH78ssvYy6PqPznn3/cE088ked93sPbe8QRR1godWHx+eefu5EjR5p3eNq0afkENGy77baub9++SQnNbbbZxnXq1Mn+/d5777mCBDE+btw485zjmcYbLYQQ2UYiWgghhBAiS3z00Udu0aJFJnx32WUX17lzZws3fvzxx2N+p0mTJm6fffaxcOwgs2fPNu90lOe2IGE//v33X3fuuefaMcQjKjQ7HltuuaUraPDc9+/f3/791FNPFfj2hBCbHwrnFkIIIYTIohcaTj/9dPt74oknugEDBpiIJswYgRfFGWec4a655hq3ZMkSK+IF5PbiDT7++OPNm11YvPnmm/YXb242IJwbjzpQZCwKwrApTBbFXnvtlSc8PBkOO+wwiwZYtmyZ5ZLzbyGEyBZ6ogghhBBCZAHCrydPnmxFqaggDdtvv739GxE5f/5881BHgcf6uuuuM+GMiP7222/dyy+/bMW2tt5660I9Pz/88IP9TTeE/JlnnrFQasCTTi73V1995U444QQzKkRBbjW5yFFgREhVROMhxwDBsVDcrUqVKmkciRBCRCMRLYQQQgiRBZ577jkTjWeeeablAXu6dOliIhovdSwRjcg7+uijLQf5pptucpMmTbKQ6sIO5c4GM2bMsFeQk08+2U2YMMEqlkdRr149C4MXQoiSgHKihRBCCCGyGMqNVzlI69atzauLyMYrGgsEM62aEKCEf9OPef/99y/0c+PzoL/55pu0vv/ggw+6nJwcMyi88cYbVpmbll833nijKyzozY13mxzsSpUqFdp2hRCbBxLRQgghhBAZQrgyPZCB8G3aJ/kXYcUIUoQd4d6xwBNdrVo1d+2117rPPvvMPNpFAfnE8Morr2S0HvKQ6RdNiHrdunWtV/S7777rCiuvm1xoWnQpH1oIkW0kooUQQgghslDRmircFM5C/IZfhHQHvdVR4DXFi43gJhw81TzgbNG1a1fbl4ceesi8yfHAMJAIjuX66693//33nxs2bJgraDgPCHYoqjEUQpRulBMthBBCCJEBiEPCr8n3HTNmjKtdu3bkcniX3377bbd06VLXqFGjyGV69+7tGjdubCHIeLGLArzG9LgeMWKE69ixo4np8DFRcZsezFTVHjp0aMJ14p1v0KCBmzdvnnv99ddds2bNCmTf2R+qoONFp23YeeedVyDbEUJs3khECyGEEEJkAIJt9erVrnnz5jEFtG9jhYjGGx1LRFNgjCrWRc3gwYNNKI8ePdr6WNPuitDssmXL2rFSaZycY5ZLloEDB5pHnsJpM2fOTLrFFXTv3t1VrVo1z3ujRo1y2223nXme161b5z7++GPLwWa/CUlH5JcvXz6NoxdCiPhIRAshhBBCZIAP0SYMOh4dOnQwITl16tRCLbKVDvSzRuyedtppVigM7zEvBCti9sgjjzSjQJs2bZJe53HHHWfGg4ULF1rfawquJdPiynuywyL6nnvusb/kPNNKrGbNmuY5Z5wPP/zwmD25hRAiU8rk5OT8l/FahBBCCCGE2IxpMX6JW/vXxqLejWLJil6H5P6bSIE1a9a43XbbLU8rOBGNxqt4jplMdEIIIYQQQgghRJIonFsIIYQQQogMWdj9II2hEJsJEtFCCCGEEKWceEW7gvTs2bPIqoILIURJQSJaCCGEEKKUE69oVxCKo0lECyFEfCSihRBCCCFKOTk5OUW9C0IIUWpQYTEhhBBCCCGEECJJ5IkWQgghhBAiQzbnFlfBFlZCbA7IEy2EEEIIIYQQQiSJRLQQQgghhBBCCJEkEtFCCCGEEEIIIUSSSEQLIYQQokh59913XZ8+fdxBBx3katSo4apVq+YaNmzoevTo4ebNm5dv+b/++suNGTPGHXfcca5OnTpul112cfvuu68755xz3IIFCyK3sXr1amvdFHxVr17d7bPPPq59+/buxhtvdKtWrYr87quvvprvu+FXu3btMhqD999/31166aXu0EMPdbvttpurUqWK22uvvdzJJ5/sRo0a5X766ad830m0T+FWVewj71WtWtV9+eWXkfvRpEmTfN+LOv5dd93V7bfffq5jx47uzjvvdN9++23k+h5//PGE+0hv6njnqXLlyq5+/fp2fpcuXZrmCOcdA15z5syJudyRRx6ZuxzHL4QQQVRYTAghhBBFwqZNm9zgwYPd6NGj3VZbbeVatWplwrhs2bLuiy++cC+88IKbMmWKu+qqq9wVV1xh3/n8889dp06d3MqVK13t2rVdhw4dXMWKFXOXf/rpp01s3X777bbOMIhuvg9///23+/HHH92SJUvcbbfd5kaMGOEuueQSd80117gyZcrk+y7C/phjjok8lt133z3tMRgyZIi755573JZbbumaNWvmDj/8cLfddtvZvi1atMj2Z/jw4fZvjAxBdtppJ3fBBRektM0NGza4G264wY0bNy6l7wWPf/369e777793b7/9tnvppZesD/WwYcPchRdeGPnd1q1bu8MOOyzyswMOOCDuefrzzz/N0MK5nTVrlv1t3ry5ywSujccee8wde+yx+T778MMP3eLFi22ZjRs3z0JhQoj4SEQLIYQQokhAyCGgEVGPPPKICacgCLX777/f/fLLL/b/X3/91Z166qnmMb788svdwIEDTXh68IaeccYZ7qGHHnIVKlRw1113Xb5t1q1b1w0aNCjf+2+88YYJQIT0FltsYeI+TKNGjSK/mwnXX3+9CegGDRq4CRMm2P6FQUBee+215oEPs/POO6e8T4zz1KlTXd++fd3++++f9PdiHT/C9uKLL3ZXXnmlK1++vDvzzDPzLdOmTRvztCdL1HnC441QJ2rgueeec5nQtm1b9/zzz5uHH093kEcffdSuAbzRLCOEEGEUzi2EEEKIQgeP8siRI82TOm3atHwCGrbddlsTel5MEdaMgMZDefXVV+cR0EB49hNPPOEqVapkwpRtJEvTpk1tP8qVK+fuvvtu99VXX7mCBm8620LEse0oAe09wHhf0/V2h8FAgAccYZ4NCJF++OGH7d+s848//nAFgRfn7733Xsbr6tatm/vnn3/segnC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99tvv8XdRyHE5oOqcwshhBBChFi3bp17+umnXZkyZdzatWvdrFmz3CmnnBJ7QrXVVu6xxx5zxx57bL7PPvzwQ7d48WJbZuPG/1+9GdH366+/5ll24sSJbs2aNe6iiy5yFStWzPNZ+P8FdSyA0L7hhhvcuHHjUt4e44Bor1evnitMMADsvvvued5buHChe+2119zxxx9vQjxIixYtXOfOnd0TTzxhx3nhhRfm+fzff/+1c/TXX3+Z4K5QoUKhHIcQovgjES2EEEIIEWL69Onujz/+MDE4ZswY9+ijj8YVnm3btnXPP/+8++mnn1zlypXzfMZ3t9hiC/NGs4ynV69e+daD6ENEI95q1apVJMcCeKynTp3q+vbta17YZOF7q1atctddd51tpzA54YQT7BUErzciGoF9xhln5PvOLbfcYmM+bNgwO4d77LFH7mcjR45077zzjhk0WrVqVSjHIIQoGSicWwghhBAiBAIQz/Ell1ziWrZs6RYsWBAzvBm6devm/vnnH/NqBuG9KVOmuCOOOMLVqFGjRBwLDB482G3atMlde+21KW2rTZs2rnnz5u7ZZ581AVrcwbt/7733uvXr15vhAu8zfPDBB2748OFur732SnkMhBClH4loIYQQQogAH330kVu0aJEJ31122cVCfhGU5ODGgjzhffbZx8Kxg8yePdu804jsknIsPtT5qKOOci+99JJ75ZVXUtomXl0YMmSIKwm0bt3a9ejRw7399tvmfcbwgfeZcRo7dqzbZpttinoXhRDFDIloIYQQQogAPgz59NNPt78nnnii22677Ux4IqxiQbgwHswlS5bkyQ/eaaedLCe3JB0LDB061MLQ8cTGKrwVRePGjd1JJ53kXn/99bjF1ooTHCM53HifCXt///333WWXXeYaNWpU1LsmhCiGSEQLIYQQQvwPvJCTJ0+2IlLk0cL2229v//7qq6/c/PnzY44VXt6yZcuacIZvv/3Wvfzyy65Tp05u6623LlHHAuRCs+8YBShMlgp4oQkhJzc6kVgvDmy77bbuvvvus30l/L5hw4buiiuuKOrdEkIUUySihRBCCCH+x3PPPWfh13hSg2G8Xbp0sb/ximVVqVLFHX300dbKiYrOkyZNshzbogrlzuRYPFdffbUrV66cVeoOVhZPBAW6zjrrLPPMMw4lgYMPPtg89f64MQIIIUQUEtFCCCGEEP/DC0u8yuG8WQqDIUxpExULBDNtq2bMmGEh03g0U6luXZyOBXbbbTd3/vnnu88++8w99NBDKW3/yiuvtNBxKmRjVIgFIeMQz2NNODktugoab2xQHrQQIh4S0UIIIYQQzlmI89y5c20sCHnecccdc1/kNX/zzTfWP5kQ6Vjgia5WrZrl2CI8zzzzzBJ7LJ4BAwZYFetbb73V/f7770nvQ9WqVa2NF/sSr9+077/8yy+/xBTQiH31aRZCFBcUpyKEEEII4ZxV1sYb2rRpU7fnnnvmGxPCmQlNxsNL9eYottxyS/P83nXXXebNPPXUU0vssXgqVark+vXrZ1W377nnnpT2gz7TEyZMcCNGjIhZrXvfffd1y5Yts+rYUQXYli9fbn2umzVrltK2hRCioJCIFkIIIcRmD95Owq8JGR4zZoyrXbt25JjgXUbsLV26NGblZqo7U6Ea8YnntyQfiwehff/991tPZYpwJcsOO+xgnuyBAwe6UaNGRS7TtWtX84jfdNNNJpSDY4a3nCrhUWHpQghRVCicWwghhBCbPfRCXr16tYm4WKLTt7FKpsDYCSec4Jo3b17ij8WDcEYIr1u3zv3www8p7U/37t1drVq13KpVqyI/J0cbkY7HGePDxRdfbIXMaDFFsS/C0hnPoirQJoQQYSSihRBCCLHZ44UkXtF4dOjQwQTl1KlT3fr16zerY0F077333invD+29rrnmmrjL0J/5kUcecQ0aNLCCZ4TDU+V89913d3fffbd95guQCSFEUVMmJyfnv6LeCSGEEEIIIUoyLcYvcWv/Sr4NWEljRa9DsrIeKrWvWbPGKr+rCrrGqyAojGtMJj0hhBBCCCGEECJJVFhMCCGEEEKIDFnY/SCNoRCbCRLRQgghhBAlgJtvvjmp5Xr27FkkVcGFEGJzQSJaCCGEEKIEcMsttyS1HAXFJKKFEKLgkIgWQgghhCgB5OTkFPUuCCGEUGExIYQQQgghhBAieeSJFkIIIYQQIkPU4kqIzQe1uBJCCCGEEEIIIZJEIloIIYQQQgghhEgSiWghhBBCCCGEEKI0iuh3333X9enTxx100EGuRo0arlq1aq5hw4auR48ebt68eXn6KNLaIfiqXr26a9q0qbv++uvdb7/9Frn+8HeiXkHatWuX57PKlSu7OnXquBYtWth+vvTSS27Tpk2R2zrggANc1apV7d+rV69Oatv+xXfT4b///nMzZsxw3bp1c/vuu6/bZZddXM2aNV3z5s3doEGD3EcffRTzu6+99lru9p9++umYyz3++OP59pfzdPDBB7vLL7/cff/99zHHI/gd9m2PPfZwRxxxhBswYIB74403XCbEGmOuo2bNmrnhw4e733//Pe46Uh2DO++8M632Jf5aijVWwR6gvN5+++3IZU499VT7nGPP5H6KdU+FX8n2L83GtenvPe6hL7/8MnKdTZo0yb1nC/oeC1/3lSpVcrvttps78MADXZcuXdzYsWPd2rVrI7+b7vMq2evy0ksvtc+mTZuW7zOeT7Vr1457vfI84/NVq1bZ/1999VX7P+vN9jX5/vvv23oPPfRQG78qVaq4vfbay5188slu1KhR7qeffsr3nY0bN7px48a5o446yu2+++72nb333tsdeeSRdu289957LlPijXH4dyDRi/ELP/M++OCDyO3++++/rn79+rnLxRq3ZFmwYIE7//zzbdvc79z3hxxyiOvXr5975513Io8r3jajlvHXR/h5zjZ79erlPvvss7jrCt5DnM9jjjnGTZgwIfK3NGpb4RfrDeLfP+yww2x8w/DcDX4v6jct3ov7IBWC9w3XcSzOPffc3OXYp3i/n1GvWOeR5+dOO+1ky9x9990xtx8ca66XKHjGZPJbwO/A5MmT3YknnmhzKe7levXquZYtW7r+/fu7hQsXRo6dv6eiiFom+HvA84VnSBQff/xxxvMuIUTppUQUFuPHc/DgwW706NFuq622cq1atXLHHXecK1u2rPviiy/cCy+84KZMmeKuuuoqd8UVV+R+r3379jYBgR9//NGWu+OOO9ycOXPc3LlzXbly5fJtix+TCy64IKX9Q4hst912tp+//vqr++STT9yTTz7pHnvsMZsMPvDAAzYhjEXFihXdlVdeGSmoKlSokO9HmeVThQn82Wef7V555RX7/uGHH26T57///tsEyoMPPmgT/WeeecZ+sMI8+uij9rdMmTJ2XExq49G6dWubpMAvv/xi273//vvdc889ZxM5RGKYLbfc0gQzMLmhlceKFStsAsUYHnvsse6+++7LFUbpwA9zp06dcn+wf/75Z/fiiy+aiH755Zft2mA/okh1DFKF/WFyxPr5UZ80aVLMyUqQoUOHutmzZxf4/RS+p6LEVjpkcm1u2LDB3XDD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wk2YMMHOw7HHHmv7hviNBQYHnChBOK98j/PYtWvXfMsLIURppFBaXAkhhBBi8+Piiy92VatWzfPezz//bEJs6tSp7tRTTzVhi9AOg9BGVLKOUaNGuUcffTRXRAMitUePHm7s2LFuxIgR7vLLL8/97PPPP3fXXnuteXVvueWW3Pcvu+wyE5BPP/20a9WqVZ7tsa25c+fmE+OpHCuC9/DDD7d9wtsbBNF655135ut0AmeddVautxfY9+bNm7uXX37ZhHR4X6Fu3bqWapcsGAailv/yyy9t3+fMmWMRhs8++6zbYovoQMVatWrlWweecUQ0gjmV/RFCiM0ynNvzzTffuLvvvttCl0455RQLvYp6EVIlhBBClFQIeSU8FWGGYMB7iFgLEi+ElZDacJitD+fF64pQxDuL+OJ9z48//mjihJBjPkM8sW3CksMguHr37m1ic9ddd7UXHlc8oLHCgoPbSvZYMmHnnXd248aNM2GIZxovaBiE7sSJE91OO+3krrnmGjvmp556yv3xxx95lkNs7rXXXtY95P3337f38HozBniG6SyC19qPIx7n+vXrR4pSPN5HHnlkWjVcGHeMAnieH3/88XwC2o/nsGHD3DnnnJNwfRy3H/v33nvPFSRcy0888YTbe++9zRv/zDPPuKIifD8cfPDBFhLPfeE98rRXvf766+1ewkDTrFkz9+KLL+Zb17vvvmuGFVIBOEbWw7IYMv755588y7JutnvaaaflC+eP95kQYvMlIxHNjzI/6vyI8eNGT2hCr/yLhzEv/38hhBCiJEIo8UknnWSCDO8nXkJCbo8++mib8GfKFVdcYd7Uhg0bmpDYd9997X1EHyKYXF3Cd9n2UUcdZR5K/oZzbMmjff31191BBx1kYcmE++L5JR/36quvdsUFPJ39+/e3fzN/CMPxYaTHOL/11ltbCPa6devMgxxk2223NS8o4oawbgQWYd4YPC688MI8Yplzhzf2+++/zyfGMwWvOeDRJZQ7HuXKlUtp3el6xlOBcSQUPdb5KGyuuuoqd88991gOPSHihLjjrOG6wICEweKYY44xYYshi2W4V4I8/PDDdo9yL2G44HtcJxgyunfvnmdZIiII+0eMc68FDU2XXnqpGUUwyKhIrhAi43BufqAIi+LBy48GP2w8yLAcUpl70aJFFhrEDxaTgyirrBBCCFESYPKOB+vc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QaPCYkIIIYQQQgghRDFC4dxCCCGEEEJsZi2uCqullRClEbW4EkIIIYQQQgghkkQiWgghhBBCCCGESBKJaCGEEEIIIYQQIkkkooUQRc7q1autvUnwVaVKFbfffvu5888/3y1fvjyy8iIteo477jhXp04dt8suu7h9993XnXPOOW7BggUxt/XHH3+4O+64w7Vq1crtuuuuud9jPcOGDXOrVq3K6Fi++eYbWw/rp00Rx7H33nu7Tp06WY/gv//+O3fZV199Nfd4+/XrF7m+adOm2ee+36rvp5rsi22mwgEHHOCqVq2a57109jPI888/b8e/5557usqVK7u6deu6pk2but69e+f2xg1uI5kXfZSD0N7If7ZkyZKYx8f+sQz7m4jgWI8bNy7mcueee27M8WY8Ex0L13/UNt9+++3I7Z166ql5vpfKuKXaRijReeEaD9/H4XMTJLyMPx/Jvvz1xffDYxcmapmo4+EZwHnq1auX++yzz+KuK96LdadKUVxjQehZvtNOO9kyd999d8ztZ/oMSIbgcXzwwQeRy/z777+ufv36CY8LeL6wDL8PGzZsiFzm66+/tmt4jz32cD/++GPkMpdddpmt57bbbkvruIQQpRMVFhNCFBuY7CC2vNh955133NSpU92zzz7rnnnmGXfYYYfZZ59//rktt3LlSle7dm3XoUMHV7FiRffFF1+4F154wT399NMmpm+//Xa31Vb//zG3bt06d+yxx7oVK1aYkGMdTCB//vlnt3jxYnfnnXfaPvBKB/b14osvduvXr3cNGzZ0p59+uqtQoYL7/vvv3SuvvGL7NnnyZDdjxox8333sscds0levXr2422AyHxQusHDhQus9fPzxx9tENEj4/5mS7H56hg8fbq/y5cu7Y445xvZ948aN7qOPPnLTp0830eKP6corr8zz3V9//dXdd999brfddrM+skHCY/Doo4+6MmXKuP/++8/28aCDDnLZgmuIdfbo0SPfZ2vXrnXPPfecLcNxRbHlllu6AQMGxFw/124UQ4cOdbNnz064f+FxAwxMv/32W+Rn6cD1zPkLs80222S0XnpQR/VMZkzpiRz+PGr5TI+HcXrrrbesh/fMmTPdyy+/HPP67tOnj9tuu+0iPwtfkyXhGmObmzZtsnuHf/ft2zfrz4BU2GKLLXK3cdNNN+X7/MUXX3Tffvtt3LHwz3p+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nTo1cv8uvfRS+5x+05nw7rvvuj59+riDDjrI1ahRw1WrVs01bNjQ9ejRw82bNy/m9/744w+322672T4MGDAg5nKrV6/OPRb/qly5sqtfv74755xz3NKlS122oEWf38bTTz+dVC/0u+66yx1//PFuzz33tP2ihV+rVq3cFVdc4d5555183+nZs2e+4wm/6HsthBAeFRYTQgghRKlm48aNJgofeught91227m2bdu6unXrut9++83NnTvXXX311W7ChAluypQp9j60bNnSffrpp9b7+dRTT82zPi9yy5QpY58juIPw3n///edatGgRuT833HCDO+mkk1zZsmWzepybNm1ygwcPdqNHj3ZbbbWVCcfjjjvOtvPFF1+4F154wY7xqquuMkEZZvr06W7dunV2XE8++aTt5zbbbBNze3Xq1HGdOnWyf//5558m3hG6s2bNsr/NmzfP+JgeffRR+8s+PfbYY+7kk0+OueyCBQtc9+7d3c8//+z22GMPO3aMJRgHPv74Y/fII4+4cePGmUED4RzmzDPPNKNDFAcccEDGxyKEKD1IRAshhBCiVDNs2DAT0HhmEWJBofTvv/+6W265xd16660mlhFiFSpUMBE9fvx4E8xRIrpWrVq2HP/GgxwW0cA6ooTnqlWrbN0XXnhhVo8T0YuARvAhGNlWkPXr17v777/f/fLLL5HfZ2wQ3xdccIEbM2aMe/bZZ91pp50Wc3sYHAYNGpTnvTvvvNPG+8Ybb3TPPfdcRseDkWPGjBm5kQMYPL766itXs2bNyOiAzp07m9geO3asiXv+HY4QYHwwFERx1lln5TOICCFEFArnFkIIIUSpZeXKlRauTXj1E088kc/TuOWWW5pnFrGIuB01apS9773IXhAHvb1vvPGGfc7rrbfecv/880/SIpowa8KDb7/99phiLh0+//xzN3LkSLfTTju5adOm5RPQsO2227q+ffvmE76A1/3NN990Rx55pOvVq5cJUO8FTgW8ufDee++5TOE48HAjjnkx9hMnToxc9sorrzQjwW233eZOP/30fAIauAaIOrjssssy3jchxOaNRLQQQgghSi2TJk0y8UWuLt7MWFx++eX21+e+VqlSxXJ8EeHffvttHo/nr7/+agKacGVChRcvXpz7OV7eDz74wDzV5OKGQUDjuf7xxx9zBXs2QFziVSfnO95xQrly5fK9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T3sPI4d/L5lXukYRWhLddttt7qijjnJ16tRxlStXdnvssYc76aST3NixY93vv/+eu+zq1avzbZfl69ev78455xy3dOnSyG1wTIn2n7GKGjdelSpVcrvttps78MADXZcuXWy/1q5dG7ktP27Tpk2z/7dr1y6lccTIlAobN25048aNs/HbfffdXZUqVdzee+/tjjzySDdo0CD33nvv5Vne7w9jGYuoZbzxi1ebNm1ifvfFF1/MXY71pEP4fO28886uVq1a7tBDD3UXXHCBe+aZZ9zff/8dd9+THeOo63ynnXZydevWdR06dLB+zUFSOZfFuQ+1EEIUNqrOLYQQokh59NFH7W+ZMmXcY4895k4++eS4y2+11VZuzpw57ueffzZBErU+lkGQeVq0aJFvuWXLlrnnnnvONW/ePN/nUcsnYsGCBSZ+EaQIP44DAfPLL7+4119/3V155ZXWK/fdd9/N8z3EdqdOnezff/75p32OMQHBw1/2L4ozzzzT1ahRI/KzAw44IN97rVu3docddpj9+48//nDffvute+ONN9zs2bNNfN11110Jx75r1675xob9XL58uQlyhG+Q8P/j8e+//7qOHTu6+fPnu+rVq5vhYZdddnG//vqriWfE/nbbbecaNGjgsgXXCePN/u+///5JXUvp4s/Xf//959atW+c+//xzu46ffPJJu14w/kTtA/Tp08eOPYqoMW7fvr0ZY+Cff/5xq1atsvM8b948M/Ig3oFrMgzX6G+//Rb5mRBCiP9DIloIIUSRwWR9xowZbr/99jPBNHfuXPfVV1+5mjVrxvxO27ZtTXxMnjzZ9erVK89niCFE0XHHHWeiwdOyZUt7BcFDi4hGFOLlzAQEeefOne3feFK9KA6Cx/C6667L9z5ewvD277zzTjds2DB344032j5GgTe+SZMmSe8jHtdLL700n3CdOHGiu+KKK9x5553nKlSo4I444oiY6zjjjDPyvffll1/auCOww2OcCohJBDTnd9KkSa5s2bJ5Pv/+++9N+GcTPNx4mzHeDB8+PM9nGGm4zvCKB6+ldIk6X4hpDBijR492p5xyihliMCCEufjii13VqlWT3hYGiFNPPTXPe0uWLLFzO3LkyFwRHXXdcz1wX2Z6TwghRGlG4dxCCJEl8OoRfokAxDuE5wlvU5B4YaF4D8MeRB8K+sUXX7hRo0ZZCChi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s2fPwM97+umn7esDBgyw/z///PNLtFXUg+9MB/a93WqrrYo9l8l5enn55Zft9e+www5miy22MPXr1zf77befueCCC+w2U/7viPM4/PDDi30HW1W51+bOnRt6fZwfx3C+qfC29dChQ0OPO+OMM0Lbm/ZMdS30/6DvfOuttwK/77jjjiv2vnTajUc6pLov9HH/OPbfGy/+Y9z9iPtw/Yv3+9vOT9AxQdfDHMB96t69u/n8888jPyvqwWenS1J9LOkxGwdv316wYEHgMf/884/ZeeedA/t60Lzvf/AdYaQ75nmMGzcu8JhLLrkk43sohCi/qLCYEKIgQAwjtpzYffvtt+2iZ+LEiea5554z++67r33tiy++sMd99tlnpm7duuaYY44xG2+8sVm0aJF55ZVXzLPPPmvF9MCBA8166/1vCvz999/NoYceaubPn2+FHJ+x2WabmZ9//tm888475s4777TnwCMTONcePXqYVatWmT322MOceOKJpkaNGub77783M2bMsOf25JNPmgkTJpR47yOPPGJFZcOGDSO/g8W8V7i4PW1nzZplDjvssBKLzqhFaCbEPU/HLbfcYh/VqlUz7du3t+e+Zs0a8/HHH5vx48db0eKuqU+fPiX2rH3wwQfNdtttZ0455ZRir/nb4OGHHzaVKlUya9eutefYrFkzkxT0IT7znHPOKfHasmXLzKRJk+wxXFcQ6667runVq1fo59N3g7j22mvNiy++mPL8/O0GGJh+++23wNcygf7M/fOz/vrrZ/W57B3t54MPPrBtesABB5R4Pej4bK+Hdpo9e7Z57LHHzPPPP29effXV0P594YUXmg033DDwNX+fLM0+luSYTYd11lmn6DtuvvnmEq9PnjzZfPvtt5Hn7p33446NTMf8jTfeaI4++mhTuXLllMcKIYREtBCiIEDY9u3bt8SiBzF8ww03WK8lwgpPHB7jyy+/3FxxxRVWpDhYsJ166qlm1KhRVsBef/31xYQFArpLly7m7rvvtgswL4hwr6c4HaZMmWIXwCz6WIwfdNBBxV5noccCnYVf0CKS6+Fcg173csQRR9iH39OCiEaMcu25Ip3zdJ6m2267zdSuXdsupmvVqlXsdYwNGEqgTp06Je4970dEI078r3lBiL/++us2muDTTz+1xoybbrrJbLDBBiYJ2rZta1566SUr7vxGCYwiq1evtt8dJngREFHnH9bWb7zxhv1MPjuKoM+mDyIO0/3eMJo2bZrYZ3lp2bKlfXjB04poRDDn4jvDrgdv5EMPPWQjVeh3QWAk83t986GPJTVm0wUxuv/++5uxY8faCBy/OEXcMg83btzYjtG4834qMhnzri1Gjhxpzj333LS+TwhRMVE4txCiYHGemXfffdf+vffee+1CCM/FVVddVUxAA0LtiSeeMJtuuqm57777rNfaMWfOHPuXEHG/gAa82jvuuGPa50jIIp7Gf//914p3v4AGvu/II48MXMgeeOCB1uuGx92Jynwk3fMkxJI2QfT7BTSw4PULqExgoQ4nnXSS9f4jHolcSIqTTz7Z9rOge4fgI1x/772T3XIGDzLiG+MRbShyT+fOne3f999/v9SbO1d9rDTmltNOO8389NNPJQQ+z5HK0alTp8QMWtmMeaIICNnGKEtUkhBCpEIiWghR8DjR6/IB8UKHQY7j6aefbsUHHjkHwhrC8h4zhTw6vNj77LOPad26deSxVatWDXweLw5cc801Jp9J5zwJlQevISNpMGC43EhC9VlQ01eS9Lpts8025uCDD7beLm+kwnvvvWc9h7nw/jdo0MD2YXJNvX1Y5B6/Ya40yGUfy/XcgpEsKFcbY+bff/9tRXY+jHmOJ9rgxx9/tMZYIYRIhcK5hRAFy/Dhw+1f8t0WL15sw7VZcKbK70PM3nXXXcWKM3Xs2NGGHV500UU2B5pFK7mRTuxlyptvvmn/ZuNV3XPPPW2uHt4UwjpZHOYj6Zxn8+bNbSg3ueAsdI899lj7HAIxKBIgE/js7777zhZewkBB6DdFywj1RLwTKpoECAFC0gkzph85bxjeYrxhUQXcyAUNK95EaHC3bt1CvdGE8vJevHnZ5h9nA5EgQddAakUm0Rv5iBNh9J8wEF9BOdHcGwRaWfWxspxbGHfHH3+8DYWn/oMLd+d8KdqYKleZcRo2Pvbaay8b6p7UmCeMe9iwYeb++++3EUkYXIUQIgyJaCFEQeBdTP3xxx82/JC8UBao/fr1Mz/88IN9jaraqXDHsKhzUHiLHGsKXRHqzcPlyrFQO++886zAS5d0zisKPEXkfZO/2K5du6KiPflG3PPcaKON7EKadiWskweQI8miF9FAiHsSwgeR4eDfLKgRIEl53+g7m2++uf1MBA7V4fEacv2pFuJ4zm699dbA18gVDRPRfC4Vo8krHzJkiLn44otNWYFHlIcf8ncLUUR7jQKE9mIII/2ACvJRReDcnOGHPp2tiM6mj5X13MJYRpziIaYaOHP3Rx99FFhszA/pOWHjg7nDL6KzGfP8llBHg9BuvpP8dyGECCM/V2FCCOHDLaZ4UNgHzzMeDqrlJpVzyuKJxR25y2wvg5hbunSpXQCSO4gXqKxAwFP0jBBeFqP5Sjrnufvuu9vFLQL66quvtqGfVapUsf8nB5Wcd4quZQIGErxSeJ4IpXcgQMjB5NwQsElAwSTy8KdOnWq3MaNI3PLly2OFquIt49igB5XVo6CQFduCUTme48sKvH5B5+8vclcoYBBwc83gwYOtgCa6hX4ZVThs4cKFge3AXFWWfays5xbGOQYV5y1HzDLOiUBJRZs2bULHBwbPpMc8lf7Zdmv06NE5TTURQhQ+EtFCiILAu5gib41K2ohb9osG5435+uuvU36WOyZoQVy9enW76MITRTEctsoitA/PD6Il3Qrd7rxY+GYLIbyEi3JunE++ks55ErrNghcPH4trqunyl/tAeD1iIRNYMBMq7V+o4xXEq0foP1XTkwIx4/LsOX/6Fl69XEIbkf/PmLjjjjtMPuO8m1GF0JzBJFtPqHt/lAHGnUfQdzmjANtHYVRj3NMvyUNPyvCSb30s13ML504bvvbaa+aZZ56xYeN41pMkiTFPf8Bbzed4d28QQgg/EtFCiHIBuW9UeUassliLYvr06fZvHA8221Ldfvvtdj9i9ozGW5MObv9q9oLOFhbNhPDiHR86dKjJV7I5T0Q1HkwiAbJpN1ehF1FA0SDv4+mnn7avJVlgDGMO+Z3k6XPOhJB69yHPFYR7k3JAO9Pe+QpCBhCmYTC+vMdm+12//PJL6DHutajvoi8yp1AFHS8wkQGEzpcVuexjuZ5baD+iLvgOqmW7audJktSYZ2ssopCeffZZG4UghBBBSEQLIcoNhOIB25SEgRd7zJgx1uPgjk8Fi+mggkFxoKAY22PNnj07pSBkv9dUUPiMEF48j+yLna9ke57kTGcKIeJEECAuWawHPTg3wnPpD0l62yhqhLcw6arDUWG+hMLjPYyTY1pWYIyikBz3JUzcukJ/LrokUyhY5f08P3w/Vfg5H84rDnglCQku6y2QctnHcjm3sPsBe9Vj5KT4I5FFSZL0mHde6GuvvTbR8xRClB8kooUQ5QbCLuvUqWOrFpPP6A+9JGcO4cwimvxnb6VWqseGeR0IKSbfkQU3+XLpbonDwhvRTpio84L7IXScvMQ4IbyEPhNums9bsaQ6TyqgE34ZFDrKHrIYOlJVQw7DeZsuu+wy+91BD9qaLXbYaidJbxveMAo+paoQnyRUNqeSPNeCkMhX8JwSJkshQH+oNSkW3BfGC+2YDbyf8cbn+dM7EJ98P+fhLT6Viq233tqOX+aOBx54wJQVuexjuZ5bEKScO7nRSRcvS3rMU/mbiBi2KCQEXQgh/Kg6txCi3ODC9lhoEtLHYgmPByGb7NVM0ZkVK1bY3EZ/lVa2j6GCritKQxjnypUrzbx582wVcBZ9VGsN28s5CirIEgaKp4ftZJo2bWoXaSxaqd5NmCiF0w488MDYIbws5HlPPhN1nuQnErLdu3dvs//++1tBQGjqkiVLrLeI+9S+ffui7XziQqgo2/UQORD1XowpeNxYfGN88TJixIjQ3EkW4mHCHu95usW0ora4irtNFJES1113nb3er776yuQrCByMSIioOXPm2P7O2KTwFkYk7jkV8qmCnQ30JUKw8dCTTkF4Luke9A0E0SeffGJTOTifdKCyNEUH2QKJonfMN3G2uHJzAGM+WzLpY+mQy7kFAyePdIja4gqYs6lTke2YDxP99Mt8n2eFEGWDRLQQolzBAnzWrFlm5MiRZsKECeapp56yW2IRyoegZpHIPtF++vfvbxfc06ZNs6GBbvsrxPTJJ59s9xDF25cpVBKnwjf5hlTYReBzXuxD3aRJE+sBiuuBo7It3jQKnuUzUefJPaAtqK6OoYJthDBaIEzYL5q9j1n0puuxomgR7co9iwoJp59wv/leQu291Xy5/zyCaNGiRUbe8Uy2uEpnmygEKXub07fyFcKhieqgIOD48eOLxgAFplq1amXHGH+T4IILLrBth/EK4U6+dbVq1azARqifffbZaRvEKBLI/MFWVgjpq666KtYWV0AUSxIiOtfk29wStcUVYIgjdznbMR8EfYUwcAwnQgjhp9Ly5csz2z9ECCGEEEIIYWkxcq5Z9ueaMm2N+d2T2fIxl5DGQ9QRBTvZn1uovQqxjyknWgghhBBCCCGEiInCuYUQQgghhMiSmd2aqQ2FqCBIRAshRJpQGIliSKlgSxfynfOV8nIdIhmoyhy38nTfvn3V7GlCpWeKCKaCXO5cFg/LBM0VQghRHIloIYRIk8cee8wWL0sFFYHzWXyWl+sQycDewFFFnLxIRKcPAjpO+1IgK99EtOYKIYQojgqLCSGEEEIIIUoFFRZTe+UaFRYTQgghhBBCCCHyCIVzCyGEEEIIUYBbXBXCllZClEe0xZUQQgghhBBCCBETiWghhBBCCCGEECImEtFCCCGEEEIIIURMJKKFEEIIUdCwtzKPbPjqq6/MJptsYs4//3xTkWAfeK67It97IYRIF4loIUTB4Ba5PI499tjAY+bMmRO5EF68eLHZbLPN7DH33HNP6Hf95z//KfquAw88MPS4yZMnFx3HYtTLgAEDil4Le3BMujz66KMpP9d7/d52c49atWqZnXbayRx11FHmpptuMl9++WXkd0WdZ6pjvvnmG9O/f3/TqlUru+d0zZo1TaNGjcwJJ5xg3/vXX3+FfvaRRx5pP3u//fYLvT9xHu7euHO98847A7/v+++/N9dee63Zf//9Te3atW07NW/e3Fx22WXm888/j7x+HnfccUfgMXwfr3NsOiAO0rnOU045xf695ZZbIvf85ZhTTz01tH9wj3bddVdz1llnmQ8//LBU+3XYvfF+99NPP53254vChLmMe04/FUKIfEHVuYUQBcnUqVPN9OnTTevWrdN63yOPPGL+/fdfU6lSJfvviy66KPL49dZbz7z33ntWSDRu3LjE6w8//LA9Zs2a8IqsCNWdd9458LUWLVqYTOHa991338DXgjwz9erVs8IVEK4//vijmTt3rrn99tut+Lv44otNv379bNskxbhx40yPHj3MqlWrzB577GFOPPFEU6NGDStWZ8yYYV555RXz5JNPmgkTJpR476JFi8zMmTPt+Xz00Ufm7bffNnvuuad9DTHep0+fYsf/+uuv5sEHHzTbbbedFZNeOD4VnMuZZ55pfv/9d7PXXnuZLl262Hv7wQcfmIceesiMGTPGDBo0yD4fxl133WXOOOMMs+mmm5qkBATX5RfBS5YsMeedd57ZeOONi73Gd3/22Wf2PA899FDb5l6+/vprc8UVV5gtttjCnmtY/1i5cqVtb+7fxIkTzXPPPVeir+WqX2dCUP8RFQPdeyFEWSARLYQoOBBES5cuNdddd50V03FFH+IZAbL55pub9u3b23/Pnj3b7LPPPqHvadOmjfU2I7j93r2ff/7Z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mjWr6PufffbZ0OMeffTREufLfWrevLm5/PLLzffffx/aHt73cG4NGjQwBx98sOnVq5d54403TDaEtTH9aP/99ze33HKLWbFiReRnpNsGd955Z0Z7rbq+FNZWcP755xedy1tvvRV4zHHHHWdf59qzGU9hY8r/4JhsoH82bdrUftYJJ5wQeay3n/zyyy+Bxyxfvtxek3fs5mqs/ec//0nrc5k7vPzzzz/mkUceMR07drT9vmbNmmbHHXc0J554onnuuedSjpdUD28fWLlypdluu+3s84ytMFxb0Y+SIqn5IdU1Ov744w+75zf7WNOujKu6deuaQw891I7Pn376KZHfAHfeZ511lv3/uHHjItuB3yB+k7bffnuzatWqrOcA99h8881tv2Hv7tdffz20n15yySUmk3vlf3AO6eIdKwceeGDocZMnTw4dL9nOR0ceeaQ9hjVBFK7f0Xd+//33wGP4Hc/0NxkWLFhgzjvvPPsZzGf0CeZBfqfpu8yL/raLavewY7zrlZdeein0/W3atCk6js8SQggvKixWYCBEr776ajN48GCz3nrrmVatWpkOHTqYypUrm0WLFplXXnnFjB071lx55ZWmd+/eRe876qijzM4772z//eOPP9rjBg0aZH9Apk6daqpWrVriuzbbbDNz9tlnp3V+CJENN9zQnuevv/5qPvnkE/PUU0/ZRfE+++xjhg8fbhetYWy88camT58+JZ5nMVWjRo0SP4Ycny7Lli0zp59+upkxY4Z9/0EHHWQXk3/99ZcVzyNGjDBDhgyxC/aWLVuWeP/DDz9s/1aqVKlosR9F69atzb777mv/jcjhe4cNG2YmTZpkpk+fbheIftZdd92iRT2iAhE0f/5889BDD9k2ZOH74IMPlljIpgNGDifQWJz8/PPPdrGGiH711Vdt3+A8gki3DdKF82HhyuevWbPGPP7446Znz54p33fttdeaF198MefjyT+m/GA8ygYWbF9++aW9fu7Ft99+a4VGGJw7/ZdzZRHqh+fZM5HjaM9cjjUWvv7PZS6gvzL2TznllBLHO5ibeH3OnDlWUB522GFWRH/99df2Xrz88su27zNGmWeA8+TzvTz22GNmyZIlti385+39//jx460goJ2Zp2688Uaz/vrrm9Ik2/khCP81f5V3jGIAADUKSURBVPDBB7ZdaRPuAX0ckcK109b9+/e3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CCGEEEIIkUconFsIIYQQQogsmdmtmdowJhR8E/FRe+VfmymcWwghhEjB8uXLY+eI9+3bN+/bs7xdT6FDXi/VsVPBtmEtW7Y0hQAFEtmuLxXUHGCPbyGEKCQkooUQQogYgmD33XePLVDznfJ2PYUO1bajivw5qBRfKEYNqmofeeSRKY8jZzGOAUEIIfIJiWghhBBCCCGEECImKiwmhBBCCCGEEELERCJaCCGEEEIIIYSIiUS0EEIIIYQQQggRE4loIYQQQgghhBAiJhLRQgghhBBCCCFETCSihRBCCCGESIO5c+ea448/3my//fZmm222MW3btjXjx4+v0G34zTffmMGDB5tjjjnGNG7c2NSsWdPsuOOOpnPnzubtt98OfM9vv/1mrrzySnv8lltuaXbbbTfTr18/s2LFClNRueuuu8wmm2xiH3PmzCnxutrsv0ycONF07NjR1KtXz2y11VamSZMm5swzzzRLly41pdFe2uJKCCGEEEKImMyYMcMcd9xxZv311zfHHnus2WijjcyECRPMkiVLzA033GB69OhRIdvyuuuuswIQUdOiRQuzxRZbmM8//9y88MILZu3atWb48OG2vRwrV640hx56qN0n/OCDD7YiaN68eWbq1KmmWbNmZtKkSbaNKxILFiwwBx10kFlvvfVs+0yePNnstddeRa+rzYztS5dccokZNWqU7Wtt2rSxY/Dbb781s2bNMsOGDTP77bdfzttLIloIIYQQQogYrFmzxooavK4IHBbl8Ouvv9rF/OLFi63XFQ91RQNDwmabbWYFtJfXX3/dHH300WbDDTc0CxcuNFWrVrXP33zzzea2224zPXv2tALcL8avueYac+mll5qKwt9//20jGipXrmzq169vxo4dW0JEq82MeeCBB0zfvn3NWWedZW699Vaz7rrrlhijGCFy3V4S0UIIIYQQQsQADxbe1FNPPdXcf//9xV577LHHTPfu3e0Cv0+fPmpPD7QZbTdt2jTTtGlT603cZZddzO+//26FNQLbgfewUaNG1pP93nvvVZh2HDBggBV206dPN3fffbd5/PHHi4lotZkxq1atMjvvvLMNdcdY5cRyELluL+VECyGEEEIIEYOZM2fav4SG+sETDYSUiuLgXQXnNSTMm/DbffbZp5i4Af7P84sWLSqR31peQcgNGjTIGl922mmnwGPUZsYaYpYvX24OP/xw888//9johzvvvNOMHDnSfPHFF6XaXhLRQgghhBBCxICFOTRo0KDEaxQ3IjfTv5iv6JAr/tprr5mtt97a7LrrrsXakbDlINzz7rjyzOrVq835559vC15dfPHFocepzUyR1xhjzAEHHGC6dOli+vfvb0Oy99xzT3P11VeXWntJRAshhBBCCBEDKv1CjRo1Al+vXr160THiv3m+5557rhWK5KE6T7Rro4033jiwmVz7VoS2JG8XIUd6gD+/14vazJiffvrJtgVtRR/BM40nmQJhO+ywg7nvvvvMiBEjSqW9JKKFEEIIIYQQifLvv//aHHEKi51++unmpJNOUgv7eOutt8y9995revXqZfN3Reo+BVWqVDGPPvqorbBN9Mf+++9vq3Wvs846VkiXBhLRQgghhBBCxCCV94oiRmFe6oomdi644ALz1FNPmRNOOMHmrXpxbURV80w8/uUBqkgTxk2IO1s2pUJtZoraYI899jC1atUq1j4YIerWrWu+/PJLmzed6/YKL2kmhBBCCCGEKMLlQhN+y0Ley/fff29WrFhhvWMVGeeBfuKJJ0ynTp3slkR4CIPaMSx/3D0flHteXqCvuHzcmjVrBh5zyCGH2L+PPPJIUcGxitxmDRs2jAzRds//+eefOe9jEtFCCCGEEELEgGJGd9xxh83FPO6444q99uqrrxYdU1HxCmi2tRoyZEhgni/CBU/i7Nmz7XZD/u2HeL5OnTqmdu3aprzCftmdO3cOfI0QeAR2hw4d7DZM7DuuNjOmZcuWtn0++eSTwPx7hDF9iTaj0F8u+5jCuYUQQgghhIhB69atbcjouHHjzLx584qeJ2QUcU2uZkXN/XUh3Ajojh07mqFDh4YWyqpUqZIVkHhjb7/99mKv8X+eJ4+6PLPBBhvYfOigx957722Poeo0/2/SpInazBhTr149u70cYnnMmDHF2pOUAcYh21+xf3Su+1il5cuXr8343UIIIYQQQlQgZsyYYb3Q66+/vvW2UtiI/WrZyumGG24wPXr0MBWRAQMGmFtvvdW2x3nnnRcooBE4CELnDWzfvr358MMPrTDafffdzfvvv2+9/ITEv/DCC1ZoVkTIlX788cfN5MmTzV577VX0vNrM2Jzndu3amR9//NH2H0K8MWgxLrfbbjszZcoU64XOdXtJRAshhBBCCJEG77zzjhWNVFcmjJSiRnhhEdUVFSf8omBrolNPPbXo/3gOb7nlFjNx4kSbU474wYvdp08fu11YRSVMRIPazNhtrdgajBSKX375xfYbQt979+5dIr88V+0lES2EEEIIIYQQQsREOdFCCCGEEEIIIURMJKKFEEIIIYQQQoiYSEQLIYQQQgghhBAxkYgWQgghhBBCCCFiIhEthBBCCCGEEELERCJaCCGEEEIIIYSIiUS0EEIIIYQQQggRE4loIYQQQgghhBAiJhLRQgghhBBCCCFETCSihRBCCCGEEJEcfvjhZpNNNjGPPvqoWkpUeNar8C0ghBBCCCGEEDF5/vnnzQcffGBatGhhWrZsqXargEhECyGEEEIIISKpXbu2adiwoalRo0aFb6kXXnjBPP7447YdJKIrJhLRQgghhBBCiEiGDBmiFhLi/1FOtBBCCCGEEEIIEROJaCGEEEIIIUTahcX+85//2Od22203+/+nnnrKHHLIIWa77bYz9evXN6eccor5+OOPi45/7733zGmnnWbDwrfeemvTunVrM2HChMDvGzBggP3s888/3/z555/mpptuMnvuuad93w477GDOPPNM8+mnn4ae79q1a824ceNMx44dTb169UzNmjXNLrvsYs466yx7HkFwbXwn1/rvv/+a4cOHm4MPPthsv/329vmvvvrK/nWh3Lfeeqv9v3u4doAVK1aYJ5980p7n3nvvbT+Dc2/WrJm57LLLzKJFiwLPwd+mkyZNsufD+7fZZhvTpk0b8/TTT0feq++++85cd911Nmebe1GrVi37vd26dTMvvvhi4Hu++OILe17Nmze3xxO+f9BBB5nBgweb1atXR35fRUQiWgghhBBCCJEV119/vTn77LPNt99+a+rWrWv++OMPKwA7dOhgPv/8c5tH3L59ezNz5kyz7bbbmvXXX9+8//775vTTTzfjx48P/dy///7bHHXUUeb222+3wrZRo0bm999/t0LywAMPNK+//nqJ96xZs8Z07drVCubXXnvNVKtWzTRu3NgKW4Q1QnTUqFGRApzz6tWrl/nhhx+saN98883tv/fdd18ryAGhyf/dA6Hq4DrPPfdc89xzz9nvxaiAEKZ9RowYYVq1amXeeeedyDZFpGOIwFjA+ytXrmzfgzAfOnRo4HumTJliRftdd91lFixYYIX3jjvuaJYtW2aeeeYZ07t37xLvGTt2rNlv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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_features_importance(features_importance)" ] }, { "cell_type": "markdown", "id": "5f27d7a8", "metadata": {}, "source": [ "可以看到,我们很多特征都有效了。" ] }, { "cell_type": "markdown", "id": "140af0dd", "metadata": {}, "source": [ "得分 74" ] } ], "metadata": { "kernelspec": { "display_name": "data-analysis", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.25" } }, "nbformat": 4, "nbformat_minor": 5 }