Alarm_EDA.ipynb 115 KB
Newer Older
thecml's avatar
thecml committed
1
2
3
4
{
 "cells": [
  {
   "cell_type": "code",
thecml's avatar
thecml committed
5
   "execution_count": 14,
thecml's avatar
thecml committed
6
7
8
9
10
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import paths as pt\n",
thecml's avatar
thecml committed
11
    "from tools import data_loader\n",
thecml's avatar
thecml committed
12
13
14
15
16
17
18
19
20
21
22
23
    "from utility.settings import load_settings\n",
    "\n",
    "# Load data\n",
    "target_settings = load_settings(pt.CONFIGS_DIR, \"alarm.yaml\")\n",
    "dl = data_loader.AlarmDataLoader(pt.PROCESSED_DATA_DIR,\n",
    "                                 \"alarm_emb.csv\",\n",
    "                                 target_settings).load_data()\n",
    "X, y = dl.get_data()"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
24
   "execution_count": 15,
thecml's avatar
thecml committed
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>BirthYear</th>\n",
       "      <th>Gender</th>\n",
       "      <th>LoanPeriod</th>\n",
       "      <th>NumberAts</th>\n",
       "      <th>1Ats</th>\n",
       "      <th>2Ats</th>\n",
       "      <th>3Ats</th>\n",
       "      <th>4Ats</th>\n",
       "      <th>5Ats</th>\n",
       "      <th>6Ats</th>\n",
       "      <th>7Ats</th>\n",
       "      <th>8Ats</th>\n",
       "      <th>9Ats</th>\n",
       "      <th>10Ats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1356</td>\n",
       "      <td>1</td>\n",
thecml's avatar
thecml committed
71
72
73
74
75
76
77
78
79
80
       "      <td>0.199672</td>\n",
       "      <td>0.100135</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.101120</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
81
82
83
84
85
86
87
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>26</td>\n",
       "      <td>0</td>\n",
       "      <td>941</td>\n",
       "      <td>2</td>\n",
thecml's avatar
thecml committed
88
89
90
91
92
93
94
95
96
97
       "      <td>-0.594549</td>\n",
       "      <td>-0.392896</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.101120</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
98
99
100
101
102
103
104
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>30</td>\n",
       "      <td>0</td>\n",
       "      <td>756</td>\n",
       "      <td>19</td>\n",
thecml's avatar
thecml committed
105
106
107
108
109
110
111
112
113
114
       "      <td>-0.181450</td>\n",
       "      <td>-0.091430</td>\n",
       "      <td>0.019236</td>\n",
       "      <td>-0.117416</td>\n",
       "      <td>-0.511346</td>\n",
       "      <td>-0.075962</td>\n",
       "      <td>-0.150036</td>\n",
       "      <td>0.287876</td>\n",
       "      <td>0.041141</td>\n",
       "      <td>-0.220559</td>\n",
thecml's avatar
thecml committed
115
116
117
118
119
120
121
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>32</td>\n",
       "      <td>0</td>\n",
       "      <td>1374</td>\n",
       "      <td>2</td>\n",
thecml's avatar
thecml committed
122
123
124
125
126
127
128
129
130
131
       "      <td>-0.166661</td>\n",
       "      <td>-0.110422</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.101120</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
132
133
134
135
136
137
138
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "      <td>1129</td>\n",
       "      <td>2</td>\n",
thecml's avatar
thecml committed
139
140
141
142
143
144
145
146
147
148
       "      <td>-0.166661</td>\n",
       "      <td>-0.110422</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.101120</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12390</th>\n",
       "      <td>59</td>\n",
       "      <td>0</td>\n",
       "      <td>792</td>\n",
       "      <td>3</td>\n",
thecml's avatar
thecml committed
173
174
175
176
177
178
179
180
181
182
       "      <td>-0.204980</td>\n",
       "      <td>-0.144575</td>\n",
       "      <td>0.794214</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.101120</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
183
184
185
186
187
188
189
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12391</th>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>1412</td>\n",
       "      <td>17</td>\n",
thecml's avatar
thecml committed
190
191
192
193
194
195
196
197
198
199
       "      <td>0.104034</td>\n",
       "      <td>0.031789</td>\n",
       "      <td>0.019236</td>\n",
       "      <td>0.676085</td>\n",
       "      <td>0.398754</td>\n",
       "      <td>0.243811</td>\n",
       "      <td>0.021354</td>\n",
       "      <td>-0.087159</td>\n",
       "      <td>-0.250247</td>\n",
       "      <td>-0.220559</td>\n",
thecml's avatar
thecml committed
200
201
202
203
204
205
206
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12392</th>\n",
       "      <td>65</td>\n",
       "      <td>0</td>\n",
       "      <td>1406</td>\n",
       "      <td>7</td>\n",
thecml's avatar
thecml committed
207
208
209
210
211
212
213
214
215
216
       "      <td>-0.292079</td>\n",
       "      <td>-0.252366</td>\n",
       "      <td>0.028053</td>\n",
       "      <td>-0.189861</td>\n",
       "      <td>0.146364</td>\n",
       "      <td>0.301017</td>\n",
       "      <td>-0.043149</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
217
218
219
220
221
222
223
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12393</th>\n",
       "      <td>75</td>\n",
       "      <td>0</td>\n",
       "      <td>1423</td>\n",
       "      <td>1</td>\n",
thecml's avatar
thecml committed
224
225
226
227
228
229
230
231
232
233
       "      <td>1.154176</td>\n",
       "      <td>0.100135</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.101120</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
234
235
236
237
238
239
240
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12394</th>\n",
       "      <td>98</td>\n",
       "      <td>1</td>\n",
       "      <td>437</td>\n",
       "      <td>5</td>\n",
thecml's avatar
thecml committed
241
242
243
244
245
246
247
248
249
250
       "      <td>0.199672</td>\n",
       "      <td>0.051522</td>\n",
       "      <td>0.019236</td>\n",
       "      <td>0.296423</td>\n",
       "      <td>0.025089</td>\n",
       "      <td>0.101120</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
251
252
253
254
255
256
257
258
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>12395 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       BirthYear  Gender  LoanPeriod  NumberAts      1Ats      2Ats      3Ats  \\\n",
thecml's avatar
thecml committed
259
260
261
262
263
       "0              3       1        1356          1  0.199672  0.100135  0.064326   \n",
       "1             26       0         941          2 -0.594549 -0.392896  0.064326   \n",
       "2             30       0         756         19 -0.181450 -0.091430  0.019236   \n",
       "3             32       0        1374          2 -0.166661 -0.110422  0.064326   \n",
       "4             33       1        1129          2 -0.166661 -0.110422  0.064326   \n",
thecml's avatar
thecml committed
264
       "...          ...     ...         ...        ...       ...       ...       ...   \n",
thecml's avatar
thecml committed
265
266
267
268
269
       "12390         59       0         792          3 -0.204980 -0.144575  0.794214   \n",
       "12391         64       0        1412         17  0.104034  0.031789  0.019236   \n",
       "12392         65       0        1406          7 -0.292079 -0.252366  0.028053   \n",
       "12393         75       0        1423          1  1.154176  0.100135  0.064326   \n",
       "12394         98       1         437          5  0.199672  0.051522  0.019236   \n",
thecml's avatar
thecml committed
270
271
       "\n",
       "           4Ats      5Ats      6Ats      7Ats      8Ats      9Ats     10Ats  \n",
thecml's avatar
thecml committed
272
273
274
275
276
       "0     -0.134273 -0.103049  0.101120 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "1     -0.134273 -0.103049  0.101120 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "2     -0.117416 -0.511346 -0.075962 -0.150036  0.287876  0.041141 -0.220559  \n",
       "3     -0.134273 -0.103049  0.101120 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "4     -0.134273 -0.103049  0.101120 -0.132757 -0.054068 -0.129894 -0.127555  \n",
thecml's avatar
thecml committed
277
       "...         ...       ...       ...       ...       ...       ...       ...  \n",
thecml's avatar
thecml committed
278
279
280
281
282
       "12390 -0.134273 -0.103049  0.101120 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "12391  0.676085  0.398754  0.243811  0.021354 -0.087159 -0.250247 -0.220559  \n",
       "12392 -0.189861  0.146364  0.301017 -0.043149 -0.054068 -0.129894 -0.127555  \n",
       "12393 -0.134273 -0.103049  0.101120 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "12394  0.296423  0.025089  0.101120 -0.132757 -0.054068 -0.129894 -0.127555  \n",
thecml's avatar
thecml committed
283
284
285
286
       "\n",
       "[12395 rows x 14 columns]"
      ]
     },
thecml's avatar
thecml committed
287
     "execution_count": 15,
thecml's avatar
thecml committed
288
289
290
291
292
293
294
295
296
297
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
298
   "execution_count": 16,
thecml's avatar
thecml committed
299
300
301
302
303
304
305
306
307
308
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([(False, 1356), (False,  460), (False,  240), ..., (False,  422),\n",
       "       (False, 1423), (False,  371)],\n",
       "      dtype=[('Status', '?'), ('Days_to_alarm', '>i4')])"
      ]
     },
thecml's avatar
thecml committed
309
     "execution_count": 16,
thecml's avatar
thecml committed
310
311
312
313
314
315
316
317
318
319
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
320
   "execution_count": 17,
thecml's avatar
thecml committed
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of samples: 12395\n"
     ]
    }
   ],
   "source": [
    "print(f\"Number of samples: {X.shape[0]}\")"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
337
   "execution_count": 18,
thecml's avatar
thecml committed
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Status</th>\n",
       "      <th>Days_to_alarm</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>False</td>\n",
       "      <td>155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>False</td>\n",
       "      <td>1981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>False</td>\n",
       "      <td>1263</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>True</td>\n",
       "      <td>1165</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>False</td>\n",
       "      <td>2420</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Status  Days_to_alarm\n",
       "1   False            155\n",
       "2   False           1981\n",
       "3   False           1263\n",
       "4    True           1165\n",
       "5   False           2420"
      ]
     },
