{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# 2016 - Une solution \u00e0 la comp\u00e9tition de machine learning 2A\n", "\n", "Ce notebook a \u00e9t\u00e9 propos\u00e9 par un \u00e9tudiant pour la comp\u00e9tition organis\u00e9e pour ce cours : [classification binaire](http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/all_notebooks.html#annee-2016)."]}, {"cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [{"data": {"text/plain": ["['ensae_competition_test_X.txt', 'ensae_competition_train.txt']"]}, "execution_count": 2, "metadata": {}, "output_type": "execute_result"}], "source": ["from pyensae.datasource import download_data\n", "download_data(\"ensae_competition_2016.zip\",\n", " url=\"https://github.com/sdpython/ensae_teaching_cs/raw/master/_doc/competitions/2016_ENSAE_2A/\")"]}, {"cell_type": "code", "execution_count": 2, "metadata": {"collapsed": true}, "outputs": [], "source": ["# packages\n", "import pandas as pd\n", "import numpy as np\n", "from sklearn import svm, linear_model, datasets, metrics\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "from statsmodels.nonparametric.kde import KDEUnivariate\n", "from statsmodels.nonparametric import smoothers_lowess"]}, {"cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", " | X1 | \n", "X2 | \n", "X3 | \n", "X4 | \n", "X5 | \n", "X6 | \n", "X7 | \n", "X8 | \n", "X9 | \n", "X10 | \n", "... | \n", "X15 | \n", "X16 | \n", "X17 | \n", "X18 | \n", "X19 | \n", "X20 | \n", "X21 | \n", "X22 | \n", "X23 | \n", "Y | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | \n", "LIMIT_BAL | \n", "SEX | \n", "EDUCATION | \n", "MARRIAGE | \n", "AGE | \n", "PAY_0 | \n", "PAY_2 | \n", "PAY_3 | \n", "PAY_4 | \n", "PAY_5 | \n", "... | \n", "BILL_AMT4 | \n", "BILL_AMT5 | \n", "BILL_AMT6 | \n", "PAY_AMT1 | \n", "PAY_AMT2 | \n", "PAY_AMT3 | \n", "PAY_AMT4 | \n", "PAY_AMT5 | \n", "PAY_AMT6 | \n", "default payment next month | \n", "
0 | \n", "180000 | \n", "1 | \n", "2 | \n", "1 | \n", "47 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "99694 | \n", "65977 | \n", "67415 | \n", "3700 | \n", "3700 | \n", "4100 | \n", "2360 | \n", "2500 | \n", "2618 | \n", "0 | \n", "
1 | \n", "110000 | \n", "2 | \n", "2 | \n", "1 | \n", "35 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "4869 | \n", "4966 | \n", "5070 | \n", "1053 | \n", "1073 | \n", "1081 | \n", "178 | \n", "184 | \n", "185 | \n", "1 | \n", "
2 | \n", "70000 | \n", "2 | \n", "2 | \n", "2 | \n", "22 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "69927 | \n", "50579 | \n", "49483 | \n", "2501 | \n", "3001 | \n", "2608 | \n", "1777 | \n", "1792 | \n", "1793 | \n", "1 | \n", "
3 | \n", "200000 | \n", "2 | \n", "1 | \n", "2 | \n", "27 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "... | \n", "1665 | \n", "3370 | \n", "-36 | \n", "5610 | \n", "15616 | \n", "1673 | \n", "3385 | \n", "0 | \n", "95456 | \n", "0 | \n", "
4 | \n", "370000 | \n", "2 | \n", "1 | \n", "1 | \n", "39 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "48216 | \n", "47675 | \n", "48074 | \n", "2157 | \n", "2000 | \n", "1668 | \n", "2000 | \n", "3000 | \n", "1000 | \n", "0 | \n", "
5 | \n", "260000 | \n", "2 | \n", "1 | \n", "1 | \n", "29 | \n", "0 | \n", "0 | \n", "0 | \n", "-2 | \n", "-2 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "3090 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "141516 | \n", "0 | \n", "
6 | \n", "90000 | \n", "2 | \n", "1 | \n", "1 | \n", "43 | \n", "-1 | \n", "-1 | \n", "2 | \n", "-1 | \n", "-1 | \n", "... | \n", "7660 | \n", "21175 | \n", "4009 | \n", "4367 | \n", "9 | \n", "7660 | \n", "21175 | \n", "4009 | \n", "7452 | \n", "0 | \n", "
7 | \n", "220000 | \n", "2 | \n", "1 | \n", "1 | \n", "43 | \n", "-1 | \n", "3 | \n", "2 | \n", "0 | \n", "0 | \n", "... | \n", "1090 | \n", "1090 | \n", "0 | \n", "167 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "
8 | \n", "50000 | \n", "1 | \n", "2 | \n", "1 | \n", "35 | \n", "1 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "21260 | \n", "70 | \n", "29575 | \n", "0 | \n", "2052 | \n", "1800 | \n", "0 | \n", "29935 | \n", "1200 | \n", "1 | \n", "
9 | \n", "50000 | \n", "2 | \n", "3 | \n", "2 | \n", "40 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "8292 | \n", "8465 | \n", "8650 | \n", "1271 | \n", "1130 | \n", "1000 | \n", "307 | \n", "325 | \n", "436 | \n", "0 | \n", "
10 rows \u00d7 24 columns
\n", "\n", " | X1 | \n", "X2 | \n", "X3 | \n", "X4 | \n", "X5 | \n", "X6 | \n", "X7 | \n", "X8 | \n", "X9 | \n", "X10 | \n", "... | \n", "X22 | \n", "X23 | \n", "Y | \n", "TotalDelay | \n", "TotalPayment | \n", "PartMay | \n", "PartJune | \n", "PartJuly | \n", "PartAugust | \n", "PartSeptember | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "180000 | \n", "1 | \n", "2 | \n", "1 | \n", "47 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "2500 | \n", "2618 | \n", "0 | \n", "0 | \n", "71798 | \n", "0.962902 | \n", "0.964215 | \n", "0.958865 | \n", "0.961978 | \n", "0.961112 | \n", "
1 | \n", "110000 | \n", "2 | \n", "2 | \n", "1 | \n", "35 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "184 | \n", "185 | \n", "1 | \n", "0 | \n", "17094 | \n", "0.963518 | \n", "0.963962 | \n", "0.777823 | \n", "0.721906 | \n", "0.850305 | \n", "
2 | \n", "70000 | \n", "2 | \n", "2 | \n", "2 | \n", "22 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "1792 | \n", "1793 | \n", "1 | \n", "0 | \n", "51151 | \n", "0.963766 | \n", "0.964848 | \n", "0.962690 | \n", "0.956517 | \n", "0.962942 | \n", "
3 | \n", "200000 | \n", "2 | \n", "1 | \n", "2 | \n", "27 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "... | \n", "0 | \n", "95456 | \n", "0 | \n", "-126 | \n", "224043 | \n", "1.028571 | \n", "-0.004450 | \n", "-0.004802 | \n", "-0.004502 | \n", "-0.009899 | \n", "
4 | \n", "370000 | \n", "2 | \n", "1 | \n", "1 | \n", "39 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "3000 | \n", "1000 | \n", "0 | \n", "0 | \n", "42614 | \n", "0.937577 | \n", "0.958029 | \n", "0.965386 | \n", "0.959245 | \n", "0.968143 | \n", "
5 | \n", "260000 | \n", "2 | \n", "1 | \n", "1 | \n", "29 | \n", "0 | \n", "0 | \n", "0 | \n", "-2 | \n", "-2 | \n", "... | \n", "0 | \n", "141516 | \n", "0 | \n", "-14 | \n", "160056 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.942813 | \n", "
6 | \n", "90000 | \n", "2 | \n", "1 | \n", "1 | \n", "43 | \n", "-1 | \n", "-1 | \n", "2 | \n", "-1 | \n", "-1 | \n", "... | \n", "4009 | \n", "7452 | \n", "0 | \n", "-39 | \n", "135882 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.997711 | \n", "0.393333 | \n", "
7 | \n", "220000 | \n", "2 | \n", "1 | \n", "1 | \n", "43 | \n", "-1 | \n", "3 | \n", "2 | \n", "0 | \n", "0 | \n", "... | \n", "0 | \n", "0 | \n", "1 | \n", "32 | \n", "1002 | \n", "0.000000 | \n", "0.999083 | \n", "0.999083 | \n", "0.999083 | \n", "0.866455 | \n", "
8 | \n", "50000 | \n", "1 | \n", "2 | \n", "1 | \n", "35 | \n", "1 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "29935 | \n", "1200 | \n", "1 | \n", "63 | \n", "78530 | \n", "-0.012172 | \n", "0.985915 | \n", "0.915291 | \n", "0.956269 | \n", "0.999979 | \n", "
9 | \n", "50000 | \n", "2 | \n", "3 | \n", "2 | \n", "40 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "325 | \n", "436 | \n", "0 | \n", "0 | \n", "19283 | \n", "0.962316 | \n", "0.963619 | \n", "0.879296 | \n", "0.847636 | \n", "0.806216 | \n", "
10 | \n", "130000 | \n", "1 | \n", "2 | \n", "1 | \n", "24 | \n", "0 | \n", "0 | \n", "2 | \n", "0 | \n", "0 | \n", "... | \n", "0 | \n", "780 | \n", "0 | \n", "16 | \n", "38480 | \n", "0.997442 | \n", "0.999978 | \n", "0.959249 | \n", "0.999979 | \n", "0.899013 | \n", "
11 | \n", "200000 | \n", "2 | \n", "1 | \n", "2 | \n", "25 | \n", "-1 | \n", "-1 | \n", "-1 | \n", "-1 | \n", "-1 | \n", "... | \n", "4970 | \n", "8888 | \n", "0 | \n", "-63 | \n", "82748 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
12 | \n", "230000 | \n", "2 | \n", "2 | \n", "1 | \n", "38 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "... | \n", "2132 | \n", "2204 | \n", "0 | \n", "-126 | \n", "111453 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
13 | \n", "90000 | \n", "2 | \n", "1 | \n", "2 | \n", "29 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "-2 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "-126 | \n", "0 | \n", "1.004184 | \n", "1.004184 | \n", "1.004184 | \n", "1.004184 | \n", "1.004184 | \n", "
14 | \n", "230000 | \n", "1 | \n", "3 | \n", "2 | \n", "37 | \n", "-1 | \n", "0 | \n", "0 | \n", "0 | \n", "-1 | \n", "... | \n", "5003 | \n", "3016 | \n", "0 | \n", "-34 | \n", "287273 | \n", "0.887873 | \n", "-0.000340 | \n", "0.769071 | \n", "0.760863 | \n", "0.952064 | \n", "
15 | \n", "130000 | \n", "1 | \n", "2 | \n", "2 | \n", "33 | \n", "2 | \n", "2 | \n", "-1 | \n", "-1 | \n", "-2 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "78 | \n", "3578 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.993003 | \n", "
16 | \n", "90000 | \n", "2 | \n", "2 | \n", "1 | \n", "35 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "4000 | \n", "0 | \n", "0 | \n", "2 | \n", "91108 | \n", "0.954684 | \n", "0.883510 | \n", "0.952754 | \n", "0.953646 | \n", "0.952596 | \n", "
17 | \n", "10000 | \n", "2 | \n", "2 | \n", "1 | \n", "37 | \n", "-1 | \n", "4 | \n", "3 | \n", "2 | \n", "2 | \n", "... | \n", "0 | \n", "36 | \n", "0 | \n", "70 | \n", "3236 | \n", "0.999550 | \n", "0.848221 | \n", "0.800478 | \n", "0.999590 | \n", "0.999652 | \n", "
18 | \n", "80000 | \n", "1 | \n", "3 | \n", "1 | \n", "36 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "3000 | \n", "6200 | \n", "0 | \n", "0 | \n", "73411 | \n", "0.961214 | \n", "0.926935 | \n", "0.962670 | \n", "0.963936 | \n", "0.962893 | \n", "
19 | \n", "320000 | \n", "2 | \n", "1 | \n", "1 | \n", "36 | \n", "-1 | \n", "2 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "5000 | \n", "11906 | \n", "0 | \n", "0 | \n", "96906 | \n", "0.792507 | \n", "0.755381 | \n", "0.703680 | \n", "0.400943 | \n", "0.999851 | \n", "
20 rows \u00d7 31 columns
\n", "\n", " | X1 | \n", "X2 | \n", "X3 | \n", "X4 | \n", "X5 | \n", "X6 | \n", "X12 | \n", "Y | \n", "TotalDelay | \n", "TotalPayment | \n", "PartMay | \n", "PartJune | \n", "PartJuly | \n", "PartAugust | \n", "PartSeptember | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "180000 | \n", "1 | \n", "2 | \n", "1 | \n", "47 | \n", "0 | \n", "179253 | \n", "0 | \n", "0 | \n", "71798 | \n", "0.962902 | \n", "0.964215 | \n", "0.958865 | \n", "0.961978 | \n", "0.961112 | \n", "
1 | \n", "110000 | \n", "2 | \n", "2 | \n", "1 | \n", "35 | \n", "0 | \n", "6137 | \n", "1 | \n", "0 | \n", "17094 | \n", "0.963518 | \n", "0.963962 | \n", "0.777823 | \n", "0.721906 | \n", "0.850305 | \n", "
2 | \n", "70000 | \n", "2 | \n", "2 | \n", "2 | \n", "22 | \n", "0 | \n", "66505 | \n", "1 | \n", "0 | \n", "51151 | \n", "0.963766 | \n", "0.964848 | \n", "0.962690 | \n", "0.956517 | \n", "0.962942 | \n", "
3 | \n", "200000 | \n", "2 | \n", "1 | \n", "2 | \n", "27 | \n", "-2 | \n", "4941 | \n", "0 | \n", "-126 | \n", "224043 | \n", "1.028571 | \n", "-0.004450 | \n", "-0.004802 | \n", "-0.004502 | \n", "-0.009899 | \n", "
4 | \n", "370000 | \n", "2 | \n", "1 | \n", "1 | \n", "39 | \n", "0 | \n", "141552 | \n", "0 | \n", "0 | \n", "42614 | \n", "0.937577 | \n", "0.958029 | \n", "0.965386 | \n", "0.959245 | \n", "0.968143 | \n", "
5 | \n", "260000 | \n", "2 | \n", "1 | \n", "1 | \n", "29 | \n", "0 | \n", "71864 | \n", "0 | \n", "-14 | \n", "160056 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.942813 | \n", "
6 | \n", "90000 | \n", "2 | \n", "1 | \n", "1 | \n", "43 | \n", "-1 | \n", "16139 | \n", "0 | \n", "-39 | \n", "135882 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.997711 | \n", "0.393333 | \n", "
7 | \n", "220000 | \n", "2 | \n", "1 | \n", "1 | \n", "43 | \n", "-1 | \n", "1090 | \n", "1 | \n", "32 | \n", "1002 | \n", "0.000000 | \n", "0.999083 | \n", "0.999083 | \n", "0.999083 | \n", "0.866455 | \n", "
8 | \n", "50000 | \n", "1 | \n", "2 | \n", "1 | \n", "35 | \n", "1 | \n", "48047 | \n", "1 | \n", "63 | \n", "78530 | \n", "-0.012172 | \n", "0.985915 | \n", "0.915291 | \n", "0.956269 | \n", "0.999979 | \n", "
9 | \n", "50000 | \n", "2 | \n", "3 | \n", "2 | \n", "40 | \n", "0 | \n", "5538 | \n", "0 | \n", "0 | \n", "19283 | \n", "0.962316 | \n", "0.963619 | \n", "0.879296 | \n", "0.847636 | \n", "0.806216 | \n", "
10 | \n", "130000 | \n", "1 | \n", "2 | \n", "1 | \n", "24 | \n", "0 | \n", "46113 | \n", "0 | \n", "16 | \n", "38480 | \n", "0.997442 | \n", "0.999978 | \n", "0.959249 | \n", "0.999979 | \n", "0.899013 | \n", "
11 | \n", "200000 | \n", "2 | \n", "1 | \n", "2 | \n", "25 | \n", "-1 | \n", "8926 | \n", "0 | \n", "-63 | \n", "82748 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
12 | \n", "230000 | \n", "2 | \n", "2 | \n", "1 | \n", "38 | \n", "-2 | \n", "12696 | \n", "0 | \n", "-126 | \n", "111453 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
13 | \n", "90000 | \n", "2 | \n", "1 | \n", "2 | \n", "29 | \n", "-2 | \n", "-240 | \n", "0 | \n", "-126 | \n", "0 | \n", "1.004184 | \n", "1.004184 | \n", "1.004184 | \n", "1.004184 | \n", "1.004184 | \n", "
14 | \n", "230000 | \n", "1 | \n", "3 | \n", "2 | \n", "37 | \n", "-1 | \n", "36571 | \n", "0 | \n", "-34 | \n", "287273 | \n", "0.887873 | \n", "-0.000340 | \n", "0.769071 | \n", "0.760863 | \n", "0.952064 | \n", "
15 | \n", "130000 | \n", "1 | \n", "2 | \n", "2 | \n", "33 | \n", "2 | \n", "2183 | \n", "0 | \n", "78 | \n", "3578 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.993003 | \n", "
16 | \n", "90000 | \n", "2 | \n", "2 | \n", "1 | \n", "35 | \n", "0 | \n", "72112 | \n", "0 | \n", "2 | \n", "91108 | \n", "0.954684 | \n", "0.883510 | \n", "0.952754 | \n", "0.953646 | \n", "0.952596 | \n", "
17 | \n", "10000 | \n", "2 | \n", "2 | \n", "1 | \n", "37 | \n", "-1 | \n", "3305 | \n", "0 | \n", "70 | \n", "3236 | \n", "0.999550 | \n", "0.848221 | \n", "0.800478 | \n", "0.999590 | \n", "0.999652 | \n", "
18 | \n", "80000 | \n", "1 | \n", "3 | \n", "1 | \n", "36 | \n", "0 | \n", "81066 | \n", "0 | \n", "0 | \n", "73411 | \n", "0.961214 | \n", "0.926935 | \n", "0.962670 | \n", "0.963936 | \n", "0.962893 | \n", "
19 | \n", "320000 | \n", "2 | \n", "1 | \n", "1 | \n", "36 | \n", "-1 | \n", "7868 | \n", "0 | \n", "0 | \n", "96906 | \n", "0.792507 | \n", "0.755381 | \n", "0.703680 | \n", "0.400943 | \n", "0.999851 | \n", "