thecml's avatar
thecml committed
404
     "execution_count": 18,
thecml's avatar
thecml committed
405
406
407
408
409
410
411
412
413
414
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame.from_records(y[[11, 6, 32, 23, 31]], index=range(1, 6))"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
415
   "execution_count": 19,
thecml's avatar
thecml committed
416
417
418
419
420
421
422
423
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'time $t$')"
      ]
     },
thecml's avatar
thecml committed
424
     "execution_count": 19,
thecml's avatar
thecml committed
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "from sksurv.nonparametric import kaplan_meier_estimator\n",
    "time, survival_prob = kaplan_meier_estimator(y[\"Status\"], y[\"Days_to_alarm\"])\n",
    "plt.step(time, survival_prob, where=\"post\")\n",
    "plt.ylabel(\"est. probability of survival $\\hat{S}(t)$\")\n",
    "plt.xlabel(\"time $t$\")"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
453
   "execution_count": 20,
thecml's avatar
thecml committed
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "83.4% of records are censored\n"
     ]
    }
   ],
   "source": [
    "n_censored = y.shape[0] - y[\"Status\"].sum()\n",
    "print(\"%.1f%% of records are censored\" % (n_censored / y.shape[0] * 100))"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
471
   "execution_count": 21,
thecml's avatar
thecml committed
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiQAAAFlCAYAAADbH/MkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAdgUlEQVR4nO3deZAX5b3v8fdXGBYzbkEKvWAEK5QKDgxLWCRcFWIcIhXXuBz0cKO3NNGDHqMiXpPo8ZhbScokLpWlcIuxPIBy8EpFLYMajDG4MDoqoMhoJjoEdURDopE4w3nuH9PMGWGQgVkehnm/qn413U8/3f30r6vx49P99C9SSkiSJOW0R+4GSJIkGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnY9czfg0+y///5p8ODBuZshSZLaSWVl5bsppf5blu/SgWTw4MEsX748dzMkSVI7iYg/tVTuLRtJkpSdgUSSJGVnIJEkSdnt0s+QSJK6vvr6empra9m4cWPupqgT9enTh0GDBlFSUtKq+gYSSVKHqq2tZa+99mLw4MFERO7mqBOklFi/fj21tbUMGTKkVet4y0aS1KE2btxIv379DCPdSETQr1+/HeoVM5BIkjqcYaT72dFzbiCRJO3W1q9fT3l5OeXl5RxwwAEMHDiQ8vJySktLueCCCzqtHXV1dYwfP55Ro0bxxBNPbLX83XffpaSkhF/84hefKB88eDDvvvtuZzUzG58hkSR1qsFzHmjX7dV8//hPXd6vXz+qqqoAuOaaaygtLeWyyy5r1za0xqOPPkpZWRm33npri8vvvfdeJkyYwLx58/jGN76x0/vZtGkTPXr02On1c7GHRJLULS1dupTp06cDjUFl5syZTJ48mYMPPphFixYxe/ZsysrKqKiooL6+HoDKykqOOuooxowZw3HHHce6deu22m5NTQ1TpkxhxIgRTJ06lTfeeIOqqipmz57N/fffT3l5OR999NFW682bN48f/ehHrF27ltra2hbbfOKJJzJmzBiGDx/O3Llzm8pLS0u59NJLGTlyJMuWLaO0tJTLL7+c4cOH86UvfYlnnnmGo48+mkMOOYTFixe3x9fX7gwkkiQBr732Go899hiLFy/mrLPO4phjjuGll16ib9++PPDAA9TX1zNr1iwWLlxIZWUl55xzDlddddVW25k1axYzZ87kxRdfZMaMGVx00UWUl5dz7bXXcvrpp1NVVUXfvn0/sc6bb77JunXrGDduHKeddhoLFixosY233347lZWVLF++nJtuuon169cD8OGHHzJ+/HheeOEFvvjFL/Lhhx8yZcoUVq5cyV577cW3v/1tlixZwn333cd3v/vd9v/y2oG3bCRJAqZNm0ZJSQllZWVs2rSJiooKAMrKyqipqWH16tWsWLGCY489Fmi8NXLggQdutZ1ly5axaNEiAM4++2xmz5693X0vWLCA0047DYAzzjiDc845h0svvXSrejfddBP33Xcf0Bhi1qxZQ79+/ejRowennHJKU71evXp9ov29e/duOraampod+FY6j4FEkiSgd+/eAOyxxx6UlJQ0jRLZY489aGhoIKXE8OHDWbZsWbvve968ebz11lvcfffdAPz5z39mzZo1DB06tKnO0qVLeeSRR1i2bBl77rknRx99dNOw2j59+nziuZEt29/82BoaGtq9/e2h+waSa/Zpw7ob2q8dkqQu4dBDD6Wuro5ly5YxceJE6uvrefXVVxk+fPgn6h155JHMnz+fs88+m7vvvpvJkyd/6nZfffVVPvjgA9auXdtUdvXVVzNv3rxP3F7ZsGED++23H3vuuSevvPIKTz31VPseYGY+QyJJUiv06tWLhQsXcsUVVzBy5EjKy8v5wx/+sFW9m2++mTvuuIMRI0Zw1113ceONN37qdufNm8dJJ530ibJTTjmFefPmfaKsoqKChoYGDj/8cObMmcOECRPaflC7kEgp5W7DNo0dOzYtX768YzZuD4kkdYqXX36Zww8/PHczlEFL5z4iKlNKY7esaw+JJEnKzkAiSZKyM5BIkqTsDCSSJCk7A4kkScrOQCJJkrIzkEiSdmvr16+nvLyc8vJyDjjgAAYOHEh5eTmlpaVccMEFndaOuro6xo8fz6hRo3jiiSc+say+vp45c+YwdOhQRo8ezcSJE3nooYc6rW3NHXnkkVn2233f1CpJyqMt74FqcXuf/m6ofv36UVVV1Vj1mmsoLS3lsssua982tMKjjz5KWVkZt95661bLvvOd77Bu3TpWrFhB7969efvtt3n88cc7tX0NDQ307NmzxZe9dQZ7SCRJ3dLSpUuZPn060BhUZs6cyeTJkzn44INZtGgRs2fPpqysjIqKCurr6wGorKzkqKOOYsyYMRx33HGsW7duq+3W1NQwZcoURowYwdSpU3njjTeoqqpi9uzZ3H///ZSXl/PRRx811f/73//OLbfcws0339z0mzMDBgxo+rG93/zmN0ycOJHRo0fzta99jQ8++ACAwYMHc/XVVzN69GjKysp45ZVXAHj88cebeoRGjRrF3/72N1JKXH755RxxxBGUlZU1/Zrw0qVLmTx5Ml/96lcZNmwYAKWlpU3Ljj76aE499VQOO+wwZsyYweaXqT744IMcdthhjBkzhosuuqjpe2wLA4kkScBrr73GY489xuLFiznrrLM45phjeOmll+jbty8PPPAA9fX1zJo1i4ULF1JZWck555zDVVddtdV2Zs2axcyZM3nxxReZMWMGF110EeXl5Vx77bWcfvrpVFVV0bdv36b61dXVfO5zn2Pvvffealvvvvsu1113HY888gjPPfccY8eO5cc//nHT8v3335/nnnuOb37zm1x//fUAXH/99fz0pz+lqqqKJ554gr59+7Jo0SKqqqp44YUXeOSRR7j88subwtRzzz3HjTfeyKuvvrrV/p9//nluuOEGVq1axeuvv86TTz7Jxo0bOf/883nooYeorKykrq6uzd89eMtGkiQApk2bRklJCWVlZWzatImKigoAysrKqKmpYfXq1axYsYJjjz0WgE2bNnHggQdutZ1ly5axaNEiAM4++2xmz56902166qmnWLVqFZMmTQLg448/ZuLEiU3LTz75ZADGjBnTtM9JkybxrW99ixkzZnDyySczaNAgfv/733PmmWfSo0cPBgwYwFFHHcWzzz7L3nvvzbhx4xgyZEiL+x83bhyDBg0CoLy8nJqaGkpLSznkkEOa1jnzzDOZO3fuTh/jZgYSSZKg6XbJHnvsQUlJCRHRNN/Q0EBKieHDh7Ns2bJ23e/nP/953njjDf76179u1UuSUuLYY4/d6of2tmxzjx49aGhoAGDOnDkcf/zxPPjgg0yaNImHH374U/f/mc98ZpvLNm9/y310BG/ZSJLUCoceeih1dXVNgaS+vp6VK1duVe/II49k/vz5ANx9991Mnjz5U7e75557cu6553LxxRfz8ccfA40jcu69914mTJjAk08+SXV1NQAffvhhi7dWmnvttdcoKyvjiiuu4Atf+AKvvPIKkydPZsGCBWzatIm6ujp+97vfMW7cuB3+DqDxe3j99depqakBaHoepa0MJJIktUKvXr1YuHAhV1xxBSNHjqS8vLzFESk333wzd9xxByNGjOCuu+7ixhtv3O62r7vuOvr378+wYcM44ogjmD59OnvvvTf9+/fnl7/8JWeeeSYjRoxg4sSJTQ+vbssNN9zAEUccwYgRIygpKWHatGmcdNJJjBgxgpEjRzJlyhR++MMfcsABB+zU99C3b19+9rOfUVFRwZgxY9hrr73YZ5+2j5yKzU/M7orGjh2bli9f3jEbb8uws+0MMZMk/beWfoJeXdsHH3xAaWkpKSUuvPBChg4dyiWXXLJVvZbOfURUppTGblnXHhJJkrRDbrnlFsrLyxk+fDgbNmzg/PPPb/M2fahVkiTtkEsuuaTFHpG2sIdEkiRlZyCRJHW4Xfl5RXWMHT3nBhJJUofq06cP69evN5R0Iykl1q9fT58+fVq9js+QSJI61KBBg6itrW23V4yra+jTp0/TW15bw0AiSepQJSUl23w1ubSZt2wkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZdfqQBIRPSLi+Yj4dTE/JCKejojqiFgQEb2K8t7FfHWxfHCzbVxZlK+OiOPa/WgkSVKXtCM9JBcDLzeb/wHwk5TS54H3gXOL8nOB94vynxT1iIhhwBnAcKAC+FlE9Ghb8yVJ0u6gVYEkIgYBxwO3FvMBTAEWFlXuBE4spk8o5imWTy3qnwDMTyn9I6X0R6AaGNcOxyBJkrq41vaQ3ADMBv6rmO8H/CWl1FDM1wIDi+mBwJsAxfINRf2m8hbWaRIR50XE8ohYXldX1/ojkSRJXdZ2A0lETAfeSSlVdkJ7SCnNTSmNTSmN7d+/f2fsUpIkZdazFXUmAV+NiK8AfYC9gRuBfSOiZ9ELMghYW9RfCxwE1EZET2AfYH2z8s2aryNJkrqx7faQpJSuTCkNSikNpvGh1MdSSjOA3wKnFtVmAvcX04uLeYrlj6WUUlF+RjEKZwgwFHim3Y5EkiR1Wa3pIdmWK4D5EXEd8DxwW1F+G3BXRFQD79EYYkgprYyIe4BVQANwYUppUxv2L0mSdhM7FEhSSkuBpcX067QwSialtBH42jbW/x7wvR1tpCRJ2r35plZJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKU3XYDSUT0iYhnIuKFiFgZEf9WlA+JiKcjojoiFkREr6K8dzFfXSwf3GxbVxblqyPiuA47KkmS1KW0pofkH8CUlNJIoByoiIgJwA+An6SUPg+8D5xb1D8XeL8o/0lRj4gYBpwBDAcqgJ9FRI92PBZJktRFbTeQpEYfFLMlxScBU4CFRfmdwInF9AnFPMXyqRERRfn8lNI/Ukp/BKqBce1xEJIkqWtr1TMkEdEjIqqAd4AlwGvAX1JKDUWVWmBgMT0QeBOgWL4B6Ne8vIV1mu/rvIhYHhHL6+rqdviAJElS19OqQJJS2pRSKgcG0dircVhHNSilNDelNDalNLZ///4dtRtJkrQL2aFRNimlvwC/BSYC+0ZEz2LRIGBtMb0WOAigWL4PsL55eQvrSJKkbqw1o2z6R8S+xXRf4FjgZRqDyalFtZnA/cX04mKeYvljKaVUlJ9RjMIZAgwFnmmn45AkSV1Yz+1X4UDgzmJEzB7APSmlX0fEKmB+RFwHPA/cVtS/DbgrIqqB92gcWUNKaWVE3AOsAhqAC1NKm9r3cCRJUle03UCSUnoRGNVC+eu0MEompbQR+No2tvU94Hs73kxJkrQ7802tkiQpOwOJJEnKzkAiSZKyM5BIkqTsDCSSJCk7A4kkScrOQCJJkrIzkEiSpOwMJJIkKTsDiSRJys5AIkmSsjOQSJKk7AwkkiQpu+3+2q9acM0+bVx/Q/u0Q5Kk3YQ9JJIkKTsDiSRJys5AIkmSsjOQSJKk7AwkkiQpOwOJJEnKzkAiSZKyM5BIkqTsDCSSJCk7A4kkScrOQCJJkrIzkEiSpOwMJJIkKTsDiSRJys5AIkmSsjOQSJKk7AwkkiQpOwOJJEnKzkAiSZKyM5BIkqTsDCSSJCk7A4kkScrOQCJJkrIzkEiSpOwMJJIkKTsDiSRJys5AIkmSsjOQSJKk7AwkkiQpOwOJJEnKzkAiSZKyM5BIkqTsDCSSJCk7A4kkScrOQCJJkrIzkEiSpOwMJJIkKTsDiSRJys5AIkmSsjOQSJKk7AwkkiQpOwOJJEnKzkAiSZKy224giYiDIuK3EbEqIlZGxMVF+WcjYklErCn+7leUR0TcFBHVEfFiRIxutq2ZRf01ETGz4w5LkiR1Ja3pIWkALk0pDQMmABdGxDBgDvBoSmko8GgxDzANGFp8zgN+Do0BBrgaGA+MA67eHGIkSVL3tt1AklJal1J6rpj+G/AyMBA4AbizqHYncGIxfQLwq9ToKWDfiDgQOA5YklJ6L6X0PrAEqGjPg5EkSV3TDj1DEhGDgVHA08CAlNK6YtFbwIBieiDwZrPVaouybZVvuY/zImJ5RCyvq6vbkeZJkqQuqtWBJCJKgf8E/jWl9Nfmy1JKCUjt0aCU0tyU0tiU0tj+/fu3xyYlSdIurlWBJCJKaAwjd6eUFhXFbxe3Yij+vlOUrwUOarb6oKJsW+WSJKmba80omwBuA15OKf242aLFwOaRMjOB+5uV/3Mx2mYCsKG4tfMw8OWI2K94mPXLRZkkSermeraiziTgbOCliKgqyv4P8H3gnog4F/gTcFqx7EHgK0A18Hfg6wAppfci4t+BZ4t616aU3muPg5AkSV3bdgNJSun3QGxj8dQW6ifgwm1s63bg9h1poCRJ2v35plZJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGXXM3cDuqVr9mnDuhvarx2SJO0i7CGRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGXXM3cDchm88T92et2aPv/Uji2RJEnb7SGJiNsj4p2IWNGs7LMRsSQi1hR/9yvKIyJuiojqiHgxIkY3W2dmUX9NRMzsmMORJEldUWtu2fwSqNiibA7waEppKPBoMQ8wDRhafM4Dfg6NAQa4GhgPjAOu3hxiJEmSthtIUkq/A97bovgE4M5i+k7gxGblv0qNngL2jYgDgeOAJSml91JK7wNL2DrkSJKkbmpnH2odkFJaV0y/BQwopgcCbzarV1uUbatckiSp7aNsUkoJSO3QFgAi4ryIWB4Ry+vq6tprs5IkaRe2s4Hk7eJWDMXfd4rytcBBzeoNKsq2Vb6VlNLclNLYlNLY/v3772TzJElSV7Kzw34XAzOB7xd/729W/i8RMZ/GB1g3pJTWRcTDwP9t9iDrl4Erd77Z3dg1+7Rh3Q3t1w5JktrRdgNJRMwDjgb2j4haGkfLfB+4JyLOBf4EnFZUfxD4ClAN/B34OkBK6b2I+Hfg2aLetSmlLR+UlSRJ3dR2A0lK6cxtLJraQt0EXLiN7dwO3L5DrZMkSd2Cr46XJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdkZSCRJUnY9czdAneiafdqw7ob2a4ckSVswkKh1DDOSpA7kLRtJkpSdgUSSJGVnIJEkSdkZSCRJUnYGEkmSlJ2BRJIkZWcgkSRJ2RlIJElSdgYSSZKUnYFEkiRlZyCRJEnZ+Vs26nht+R0c8LdwJKkbsIdEkiRlZyCRJEnZGUgkSVJ2PkOyEwZv/I82rV/T55/aqSWSJO0e7CGRJEnZGUgkSVJ2BhJJkpSdgUSSJGVnIJEkSdk5yka7vra86dW3vEpSl2APiSRJys5AIkmSsjOQSJKk7HyGRLs3nz+RpC7BQJJBW14972vnJUm7I2/ZSJKk7AwkkiQpOwOJJEnKzkAiSZKyM5BIkqTsDCSSJCk7h/12MQ4ZliTtjuwhkSRJ2RlIJElSdgYSSZKUXac/QxIRFcCNQA/g1pTS9zu7Dd1VW54/aQufXZEkbU+nBpKI6AH8FDgWqAWejYjFKaVVndkOda62BiEDTTfQlh9BBH8IUdoNdHYPyTigOqX0OkBEzAdOAAwk2qYuObKoO/4Htq3HnGvfXfG7lnZDnR1IBgJvNpuvBcZ3chvUjbQpzLThP3Jtvj0254G2rZ9FFwyOkC9IGYSkT9jl3kMSEecB5xWzH0TE6g7a1f7Aux20bbWvLOcq2rT29HZqRZezU+eqbd91F/Vvu8RR++9g17E7nauDWyrs7ECyFjio2fygoqxJSmkuMLejGxIRy1NKYzt6P2o7z1XX4bnqWjxfXUd3OFedPez3WWBoRAyJiF7AGcDiTm6DJEnaxXRqD0lKqSEi/gV4mMZhv7enlFZ2ZhskSdKup9OfIUkpPQg82Nn7bUGH3xZSu/FcdR2eq67F89V17PbnKlJKudsgSZK6OV8dL0mSsuuWgSQiKiJidURUR8Sc3O3pbiLioIj4bUSsioiVEXFxUf7ZiFgSEWuKv/sV5RERNxXn68WIGN1sWzOL+msiYmauY9rdRUSPiHg+In5dzA+JiKeLc7KgeEidiOhdzFcXywc328aVRfnqiDgu06Hs9iJi34hYGBGvRMTLETHRa2vXFBGXFP8GroiIeRHRp1tfWymlbvWh8WHa14BDgF7AC8Cw3O3qTh/gQGB0Mb0X8CowDPghMKconwP8oJj+CvAQja+rmAA8XZR/Fni9+LtfMb1f7uPbHT/At2h889mvi/l7gDOK6V8A3yymLwB+UUyfASwopocV11pvYEhxDfbIfVy74we4E/jfxXQvYF+vrV3vQ+OLQv8I9C3m7wH+V3e+trpjD0nT6+tTSh8Dm19fr06SUlqXUnqumP4b8DKNF+cJNP5jSvH3xGL6BOBXqdFTwL4RcSBwHLAkpfReSul9YAlQ0XlH0j1ExCDgeODWYj6AKcDCosqW52rzOVwITC3qnwDMTyn9I6X0R6CaxmtR7Sgi9gH+J3AbQErp45TSX/Da2lX1BPpGRE9gT2Ad3fja6o6BpKXX1w/M1JZur+h2HAU8DQxIKa0rFr0FDCimt3XOPJed4wZgNvBfxXw/4C8ppYZivvn33nROiuUbivqeq84xBKgD7ihusd0aEZ/Ba2uXk1JaC1wPvEFjENkAVNKNr63uGEi0i4iIUuA/gX9NKf21+bLU2BfpELDMImI68E5KqTJ3W9QqPYHRwM9TSqOAD2m8RdPEa2vXUDzHcwKNIfJ/AJ+hm/dCdcdAst3X16vjRUQJjWHk7pTSoqL47aK7mOLvO0X5ts6Z57LjTQK+GhE1NN7enALcSGPX/ub3GDX/3pvOSbF8H2A9nqvOUgvUppSeLuYX0hhQvLZ2PV8C/phSqksp1QOLaLzeuu211R0Dia+vz6y473kb8HJK6cfNFi0GNj/NPxO4v1n5PxcjAiYAG4ru54eBL0fEfsX/bXy5KFM7SSldmVIalFIaTOO18lhKaQbwW+DUotqW52rzOTy1qJ+K8jOKkQJDgKHAM510GN1GSukt4M2IOLQomgqswmtrV/QGMCEi9iz+Tdx8rrrvtZX7qdocHxqfLH+VxqeRr8rdnu72Ab5IY5fxi0BV8fkKjfdDHwXWAI8Any3qB/DT4ny9BIxttq1zaHyIqxr4eu5j250/wNH89yibQ2j8R68auBfoXZT3Keari+WHNFv/quIcrgam5T6e3fUDlAPLi+vr/9E4SsZraxf8AP8GvAKsAO6icaRMt722fFOrJEnKrjvespEkSbsYA4kkScrOQCJJkrIzkEiSpOwMJJIkKTsDiSRJys5AIkmSsjOQSJKk7P4/Hqfijzczo2cAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 648x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(9, 6))\n",
    "val, bins, patches = plt.hist((y[\"Days_to_alarm\"][y[\"Status\"]],\n",
    "                               y[\"Days_to_alarm\"][~y[\"Status\"]]),\n",
    "                              bins=30, stacked=True)\n",
    "_ = plt.legend(patches, [\"Time of Alarm\", \"Time of Censoring\"])"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
497
   "execution_count": 22,
thecml's avatar
thecml committed
498
499
500
501
502
503
504
505
506
507
508
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y[\"Status\"],\n",
    "                                                    test_size=0.3, random_state=0)"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
509
   "execution_count": 23,
thecml's avatar
thecml committed
510
511
512
513
514
515
516
517
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomSurvivalForest(max_depth=3, n_estimators=200, n_jobs=-1, random_state=0)"
      ]
     },
thecml's avatar
thecml committed
518
     "execution_count": 23,
thecml's avatar
thecml committed
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sksurv.ensemble import RandomSurvivalForest\n",
    "\n",
    "rsf = RandomSurvivalForest(n_estimators=200,\n",
    "                           max_depth=3,\n",
    "                           n_jobs=-1,\n",
    "                           random_state=0)\n",
    "rsf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
535
   "execution_count": 24,
thecml's avatar
thecml committed
536
537
538
539
540
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
thecml's avatar
thecml committed
541
       "0.707258074451117"
thecml's avatar
thecml committed
542
543
      ]
     },
thecml's avatar
thecml committed
544
     "execution_count": 24,
thecml's avatar
thecml committed
545
546
547
548
549
550
551
552
553
554
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rsf.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
555
   "execution_count": 25,
thecml's avatar
thecml committed
556
557
558
559
560
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
thecml's avatar
thecml committed
561
562
563
564
565
566
567
568
569
570
       "0     43.852772\n",
       "1    106.172583\n",
       "2    120.851955\n",
       "3    128.619932\n",
       "4    107.511293\n",
       "5    204.250038\n",
       "6     88.117035\n",
       "7    120.768701\n",
       "8    107.511293\n",
       "9    202.797878\n",
thecml's avatar
thecml committed
571
572
573
       "dtype: float64"
      ]
     },
thecml's avatar
thecml committed
574
     "execution_count": 25,
thecml's avatar
thecml committed
575
576
577
578
579
580
581
582
583
584
585
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_test_sel = X_test.iloc[50:60]\n",
    "pd.Series(rsf.predict(X_test_sel))"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
586
   "execution_count": 26,
thecml's avatar
thecml committed
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>BirthYear</th>\n",
       "      <th>Gender</th>\n",
       "      <th>LoanPeriod</th>\n",
       "      <th>NumberAts</th>\n",
       "      <th>1Ats</th>\n",
       "      <th>2Ats</th>\n",
       "      <th>3Ats</th>\n",
       "      <th>4Ats</th>\n",
       "      <th>5Ats</th>\n",
       "      <th>6Ats</th>\n",
       "      <th>7Ats</th>\n",
       "      <th>8Ats</th>\n",
       "      <th>9Ats</th>\n",
       "      <th>10Ats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>7234</th>\n",
       "      <td>84</td>\n",
       "      <td>1</td>\n",
       "      <td>1045</td>\n",
       "      <td>1</td>\n",
thecml's avatar
thecml committed
633
634
635
636
637
638
639
640
641
642
       "      <td>0.199672</td>\n",
       "      <td>0.100135</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
643
644
645
646
647
648
649
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5131</th>\n",
       "      <td>51</td>\n",
       "      <td>1</td>\n",
       "      <td>163</td>\n",
       "      <td>1</td>\n",
thecml's avatar
thecml committed
650
651
652
653
654
655
656
657
658
659
       "      <td>-0.204980</td>\n",
       "      <td>0.100135</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
660
661
662
663
664
665
666
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11062</th>\n",
       "      <td>39</td>\n",
       "      <td>0</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
thecml's avatar
thecml committed
667
668
669
670
671
672
673
674
675
676
       "      <td>-0.315005</td>\n",
       "      <td>0.100135</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
677
678
679
680
681
682
683
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11890</th>\n",
       "      <td>45</td>\n",
       "      <td>0</td>\n",
       "      <td>1144</td>\n",
       "      <td>2</td>\n",
thecml's avatar
thecml committed
684
685
686
687
688
689
690
691
692
693
       "      <td>-0.280638</td>\n",
       "      <td>0.147751</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
694
695
696
697
698
699
700
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2610</th>\n",
       "      <td>41</td>\n",
       "      <td>0</td>\n",
       "      <td>331</td>\n",
       "      <td>1</td>\n",
thecml's avatar
thecml committed
701
702
703
704
705
706
707
708
709
710
       "      <td>-0.204980</td>\n",
       "      <td>0.100135</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
711
712
713
714
715
716
717
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5489</th>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "      <td>735</td>\n",
       "      <td>4</td>\n",
thecml's avatar
thecml committed
718
719
720
721
722
723
724
725
726
727
       "      <td>-0.166661</td>\n",
       "      <td>-0.110422</td>\n",
       "      <td>0.128093</td>\n",
       "      <td>-0.189029</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
728
729
730
731
732
733
734
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3129</th>\n",
       "      <td>71</td>\n",
       "      <td>0</td>\n",
       "      <td>4565</td>\n",
       "      <td>2</td>\n",
thecml's avatar
thecml committed
735
736
737
738
739
740
741
742
743
744
       "      <td>0.691825</td>\n",
       "      <td>-0.110422</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
745
746
747
748
749
750
751
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12308</th>\n",
       "      <td>38</td>\n",
       "      <td>1</td>\n",
       "      <td>1902</td>\n",
       "      <td>1</td>\n",
thecml's avatar
thecml committed
752
753
754
755
756
757
758
759
760
761
       "      <td>-0.204980</td>\n",
       "      <td>0.100135</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
762
763
764
765
766
767
768
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4451</th>\n",
       "      <td>43</td>\n",
       "      <td>0</td>\n",
       "      <td>44</td>\n",
       "      <td>1</td>\n",
thecml's avatar
thecml committed
769
770
771
772
773
774
775
776
777
778
       "      <td>-0.204980</td>\n",
       "      <td>0.100135</td>\n",
       "      <td>0.064326</td>\n",
       "      <td>-0.134273</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
779
780
781
782
783
784
785
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4757</th>\n",
       "      <td>34</td>\n",
       "      <td>1</td>\n",
       "      <td>889</td>\n",
       "      <td>4</td>\n",
thecml's avatar
thecml committed
786
787
788
789
790
791
792
793
794
795
       "      <td>-0.204980</td>\n",
       "      <td>-0.189466</td>\n",
       "      <td>0.028053</td>\n",
       "      <td>0.147220</td>\n",
       "      <td>-0.103049</td>\n",
       "      <td>0.10112</td>\n",
       "      <td>-0.132757</td>\n",
       "      <td>-0.054068</td>\n",
       "      <td>-0.129894</td>\n",
       "      <td>-0.127555</td>\n",
thecml's avatar
thecml committed
796
797
798
799
800
801
802
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       BirthYear  Gender  LoanPeriod  NumberAts      1Ats      2Ats      3Ats  \\\n",
thecml's avatar
thecml committed
803
804
805
806
807
808
809
810
811
812
       "7234          84       1        1045          1  0.199672  0.100135  0.064326   \n",
       "5131          51       1         163          1 -0.204980  0.100135  0.064326   \n",
       "11062         39       0          12          1 -0.315005  0.100135  0.064326   \n",
       "11890         45       0        1144          2 -0.280638  0.147751  0.064326   \n",
       "2610          41       0         331          1 -0.204980  0.100135  0.064326   \n",
       "5489          29       0         735          4 -0.166661 -0.110422  0.128093   \n",
       "3129          71       0        4565          2  0.691825 -0.110422  0.064326   \n",
       "12308         38       1        1902          1 -0.204980  0.100135  0.064326   \n",
       "4451          43       0          44          1 -0.204980  0.100135  0.064326   \n",
       "4757          34       1         889          4 -0.204980 -0.189466  0.028053   \n",
thecml's avatar
thecml committed
813
       "\n",
thecml's avatar
thecml committed
814
815
816
817
818
819
820
821
822
823
824
       "           4Ats      5Ats     6Ats      7Ats      8Ats      9Ats     10Ats  \n",
       "7234  -0.134273 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "5131  -0.134273 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "11062 -0.134273 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "11890 -0.134273 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "2610  -0.134273 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "5489  -0.189029 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "3129  -0.134273 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "12308 -0.134273 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "4451  -0.134273 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  \n",
       "4757   0.147220 -0.103049  0.10112 -0.132757 -0.054068 -0.129894 -0.127555  "
thecml's avatar
thecml committed
825
826
      ]
     },
thecml's avatar
thecml committed
827
     "execution_count": 26,
thecml's avatar
thecml committed
828
829
830
831
832
833
834
835
836
837
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_test_sel"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
838
   "execution_count": 27,
thecml's avatar
thecml committed
839
840
841
842
   "metadata": {},
   "outputs": [
    {
     "data": {
thecml's avatar
thecml committed
843
      "image/png": "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",
thecml's avatar
thecml committed
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "surv = rsf.predict_survival_function(X_test_sel, return_array=True)\n",
    "\n",
    "for i, s in enumerate(surv):\n",
    "    plt.step(rsf.event_times_, s, where=\"post\", label=str(i))\n",
    "plt.ylabel(\"Survival probability\")\n",
    "plt.xlabel(\"Time in days\")\n",
    "plt.xlim([0, 1000])\n",
    "plt.legend()\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
868
   "execution_count": 28,
thecml's avatar
thecml committed
869
870
871
872
   "metadata": {},
   "outputs": [
    {
     "data": {
thecml's avatar
thecml committed
873
      "image/png": "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",
thecml's avatar
thecml committed
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "surv = rsf.predict_cumulative_hazard_function(X_test_sel, return_array=True)\n",
    "\n",
    "for i, s in enumerate(surv):\n",
    "    plt.step(rsf.event_times_, s, where=\"post\", label=str(i))\n",
    "plt.ylabel(\"Cumulative hazard\")\n",
    "plt.xlabel(\"Time in days\")\n",
    "plt.xlim([0, 1000])\n",
    "plt.legend()\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "code",
thecml's avatar
thecml committed
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GradientBoostingSurvivalAnalysis(dropout_rate=0.7, max_depth=14,\n",
       "                                 max_features='log2', min_samples_split=4,\n",
       "                                 random_state=0, subsample=0.4)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sksurv.ensemble import GradientBoostingSurvivalAnalysis\n",
    "\n",
    "model = GradientBoostingSurvivalAnalysis(n_estimators=100,\n",
    "                                         learning_rate=0.1,\n",
    "                                         max_depth=14,\n",
    "                                         loss='coxph',\n",
    "                                         min_samples_split=4,\n",
    "                                         max_features='log2',\n",
    "                                         subsample=0.4,\n",
    "                                         dropout_rate=0.7,\n",
    "                                         random_state=0)\n",
    "model.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
thecml's avatar
thecml committed
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <style>\n",
       "    table.eli5-weights tr:hover {\n",
       "        filter: brightness(85%);\n",
       "    }\n",
       "</style>\n",
       "\n",
       "\n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "\n",
       "    \n",
       "        <table class=\"eli5-weights eli5-feature-importances\" style=\"border-collapse: collapse; border: none; margin-top: 0em; table-layout: auto;\">\n",
       "    <thead>\n",
       "    <tr style=\"border: none;\">\n",
       "        <th style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">Weight</th>\n",
       "        <th style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">Feature</th>\n",
       "    </tr>\n",
       "    </thead>\n",
       "    <tbody>\n",
       "    \n",
       "        <tr style=\"background-color: hsl(120, 100.00%, 80.00%); border: none;\">\n",
       "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
thecml's avatar
thecml committed
992
       "                0.1065\n",
thecml's avatar
thecml committed
993
994
995
996
997
998
999
1000
       "                \n",
       "                    &plusmn; 0.0000\n",
       "                \n",
       "            </td>\n",
       "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
       "                BirthYear\n",
       "            </td>\n",
       "        </tr>\n",