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.
\n",
"
\n",
" \n",
" Parameters\n",
"
\n",
" \n",
" \n",
"
\n",
"
\n",
"
objective
\n",
"
'binary:logistic'
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
base_score
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
booster
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
callbacks
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
colsample_bylevel
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
colsample_bynode
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
colsample_bytree
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
device
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
early_stopping_rounds
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
enable_categorical
\n",
"
False
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
eval_metric
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
feature_types
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
feature_weights
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
gamma
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
grow_policy
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
importance_type
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
interaction_constraints
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
learning_rate
\n",
"
0.05
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
max_bin
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
max_cat_threshold
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
max_cat_to_onehot
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
max_delta_step
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
max_depth
\n",
"
5
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
max_leaves
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
min_child_weight
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
missing
\n",
"
nan
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
monotone_constraints
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
multi_strategy
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
n_estimators
\n",
"
150
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
n_jobs
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
num_parallel_tree
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
random_state
\n",
"
42
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
reg_alpha
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
reg_lambda
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
sampling_method
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
scale_pos_weight
\n",
"
1.5
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
subsample
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
tree_method
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
validate_parameters
\n",
"
None
\n",
"
\n",
" \n",
"\n",
"
\n",
"
\n",
"
verbosity
\n",
"
None
\n",
"
\n",
" \n",
" \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"XGBClassifier(base_score=None, booster=None, callbacks=None,\n",
" colsample_bylevel=None, colsample_bynode=None,\n",
" colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
" enable_categorical=False, eval_metric=None, feature_types=None,\n",
" feature_weights=None, gamma=None, grow_policy=None,\n",
" importance_type=None, interaction_constraints=None,\n",
" learning_rate=0.05, max_bin=None, max_cat_threshold=None,\n",
" max_cat_to_onehot=None, max_delta_step=None, max_depth=5,\n",
" max_leaves=None, min_child_weight=None, missing=nan,\n",
" monotone_constraints=None, multi_strategy=None, n_estimators=150,\n",
" n_jobs=None, num_parallel_tree=None, ...)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"\n",
"xgb_model.fit(X_train, y_train)\n"
]
},
{
"cell_type": "markdown",
"id": "04eac662",
"metadata": {},
"source": [
"\n",
"# 3. Predict"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "57b3b86e",
"metadata": {},
"outputs": [],
"source": [
"\n",
"y_pred_xgb = xgb_model.predict(X_test)\n"
]
},
{
"cell_type": "markdown",
"id": "1945f2eb",
"metadata": {},
"source": [
"\n",
"# 4. Compare Results"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "1b8c6824",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"XGBoost Classification Report:\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.75 0.57 0.65 397\n",
" 1 0.55 0.73 0.62 279\n",
"\n",
" accuracy 0.64 676\n",
" macro avg 0.65 0.65 0.64 676\n",
"weighted avg 0.67 0.64 0.64 676\n",
"\n"
]
}
],
"source": [
"\n",
"print(\"XGBoost Classification Report:\\n\")\n",
"print(classification_report(y_test, y_pred_xgb))\n"
]
},
{
"cell_type": "markdown",
"id": "b0e1294e",
"metadata": {},
"source": [
"# 5. Visualizing Feature Importance (CRITICAL for Business Insight)\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "53159afa",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA8QAAAIjCAYAAADFmtJ5AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAASvJJREFUeJzt3QeYFFXaP+xDNhGNoIhixIhhjWsOqJjWnDGvaRVdXdc1Z8w5J0wY1qy7q5hzFjOrgmJasygqCgj9Xc/5v93fzDDgDA7MDHXf19XOdFd11emqAvn1c86pFqVSqZQAAACgYFo2dgMAAACgMQjEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxADwf1q0aJEOOOCA1NTsuuuuab755qvTuiNGjMifY+DAgVO9XTRPTfU6B2gMAjEAzd6tt96a/5F/5513TrRs6aWXzsseffTRiZbNO++8aZVVVplq7Xr77bfTcccdl0Mq/7/hw4enP//5z6lnz55phhlmSB06dEirrrpqOu+889LPP/88VfY5aNCgdO6556bpWWMc14YyYcKEdPPNN6e11lorzT777Gm22WZLW2yxhT87wFTXeurvAgCmrj/+8Y/551NPPZX+9Kc/VV4fNWpUevPNN1Pr1q3T008/nf+xXfbxxx/nx3bbbTdVA/Hxxx+f1lxzzTpXeH+vHj165PDTpk2b1BT961//SltvvXVq165d2mWXXdISSyyRxo4dm8/dYYcdlt566610+eWXT5VAHNdC//790/SosY5rQ/noo49yu7fZZpu0/fbbp//973/pnHPOSRtssEF67bXX8ucCmBoEYgCavW7duqX5558//+O/qmeffTaVSqUcFGouKz8vh+nm7tdff81VtrZt2+bqYFP0wQcf5C8gIrQ/8sgjqWvXrpVl+++/fxo2bFgOdkzsp59+SjPPPHOzOa5xLUYgr+u12Llz5/T666+nRRddtNqf66h4v/TSS7nSDTA16DINwHQhgu2QIUOqdQ2NqvDiiy+eNtxww/Tcc8/lf6RXXRZdqWv7h/Zdd92VK2xRlYr333///dWWf/jhh2m//fZLiyyySJpxxhnTrLPOmkN31e6dMYY3XgtRmY59xeOxxx6b7Oco7zuCRPysrRt4eZzwmWeembsBL7DAArmtUZGuOYY41onn0eaajjjiiBygR44cWXnt+eefz1W5jh07pplmmimtscYa+VhV9cMPP+RKa1S9Y79zzDFHWm+99dIrr7wy2c92+umnpx9//DFdddVV1UJb2YILLpgOOuig3xwLHa9HV/S6ticq9BEI4xiUz0PViv2XX36Z9thjjzTnnHPm4x7d7K+99tpJHvOLLrood0uO47P++uvnngbxxcuJJ56Y5plnnnxNbLbZZunbb7+dqO3/+c9/0mqrrZbDbfv27VPfvn1z9bbmmPFZZpkld4HeaKON8no77rhjgxzX+lznkxq7Hsc+jkVt45JvvPHGvK3YZmwvzl8si2vokEMOyd2h47NHT46vvvqq8v643qqG4VAO0xGsAaYWFWIApptAfP311+dAFwEoxD/CY4xwPL7//vvcZXappZaqLIt/gEeYrVk5vuOOO3LgjSBy/vnnpy233DJ36Syv++KLL6ZnnnkmV+UiAEVYuuSSS/J+I5RGUFp99dXTgQcemN//j3/8I/Xq1Su/t/yzNoMHD877WmyxxdKpp56avvnmm7TbbrvlfdTmmmuuSb/88kvae++9cwDp0qVLtdAfogvq3/72tzzOOrrOVhWvRaCL6lyI6mJ8ebDccsulY489NrVs2TLvY+21105PPvlkWmGFFfJ6++yzT7rttttyAIq2RjvjuA0dOjQtu+yyk/x89957bw6SDT1u+7fac+SRR+bz/8knn+RuuCECZ4gvUOK8RRU13h89Df75z3/mMPjdd99NFCQj8EVA+8tf/pIDb4TROMZxjOLLjsMPPzxv64ILLkiHHnpouvrqqyvvjeuzX79+qU+fPum0005Lo0ePztdN+cucquEzKv6xXiyLEB7XVEMe17pc5/UV109cU3EcYwxwfJ5XX301L4vjFddZXFfx5yW+yIn1brnlllq3Fefw5JNPTgsvvPB004sDaKJKADAdeOutt0rxv7UTTzwxPx83blxp5plnLl177bX5+Zxzzlm66KKL8u+jRo0qtWrVqrTXXntV20a8v23btqVhw4ZVXnvttdfy6xdccEHltdGjR0+0/2effTavd91111Ve++c//5lfe/TRR+v0GXr37l3q2rVr6bvvvqu8Nnjw4LyNHj16VF774IMP8msdOnQoffnll9W2UV52zTXXVF5beeWVS8stt1y19V544YVq7Z0wYUJpoYUWKvXp0yf/XvWzzj///KX11luv8lrHjh1L+++/f6k+vv/++7y/zTbbrE7r1/Y5yuL1Y489tl7t6du3b7VjWHbuuefm7d1www2V18aOHZuP2SyzzJKvlartmX322audnyOOOCK/vvTSS+drrmz77bfP19Ivv/ySn//www+lTp06TXTNff7557n9VV/v169f3ubf//73Bj+u9bnOox21HbM49jX/CRnPW7Zsmf8cVhXnL5atu+661a6rgw8+OP8ZrHosy+JYxfXapUuXibYH0NB0mQZguhCV16hslccGx0Q8Me6yXDWLn+WuvzG2ePz48bVWntZdd93cBbksKsoxW+/7779feS26xJaNGzcuV7OiW2qnTp1+s9vwpHz22We5mhYVxOg+WhZdf6PqWZuo6EUX1N+y7bbbppdffjl3wS2LylxUlaNrb4h9v/fee2mHHXbIn+frr7/OjziG66yzTnriiScq1ef4nFGJj4mP6iomOAtRjWxoU9Kesn//+99prrnmyhM5lcWEZFHdj27Ijz/+eLX1oxt81fOz4oor5p877bRTnryt6utRSf7000/z8wcffDBXnGM/5WMbj1atWuV1a5sFfd99951qx7Uu13l9Rff6SV2r0Yuhajfr6DYefwZr68ofnzt6c9x3332T3B5AQxGIAZguxD+2I/SWxwpH+I2xpBFUawbi8s/aAnHciqmm6OpZdZxtdLM95phjUvfu3XOojO6hEUwj8ETX3ClRDgYLLbTQRMtirHJtontvXUSIi+7P5e6pUdCLbsHRPTpCUIgwHCKQx2ep+rjyyivTmDFjKp8tuglHYInPH92oY0zpbwWp8n5ivG9Dm5L2VD3ucczj+FRV7tpeM7DVvD7K4Tj2Xdvr5eumfHyja3XN4xtd5WMcc1URrifVVb4hjmtdrvP6mtz1WHN/5W76NfcXXzDFdRrX4corrzzFbQGoK2OIAZhuRMCN8ZRvvPFGZfxwWfweY2ijYhdV5JjBNsZd1hQVu9r8v16hqTIeMsbWxkRO8Y/2CD8RyGNMcc0xvFNT1Ur15MRnjYpcjO+M8czxpUGMFY1xrGXldp9xxhmpd+/etW6nPO42xszG9mLCrwhz8Z7YVoxJjZA9qeAW7YjgWhc1J20qi6piTVPSnik1qevjt66b8vGNccRRka6panU5xBctNUN6QxzXura3vufgt67HuuyvXPGOUFzb5GAAU4NADMB0eT/iCMRV7zkbE0VFyIiJj6J7bczeO6ViAqeoYJ111lmV12Jyq6gQVzWpQFGbuGVO1UpiVe+88076vaLbdEygFNuKClxM0rTJJptUlpe7z0bAiu60vyUCS2wvHlHdjMmrYhKkyQXQjTfeON8LN7qs/1b1r1xBrHlMa+tiW5f2TOpcxHGP2/1EYK0aQP/73/9WljeE8vGNXgt1Ob71UZ/jWh9xDmoe/8mdg4YQM0vHraLKE7gBTG26TAMw3Vh++eXzP6hjJuCoBFetEEcYjpAUt8yJcbG/Z+baqHbVrGzFrMI1K2fl+8bWFipqC3RRmY3b/VTtdh1jT2Pm6t8rxhtHu2+66abcXTpCVNX72sYXBhHaYkbjGDtbU/kWOfEZa3YLj5AXVcroVj05Mdt17HPPPfdMX3zxxUTLY4zzeeedVwnm0RU9xi5XdfHFF1d7Xtf2xH5r684eX4x8/vnn1WY7jhme43xGRTzGxTaEmDE6PtMpp5ySK6A1Vb0FUX3V57jWR1wPccziC4OqY91ruxVYQ4nbgMXs0wIxMK2oEAMw3Yh/TP/hD3/ItwiKABwhr6oIyOWq7u8JxBEmo+trdJWOSX+iMvfQQw9NdLuaCLgRQqP7bgSLaFOMIY3AVpu41VLclzbatvvuu+fb+kQwi/u61hZS6yP2GfdDPvvss/N406gYVxXV0RgrHBXV2F/c7mnuuefOXyzEhE8R5qI7erw3xrZutdVW+X69ERrjs8etqKpWzCcVsAYNGpT3HWN0d9lll3wf3Jh8Km5jVb7dUVkEvAEDBuSf8WVHhON333232jbr2p64FiL0xr1w4xqJ9aJCHpM9XXbZZXm/MfFY3CooegBED4O4NVBDTQIWxy9usbTzzjvnL2aie32MH46u63GP5Lgf9oUXXjhF267vca2raGPcRiruGRyTjJVvExW3QprSyeN+S1xv8Rni9kxV7zUNMNU09jTXANCQyrfBWWWVVSZadscdd+Rl7du3L/36668TLY9ltd2+J249E7egKRs5cmRpt912K80222z51jxxq6L//ve/E60XrrjiilLPnj3zLWbqcgum22+/vdSrV69Su3btSosttlhuc83b35RvAXTGGWfU63ZF0Zby5//5559r3f+QIUNKW2yxRWnWWWfNbYj9brPNNqWHH344Lx8zZkzpsMMOy7cZiu3Era3i94svvrhUV++++26+zdB8882Xb/8T21l11VXzLX/Ktykq3/Jpjz32yLclinWiHXGbqaq3Xapre3788cfSDjvskG99VPM2Vl988UXlfEZ7llxyyYmO36SOeZzPeD1usVXb7YZefPHFidaP6yU+0wwzzFBaYIEFSrvuumvppZdeqqwT5zs+R33V9bjW9Tov3/ZriSWWyNtbZJFF8u2pJnXbpdq2ObnjUNufh/JxrnpbLYCpqUX8Z+rFbQAAAGiajCEGAACgkARiAAAACkkgBgAAoJAEYgAAAApJIAYAAKCQBGIAAAAKqXVjNwDqasKECel///tfat++fWrRokVjNwcAAGgkcffgH374IXXr1i21bDnldV6BmGYjwnD37t0buxkAAEAT8fHHH6d55plnit8vENNsRGW4fNF36NChsZsDAAA0klGjRuViWTkjTCmBmGaj3E06wrBADAAAtPidQylNqgUAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABRS68ZuANTXEsc+kFq2m6mxmwEAAIUxYkDfND1SIQYAAKCQBGIAAAAKSSAGAACgkARiAAAACkkgBgAAoJAEYgAAAApJIAYAAKCQBGIAAAAKSSAGAACgkARiAAAACkkgBgAAoJAEYgAAAApJIAYAAKCQBGIAAAAKSSAGAACgkARiAAAACkkgBgAAoJAEYgAAAApJIAYAAKCQBGIAAAAKSSAGAACgkARiAAAACkkgBgAAoJAEYgAAAApJIAYAAKCQBGIAAAAKSSAGAACgkARiAAAACkkgBgAAoJAEYgAAAApJIJ7Gdt1119SiRYuJHsOGDWvspgEAABRK68ZuQBFtsMEG6Zprrqn22uyzz17t+dixY1Pbtm2nccsAAACKQ4W4EbRr1y7NNddc1R7rrLNOOuCAA1L//v3TbLPNlvr06ZPXffPNN9OGG26YZpllljTnnHOmnXfeOX399deVbf30009pl112ycu7du2azjrrrLTmmmvm7ZRFBfquu+6q1oZOnTqlgQMHVp5//PHHaZtttsmvd+nSJW222WZpxIgR1Srbm2++eTrzzDPzfmaddda0//77p3HjxlXWGTNmTDr88MNT9+7d82dccMEF01VXXZVKpVL+Pd5b1auvvqo6DgAANBqBuAm59tprc1X46aefTpdeemn67rvv0tprr52WWWaZ9NJLL6X7778/ffHFFzm4lh122GHp8ccfT3fffXcaPHhweuyxx9Irr7xSr/1GqI0A3r59+/Tkk0/m/UfAjkp2VKrLHn300TR8+PD8M9oagbpqqI5gftNNN6Xzzz8/DR06NF122WV5OxF6d99994mq4vF89dVXz2G5NhGwR40aVe0BAADQUHSZbgT33XdfDoplUQEOCy20UDr99NMrr5900kk5DJ9yyimV166++upcgX333XdTt27dcgX2hhtuyBXmEEF1nnnmqVd7brnlljRhwoR05ZVX5vBaDqtRLY6Avf766+fXOnfunC688MLUqlWrtOiii6a+ffumhx9+OO211165Pbfeemt68MEH07rrrpvX79mzZ7UK8zHHHJNeeOGFtMIKK+QQPmjQoImqxlWdeuqp6fjjj6/XZwEAAKgrgbgRrLXWWumSSy6pPJ955pnT9ttvn5Zbbrlq67322mu5Gls1PJdFpfbnn3/OFdwVV1yx8np0d15kkUXq1Z7YT3RbjgpxVb/88kveT9niiy+ew3BZdJ1+4403Kt2fY9kaa6xR6z4ivEeAjkAfgfjee+/NFeCtt956ku064ogj0iGHHFJ5HhXi+DIAAACgIQjEjSACcG3dhOP1qn788ce0ySabpNNOO22idSOM1nXsbVR9YxxvVVXH/sZ+IozfeOONE7236mRfbdq0mWi7UVkOM84442+2Y88998xjoM8555xcgd52223TTDPNNMn1YxxyPAAAAKYGgbgJW3bZZdPtt9+e5ptvvtS69cSnaoEFFsgh9fnnn0/zzjtvfm3kyJG5+3LVSm2E2s8++6zy/L333kujR4+utp/oNj3HHHOkDh06TFFbl1xyyRyOYzxzuct0TRtttFEO/VEdj/HQTzzxxBTtCwAAoCGYVKsJi1mcv/3229yd+sUXX8zdlx944IG02267pfHjx+eu1HvssUeeWOuRRx7JM1LHWN2WLauf1piYK8b+DhkyJE/Otc8++1Sr9u644455ZuuYWTom1frggw/y2OEDDzwwffLJJ3Vqa4T2fv365cmzYkbr8jZiXHFZdKmO9kVX6BgvvfLKKzfg0QIAAKgfgbgJi3G3MeNzhN+Y2CqqsHE7pZjsqhx6zzjjjLTaaqvlrtVRmf3jH/840VjkuBVTjL2N9XbYYYd06KGHVuuqHL9HtTaqzFtssUXq1atXDtoxhrg+FeOo/G611VZpv/32y5NuxWRbcVuoqmK7Me45Qj0AAEBjalGqObiUZi/uQ9y7d+907rnnpqYmKtAxI3bc9zjuq1wfMalWx44dU/f+t6aW7SY99hgAAGhYIwb0TU1JORt8//33UzzsMxhDzDQRM0p/9dVX6bjjjsszS9c3DAMAADQ0XaaZJm666abUo0eP9N1331W71zIAAEBj0WWaZkOXaQAAaBwjptMu0yrEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFFLrxm4A1Nebx/dJHTp0aOxmAAAAzZwKMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSK0buwFQX0sc+0Bq2W6mxm4GNIgRA/o2dhMAAApLhRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgbiJ2HXXXVOLFi3SPvvsM9Gy/fffPy+Ldaal2Oddd901TfcJAAAwrQjETUj37t3TzTffnH7++efKa7/88ksaNGhQmnfeeVNzNXbs2MZuAgAAwEQE4iZk2WWXzaH4jjvuqLwWv0cYXmaZZSqvjRkzJh144IFpjjnmSDPMMEP64x//mF588cXK8sceeyxXdx9++OG0/PLLp5lmmimtssoq6Z133qm2v7vvvjvvM7bRs2fPdPzxx6dff/01L5tvvvnyzz/96U95W+Xnw4cPT5tttlmac8450yyzzJL+8Ic/pIceeqjadmPdE088Me2yyy6pQ4cOae+9905rr712OuCAA6qt99VXX6W2bdvmdgIAAExrAnETs/vuu6drrrmm8vzqq69Ou+22W7V1/va3v6Xbb789XXvttemVV15JCy64YOrTp0/69ttvq6135JFHprPOOiu99NJLqXXr1nnbZU8++WQOrAcddFB6++2302WXXZYGDhyYTj755Ly8HLCjLZ999lnl+Y8//pg22mijHGKHDBmSNthgg7TJJpukjz76qNq+zzzzzLT00kvndY4++ui055575kp3hPmyG264Ic0999w5LNcm1h01alS1BwAAQEMRiJuYnXbaKT311FPpww8/zI+nn346v1b2008/pUsuuSSdccYZacMNN0yLLbZYuuKKK9KMM86YrrrqqmrbinC7xhpr5HX+/ve/p2eeeSZ3wQ5RDY7X+vXrl6vD6623Xq7qRjAOs88+e/7ZqVOnNNdcc1WeR8j985//nJZYYom00EIL5fcssMAC6Z577qm27wi5f/3rX/OyeGyxxRaVqnRZBPDy2OnanHrqqaljx46VR1TPAQAAGopA3MRE8Ozbt28Oi1Gdjd9nm222yvLosjxu3Li06qqrVl5r06ZNWmGFFdLQoUOrbWuppZaq/N61a9f888svv8w/X3vttXTCCSfkbs/lx1577ZWrwaNHj55k+6JCfOihh6ZevXrlsBzvi/3WrBBHV+2qolv2zjvvnCveISrbb7755mQnCjviiCPS999/X3l8/PHHv3n8AAAA6qp1nddkmomuzeXxthdddNEUbyeCclm5CjthwoRKsI0qcblyWzO8TkqE4QcffDB3iY6u2lGZ3mqrrSaaOGvmmWee6L3Rbbp3797pk08+yWE/qsg9evSY5L7atWuXHwAAAFODQNwExbjcCJgRYmNscFXR/Tgmooqu1OUwGRXjGOPbv3//Ou8jJtOKSbYi1E4uUI8fP77aa7HfqOrGZFvlYD1ixIg67XPJJZfMlePo4h3jiS+88MI6txcAAKChCcRNUKtWrSrdn+P3mpXXfffdNx122GGpS5cueQbq008/PXdz3mOPPeq8j2OOOSZtvPHG+f1R4W3ZsmXuRh3dmE866aTKbNExeVZ0z45KbefOnfO44Zj5OibSisAeE2aVq851EVXiqH7H5yiHagAAgMZgDHETFbcrikdtBgwYkLbccss8JjcqvcOGDUsPPPBADqx1FZXn++67Lw0ePDjfOmmllVZK55xzTrUuzDFDdXSPjsmsyrd9Ovvss/N+4jZOEYpjO9GGutp+++3zjNfxc3JdswEAAKa2FqVSqTTV9wL/J7pXR7fv6OJdnyAd4rZLebbp/remlu1mmmpthGlpxIC+jd0EAIBmp5wNYvLdSRUS60KXaaaJGOf8zTffpKOOOipXo+sbhgEAABqaLtNMEzEZV9z6KSrDl156aWM3BwAAQIWYaWPNNddMeucDAABNiQoxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhdS6sRsA9fXm8X1Shw4dGrsZAABAM6dCDAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIbVu7AZAfS1x7AOpZbuZGrsZNBEjBvRt7CYAANBMqRADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBA3A7vuumtq0aJFfrRp0ybNP//86W9/+1v65ZdfGrtpAAAAzVbrxm4AdbPBBhuka665Jo0bNy69/PLLqV+/fjkgn3baaY3dNAAAgGZJhbiZaNeuXZprrrlS9+7d0+abb57WXXfd9OCDD+ZlEyZMSKeeemquHM8444xp6aWXTrfddlu197/11ltp4403Th06dEjt27dPq622Who+fHhl+ZVXXpl69eqVZphhhrToooumiy++uLJsxIgROXzfcccdaa211kozzTRT3sezzz5bbR9PP/10WnPNNfPyzp07pz59+qSRI0em6667Ls0666xpzJgx1daPz7HzzjtPpSMGAAAweQJxM/Tmm2+mZ555JrVt2zY/jzAcofPSSy/Nwffggw9OO+20U3r88cfz8k8//TStvvrqOVQ/8sgjucK8++67p19//TUvv/HGG9MxxxyTTj755DR06NB0yimnpKOPPjpde+211fZ75JFHpkMPPTS9+uqraeGFF07bb799ZRvx2jrrrJMWW2yxHJSfeuqptMkmm6Tx48enrbfeOv+85557Ktv68ssv07/+9a/cjkmJAD1q1KhqDwAAgIbSolQqlRpsa0y1McQ33HBDrt5GAI2g2LJly3Trrbfmqm+XLl3SQw89lFZeeeXKe/bcc880evToNGjQoPSPf/wj3Xzzzemdd97JY5BrWnDBBdOJJ56YA27ZSSedlP7973/n4B0V4qg+RxV5jz32yMvffvvttPjii+cAHRXlHXbYIX300Uc5CNdmv/32y9uJbYazzz47XXTRRWnYsGG5+lyb4447Lh1//PETvd69/62pZbuZpuBIMj0aMaBvYzcBAIBpLIplHTt2TN9//33uBTuljCFuJqKr8iWXXJJ++umndM4556TWrVunLbfcMleEI/iut9561dYfO3ZsWmaZZSrV2+giXVsYju1F1+kIunvttVfl9QjecYFVtdRSS1V+79q1a6XSG4E49hGV4EmJbf/hD3/I1eq55547DRw4sDJZ2KQcccQR6ZBDDql20UeXcQAAgIYgEDcTM888c67khquvvjqP4b3qqqvSEksskV+L7scRNKuKLtIhxhVPyo8//ph/XnHFFWnFFVestqxVq1bVnlcN1OUgG+OXf2sfIcJ5tDm6dq+//vo5yEebJyfaX/4MAAAADU0gboaiu3R0g47q6bvvvptDY3RXXmONNWpdPyq7MR44ZqiuWSWec845U7du3dL777+fdtxxxyluU+zj4YcfrrWLc9Vu3Oeee26uEsekYKq9AABAYzKpVjMV3ZOjgnvZZZflia5iIq0IvdH9+ZVXXkkXXHBBZVKsAw44IHc33m677dJLL72U3nvvvXT99dfnMcUhQmxMzHX++efngP3GG2/kWzzFON+6iu7NL774Yh4r/Prrr6f//ve/uYv3119/XVknxhl/8sknuRo9ucm0AAAApgUV4mYqxhBH0D399NPTBx98kGafffYcaqPS26lTp7TsssvmKnKIWx7F7NKHHXZYriJHkO7du3daddVVK5XbuFXSGWeckdeJ7tlLLrlk6t+/f53bE7NODx48OO9zhRVWyF2oowt21Ym6YkxyjHuOrtJxyyUAAIDGZJZppqm4NVPMTh3V6CmdSc4s01RllmkAgOIZZZZpmpORI0emxx57LD8uvvjixm4OAACAQMy0EbNMRyg+7bTT0iKLLNLYzQEAABCImTZGjBjR2E0AAACoxizTAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFFLrxm4A1Nebx/dJHTp0aOxmAAAAzZwKMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSK0buwFQX0sc+0Bq2W6mxm4G08CIAX0buwkAAEzHVIgBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgbgBtWjRIt11112pSHbddde0+eabN3YzAAAApk0gfvbZZ1OrVq1S375907T0wQcfpB122CF169YtzTDDDGmeeeZJm222Wfrvf/+bmmN4Lj86duyYVl111fTII49M9f0+88wzaaONNkqdO3fOx3DJJZdMZ599dho/fvxU3zcAAECzD8RXXXVV+stf/pKeeOKJ9L///S9NC+PGjUvrrbde+v7779Mdd9yR3nnnnXTLLbfkQPfdd9+l5uiaa65Jn332WXr66afTbLPNljbeeOP0/vvvT9G2xo4d+5vr3HnnnWmNNdbIXyQ8+uij+YuEgw46KJ100klpu+22S6VSabLHf2qIff76669TZdsAAAANGoh//PHHHET33XffXCEeOHBgfj0qt9tuu+1EISqC3nXXXZef//DDD2nHHXdMM888c+ratWs655xz0pprrpn69+//m/t966230vDhw9PFF1+cVlpppdSjR49cVY0wF8/DiBEjcsX15ptvTqusskqugC6xxBLp8ccfr7atN998M2244YZplllmSXPOOWfaeeed09dff11ZHm068MAD09/+9rfUpUuXNNdcc6Xjjjuu2jbee++9tPrqq+d9LLbYYunBBx+s76FMnTp1ytuONl5yySXp559/rmynLm084IAD8rGLY9ynT5/J7uunn35Ke+21V9p0003T5Zdfnnr37p3mm2++tOeee6Zrr7023XbbbenWW2+tdhzjPEeAjs9444035iryIYcckts966yz5uNTM0RPmDAhnXrqqWn++edPM844Y1p66aXztssee+yxvO3//Oc/abnllkvt2rVLTz31VL2PHQAAwDQPxBGaFl100bTIIouknXbaKV199dU5FEXQvffee3NgLnvggQfS6NGj05/+9Kf8PMJUVEPvueeeHPyefPLJ9Morr9Rpv7PPPntq2bJlDle/1b33sMMOS3/961/TkCFD0sorr5w22WST9M033+RlUU1ee+210zLLLJNeeumldP/996cvvvgibbPNNtW2ESExgvvzzz+fTj/99HTCCSdUwmqEvi222CK1bds2L7/00kvT4Ycfnn6PCI/lSm992hhtiGMabZicwYMH52Nw6KGHTrQsjs/CCy+cbrrppmqv//3vf88V5KFDh+bAfdZZZ+UvQOKcR4j99ttvc9W5qgjD8QVItCe+xDj44IPzdVLzS4nY9oABA/K2l1pqqVrbPGbMmDRq1KhqDwAAgIbSekq6S0fACRtssEHuwhxhJwJTBMgISFHNDIMGDcoVyfbt2+fqcAS4eG2dddapdBmO8cB1Mffcc6fzzz8/VyWPP/74tPzyy6e11lorB/GePXtWWzcqp1tuuWX+PSqvESij3fHeCy+8MAfNU045pbJ+BLzu3bund999NwfDECHt2GOPzb8vtNBC+X0PP/xw7rb90EMP5e7GEfjL7Y/tRUV3SsSXBkcddVQelx0V2bq2MdoVYb0u4n2hV69etS6PLznK65RF9TmCf9m5556bjjjiiMprEXrjGFQNsNHmOD7xRUSIcxPh+bLLLsufrSy+YIhjOTkRruNcAwAANHqFOMbtvvDCC2n77bfPz1u3bp27SUfYjN+jghlda8tddO++++4cWEOMjY0u1CussEJlezGZVFSa62r//fdPn3/+ed5HBK5//vOfafHFF5+ou3I5jJXbGOE5KpHhtddey+Nnoyty+RFhMESX7LKaVcvo4v3ll1/m32NbEU6rhvmq+6yrOI6x//jC4Pbbb8/HMfZb1zZGl+P6mtw44ZriuJXFFx8x3nnFFVec6NiWDRs2LIf7CLpV2x4V46rtrrntSYnwHfstPz7++OM6tx0AAKBBK8QR2GICpKpBMAJWjAONqmaE36gCRnCMkBrdgKOK3JAiPEYX33jE+OGoTMfP36o2lkWX7njvaaedNtGyCL1lbdq0qbYsxr1GV+mGFGOo11133fzFQHQJr28boyJfV+WqcoT5GF9dU7weY6Grqs/2y+0O//rXv3JFv6q4Ruq77XhPzfcBAABM8wpxBOGo9MU40ldffbXyiGpmBOQYfxpBKyqnMRlTVHG33nrrSrCMrrPx+4svvljZZlT9anbTrY8IqVE5jWp0Vc8991y1dr/88suVrsLLLrtsHtsaE0otuOCC1R51DYCxrahWRsW0tn3WVUyoFfutGoYbqo01rb/++nmCsDh/NcWY7pgkrFz5r02E9gjjMWa65rEti0AdAfajjz6aqN1xXQAAADTLQHzfffelkSNHpj322CPPilz1EeN1o3pcnm06xpZGhbjcXbpc2e3Xr1+e8Cq6A0fgi23FRFkRbH9LhO+453BMqvX222/n7rmxzxhbG69XddFFF+WxzDHON7pZR7t33333vCyex2RQEf4inEdX3hgHu9tuu9X5XrxR1Y2Ka3ye+EIgJgc78sgjU0NpiDbWFEE6xvFGN/a99947vf7663k26TiGu+66a9pqq60mmrSrpphgKybCuuuuu/Kx3W+//ard8irOcUzaFRNpxXjxaHdMmnbBBRfk5wAAAM0yEEdwKnfvrSkCccyGHCErQnAE1ugyG7dFqurss8/OY23jfruxrVge1da4rc9viXvnRsU0JlmKcaxRRT3vvPPy85phNEJbPOKWPzGhU1RA49ZEIarZMStzBMuomsZ9jGPyqLiVUITzuoj1InDHbZJiTHTcuujkk09ODaUh2libCL3xZURUcFdbbbU8fju6bcfxi1tV/dYXEzFzd0yYFl8ExHmMAFyeQbzsxBNPTEcffXSeECvObXSZjy7UcRsmAACApqRFqT6zLDWw6OocwTm68Ua1+PeKimcEr7jdUtxnl+lL3HYpvpDp3v/W1LLdTI3dHKaBEQP6NnYTAABowtkghuF26NBh2t126feIoBpdbaOqGg2PW++Eml2eAQAAYGqb8v63U+jMM8/MXZmjy3RUiGP8bXRnjp9Vb9VT89GcxL14J/U5pvRexb8lJjGb1D7j1lQAAAA0oS7TVcV43E8//XSSy2Om4uYiJsSKR23iVlQ1b0nUEH744Yf0xRdf1LosZvfu0aNHau50mS4eXaYBAJhuukxPTgTF5hR6JydubxSPaSkmuIoHAAAATbTLNAAAADQFAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIXUurEbAPX15vF9UocOHRq7GQAAQDOnQgwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCG1buwGQH0tcewDqWW7mRq7GdTTiAF9G7sJAABQjQoxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBADAABQSAIxAAAAhSQQAwAAUEgCMQAAAIUkEAMAAFBIAjEAAACFJBDzuz322GOpRYsW6bvvvmvspgAAANSZQNwMfPzxx2n33XdP3bp1S23btk09evRIBx10UPrmm2+meVvWXHPN1L9//2qvrbLKKumzzz5LHTt2zM8HDhyYOnXqNM3bBgAAUB8CcRP3/vvvp+WXXz6999576aabbkrDhg1Ll156aXr44YfTyiuvnL799tvGbmIO6XPNNVeuEgMAADQXAnETt//+++fAOXjw4LTGGmukeeedN2244YbpoYceSp9++mk68sgj83oRRu+6665q740qbVRryw4//PC08MILp5lmmin17NkzHX300WncuHGV5ccdd1zq3bt3uv7669N8882XK77bbbdd+uGHH/LyXXfdNT3++OPpvPPOy/uLx4gRI6p1mY7fd9ttt/T9999X1ontnnDCCWmJJZaY6PPF/qIdAAAA05pA3IRF9feBBx5I++23X5pxxhmrLYuK7I477phuueWWVCqV6rS99u3b54D89ttv51B7xRVXpHPOOafaOsOHD8/B+r777suPCMADBgzIy+I9UZXea6+9chfpeHTv3n2i7tPnnntu6tChQ2WdQw89NHf5Hjp0aHrxxRcr6w4ZMiS9/vrrOUDXZsyYMWnUqFHVHgAAAA1FIG7Copt0hN1evXrVujxeHzlyZPrqq6/qtL2jjjoqB9ao/m6yySY5qN56663V1pkwYUIOzVHNXW211dLOO++cu2eHqBhHtToqzBHI49GqVatq74/lsV5UhsvrzDLLLGmeeeZJffr0Sddcc01l3fg9qt5Rra7NqaeemrdVftQM3wAAAL+HQNwM/FYFOEJoXUQ1edVVV62E1AjIH330UbV1IixHJbmsa9eu6csvv0wNISrLMQ76l19+SWPHjk2DBg3KleNJOeKII3LX6/IjJhcDAABoKAJxE7bgggvmSmt0Na5NvD777LPnscKxXs3gXHV88LPPPpu7WG+00Ua5K3R0V47xxxFMq2rTpk2157HdqBo3hKhKt2vXLt15553p3nvvze3baqutJrl+rBtdr6s+AAAAGkrrBtsSDW7WWWdN6623Xrr44ovTwQcfXG0c8eeff55uvPHGPOlWiGAc43WrdrcePXp05fkzzzyTb9dUnoQrfPjhh/VuU1Sjx48fP0XrtG7dOvXr1y93lY51YsKummOjAQAAphUV4ibuwgsvzJNLxfjbJ554Incbvv/++3NQjhmjjznmmLze2muvndeNyu9LL72U9tlnn2rV3oUWWih3j7755pvzxFnnn39+rtTWV3Spfv755/Ps0l9//XWt1eNY58cff8xjj2OdqsF8zz33TI888kj+DJPrLg0AADC1CcRNXATZmJk5Jp7aZpttcpU3brsUYfjpp5/OY4HDWWedlSediomwdthhhzxhVkx+VbbpppvmKvMBBxyQb3UUFeMpud1RbDcm0lpsscVyVbrmGOQQE3dFIN92223zOqeffnq1zxPLF1100bTiiitO8XEBAAD4vVqU6nrPHpqMY489Np199tnpwQcfTCuttFJqTuJyi1Act5I65JBD6vXeuO1Snm26/62pZbv/P+zTPIwY0LexmwAAwHRi1P9lg5h89/fMNWQMcTN0/PHH527Jzz33XFphhRVSy5bNo9Aft4eKLtsx/nlS9x4GAACYVgTiZqo5Bso55pgjzTbbbOnyyy9PnTt3buzmAAAABScQM83onQ8AADQlzaOvLQAAADQwgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACgkgRgAAIBCEogBAAAoJIEYAACAQhKIAQAAKCSBGAAAgEISiAEAACik1o3dAKivN4/vkzp06NDYzQAAAJo5FWIAAAAKSSAGAACgkARiAAAACkkgBgAAoJAEYgAAAApJIAYAAKCQBGIAAAAKSSAGAACgkARiAAAACkkgBgAAoJAEYgAAAApJIAYAAKCQBGIAAAAKSSAGAACgkARiAAAACkkgBgAAoJAEYgAAAApJIAYAAKCQBGIAAAAKqXVjNwDqqlQq5Z+jRo1q7KYAAACNqJwJyhlhSgnENBvffPNN/tm9e/fGbgoAANAE/PDDD6ljx45T/H6BmGajS5cu+edHH330uy56mvc3gfGFyMcff5w6dOjQ2M1hGnP+cQ3gGig2559RVa6B9u3b5zDcrVu337VNgZhmo2XL/zfkPcKwvwSLLc6/a6C4nH9cA7gGis35p8P/XQMNUSQzqRYAAACFJBADAABQSAIxzUa7du3Ssccem39STK6BYnP+cQ3gGig25592U+EaaFH6vfNUAwAAQDOkQgwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJATJNy0UUXpfnmmy/NMMMMacUVV0wvvPDCZNf/5z//mRZddNG8/pJLLpn+/e9/T7O20rjn/6233kpbbrllXr9Fixbp3HPPnaZtpfGvgSuuuCKtttpqqXPnzvmx7rrr/ubfGUxf18Add9yRll9++dSpU6c088wzp969e6frr79+mraXxv13QNnNN9+c/1+w+eabT/U20nSugYEDB+bzXvUR76NYfw989913af/9909du3bNs08vvPDC9coEAjFNxi233JIOOeSQPJX6K6+8kpZeeunUp0+f9OWXX9a6/jPPPJO23377tMcee6QhQ4bk/wnG480335zmbWfan//Ro0ennj17pgEDBqS55pprmreXxr8GHnvssfx3wKOPPpqeffbZ1L1797T++uunTz/9dJq3nca5Brp06ZKOPPLIfP5ff/31tNtuu+XHAw88MM3bzrQ//2UjRoxIhx56aP6CjOJdAx06dEifffZZ5fHhhx9O0zbTuNfA2LFj03rrrZf/HrjtttvSO++8k78wn3vuueu+07jtEjQFK6ywQmn//fevPB8/fnypW7dupVNPPbXW9bfZZptS3759q7224oorlv785z9P9bbS+Oe/qh49epTOOeecqdxCmvI1EH799ddS+/btS9dee+1UbCVN+RoIyyyzTOmoo46aSi2kqZ3/+HO/yiqrlK688spSv379Spttttk0ai1N4Rq45pprSh07dpyGLaSpXQOXXHJJqWfPnqWxY8dO8T5ViGkS4tudl19+OXd5LGvZsmV+Ht/81yZer7p+iG+QJrU+09f5Z/rSENdA9BoYN25crhpSvGugVCqlhx9+OFcHVl999ancWprK+T/hhBPSHHPMkXuLUcxr4Mcff0w9evTIvYQ222yzPKSK4lwD99xzT1p55ZVzl+k555wzLbHEEumUU05J48ePr/N+BWKahK+//jpfuHEhVxXPP//881rfE6/XZ32mr/PP9KUhroHDDz88devWbaIvypi+r4Hvv/8+zTLLLKlt27apb9++6YILLsjd52hepuT8P/XUU+mqq67K3SMp5jWwyCKLpKuvvjrdfffd6YYbbkgTJkxIq6yySvrkk0+mUatp7Gvg/fffz12l430xbvjoo49OZ511VjrppJPqvN/Wv7vlANDIYix5TKoT44pNqFIs7du3T6+++mquEkWFOMaexfwCa665ZmM3janohx9+SDvvvHMOw7PNNltjN4dGEpXBeJRFGO7Vq1e67LLL0oknntiobWPaiC9BopfI5Zdfnlq1apWWW265PJfIGWeckcch14VATJMQ/zOLi/iLL76o9no8n9SESfF6fdZn+jr/TF9+zzVw5pln5kD80EMPpaWWWmoqt5Smdg1Ed7oFF1ww/x6zTA8dOjSdeuqpAvF0fv6HDx+eJ9HZZJNNqv3DOLRu3Tp3nV9ggQWmQctpSv8WaNOmTVpmmWXSsGHDplIraWrXQMwsHec93lcWX4pERTm6YEfvod+iyzRNQlys8Y1OfLtf9X9s8bzqN39VxetV1w8PPvjgJNdn+jr/TF+m9Bo4/fTTcxXg/vvvz7ffoflqqL8H4j1jxoyZSq2kqZz/uOXiG2+8kXsHlB+bbrppWmuttfLvMZ6U4v0dEN1m47qIkEQxroFVV101fwFS/kIsvPvuu/kaqEsYzqZ4Oi5oYDfffHOpXbt2pYEDB5befvvt0t57713q1KlT6fPPP8/Ld95559Lf//73yvpPP/10qXXr1qUzzzyzNHTo0NKxxx5batOmTemNN95oxE/BtDr/Y8aMKQ0ZMiQ/unbtWjr00EPz7++9914jfgqm5TUwYMCAUtu2bUu33XZb6bPPPqs8fvjhh0b8FEzLa+CUU04pDR48uDR8+PC8fvz/IP6/cMUVVzTip2Banf+azDJdvGvg+OOPLz3wwAP574CXX365tN1225VmmGGG0ltvvdWIn4JpeQ189NFH+Q4TBxxwQOmdd94p3XfffaU55pijdNJJJ9V5n7pM02Rsu+226auvvkrHHHNM7uYQXd+i6lMeWP/RRx/lrnFVx4kMGjQoHXXUUekf//hHWmihhdJdd92VZ5dj+j////vf/3K3qKrdZuOxxhpr5HGkTP/XwCWXXJK7Q2211VbVthNjho477rhp3n6m/TXw008/pf322y9PoDPjjDPmqmFMrBPbYfo//0x/6nsNjBw5Mu2111553c6dO+fq4jPPPJMWW2yxRvwUTMtrIHqDxL3nDz744DxsKu4/fNBBB+WJNuuqRaTi39VqAAAAaIZ8zQYAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAPAbxo8fn1ZZZZW0xRZbVHv9+++/T927d09HHnlktddvv/32tPbaa6fOnTunGWecMS2yyCJp9913T0OGDKmsM3DgwNSiRYvKY5ZZZknLLbdcuuOOO9K0tOaaa6b+/fvXab2q7S0/fv311wZpx3HHHZd69+6dGlNdj0Vjeeyxx/Ix/+677xq7KQDTDYEYAH5Dq1atcoC9//7704033lh5/S9/+Uvq0qVLOvbYYyuvHX744WnbbbfN4e6ee+5J77zzTho0aFDq2bNnOuKII6ptt0OHDumzzz7LjwjLffr0Sdtss01+T1O01157VdpbfrRu3To1JaVSqcFCelMybty4xm4CwHRJIAaAOlh44YXTgAEDcgiOIHj33Xenm2++OV133XWpbdu2eZ3nnnsunX766enss8/Oj9VWWy3NO++8ufJ71FFHpf/85z/VthnVvrnmmis/FlpooXTSSSelli1bptdff72yzsiRI9Muu+ySq80zzTRT2nDDDdN77703UUV68cUXT+3atUvzzTdfOuuss6otv/jii/P2Z5hhhjTnnHOmrbbaKr++6667pscffzydd955lYrviBEjJnkMYv/l9pYfZVdeeWXq1atX3seiiy6a91lVfFEQxzC2EV8OHH300ZWQF182HH/88em1116rtCNei7bE76+++mplO1EdjdeiWlq1ahrHNo5zHIOnnnoqTZgwIZ166qlp/vnnz1X6pZdeOt122231OOMpH8s4J3H8o4Lfo0eP/CXHV199lTbbbLP82lJLLZVeeumlynui3Z06dUp33XVX5ZjHFx0ff/xxtW1fcsklaYEFFsjXTvQguP7666stj88U62y66aZp5plnzl9GrLXWWnlZXAuxPM5fiC9q/vjHP+b9zjrrrGnjjTdOw4cPr2yrfByj90FsI85BHI9nn3222j6ffvrpXCWP5bGPaHdcf6EhjidAk1QCAOpkwoQJpTXXXLO0zjrrlOaYY47SiSeeWG35gQceWJpllllK48aN+81tXXPNNaWOHTtWnv/666+lq6++utSmTZvSsGHDKq9vuummpV69epWeeOKJ0quvvlrq06dPacEFFyyNHTs2L3/ppZdKLVu2LJ1wwgmld955J293xhlnzD/Diy++WGrVqlVp0KBBpREjRpReeeWV0nnnnZeXfffdd6WVV165tNdee5U+++yz/Ih21GaNNdYoHXTQQbUuu+GGG0pdu3Yt3X777aX3338//+zSpUtp4MCBlXXiWD399NOlDz74oHTPPfeU5pxzztJpp52Wl40ePbr017/+tbT44otX2hGvxbrxT5UhQ4ZUtjNy5Mj82qOPPpqfx894vtRSS5UGDx6cj90333xTOumkk0qLLrpo6f777y8NHz48H4927dqVHnvssUmek5qfsUePHvlzXHrppaV33323tO+++5Y6dOhQ2mCDDUq33nprPt6bb755Pj9xbZTPa5zD5ZdfvvTMM8/k87PCCiuUVllllcp277jjjrzORRddlLdx1lln5XP0yCOPVNaJzxTXWFwT0f44d3Fc4/V4TxyjOH/htttuy8vee++9fKw22WST0pJLLlkaP358Xl4+jnE87rvvvvz+rbbaKn++8rUa74vjE58xrrM333yzdMEFF5S++uqrvHxKjidAcyAQA0A9DB06NIeLCBw1g28EpQhmVUXYmXnmmSuPcoiJQBHbKb8eoTYCRjnIhghhsU4EybKvv/46B94IZGGHHXYorbfeetX2edhhh5UWW2yx/HsEpQhxo0aNqnfQrblehLiqn+WQQw7JyxZYYIEcuKuKABxhe1LOOOOM0nLLLVd5fuyxx5aWXnrpauvUJxDfddddlXV++eWX0kwzzZQDaVV77LFHafvtt69XIN5pp50qzyOExr6OPvroymvPPvtsfi2WVT2vzz333ETXzPPPP5+fRziOLyGq2nrrrUsbbbRR5Xms379//2rrlD9rHIPJiRAb673xxhvVjuOVV15ZWeett97Kr0XbQhyXVVddtdbtTenxBGgOmtbAHwBo4q6++urcpfSDDz5In3zySe5WOzkxmVZ0e33++efTTjvtlMe4lrVv3z698sor+ffRo0enhx56KO2zzz652+smm2yShg4dmsforrjiipX3xLLoYhvLQvyM7rtVrbrqquncc8/Nk4Gtt956uatvdFPeYIMN8uNPf/pT/gz1teOOO1abQCy66P7000+5e+4ee+yRu/WWxTjejh07Vp7fcsst6fzzz8/r/vjjj3l5jKFuKMsvv3zl92HDhuXjGZ+9qrFjx6ZlllmmXtuNLtFl0d08LLnkkhO99uWXX1a6kMc5+8Mf/lBZJ7qQx7GKc7XCCivkn3vvvfdE5yy6rk/qM01OdKE/5phj8jX29ddf5+7N4aOPPkpLLLFErZ+la9eulXZH+6Jb+tZbb13r9hvyeAI0NQIxANTRM888k84555w0ePDgPLY0QmCE2BifGWLMaIxfjbGxbdq0ya9FEIpHhOeaYrzwggsuWC2wxLZPO+20HIgbQjl0x1jb2HYEp5jR+cUXX8ztqo8IuFXbG7744ov884orrqgW3MuTkYUYqxphOsYJx7jU2E6Mv6451rm24xOqfokwqcmlYpxtWQTu8K9//SvNPffc1daLMcb1UT6PoXyea3utHEIbUtXPNDlxrcSXHnEOunXrltsSQTgCa1WTa3eMC56UhjyeAE2NSbUAoA6iQhaTGO277755YqKrrroqvfDCC+nSSy+trLP99tvn8FBzQqn6iBD5888/599jkqqopEblr+ybb77Js1AvtthilXViMqSq4nlMYFUOpFGxXHfddfOEXzFhV0yy9Mgjj+RlMalTVJKnVFRII4S9//77OSxXfcQETOUvEiKwRXU5qp7xxcGHH35YbTu1tWP22WfPP2MSs7KqE2xNShybCGpRIa3ZprhN1tQW56zqRFtxvmIysDhXkztn5XM6KeXJ26oep/L1EJO2rbPOOnnb5Ymw6iO+jHn44Yeb5PEEmJpUiAGgDuKWSVGpjJmmQ3SVPvPMM9Ohhx6aZ36O5yuvvHL661//mh8R+OK+xREYItBFgI6qXLnqGWJ7n3/+ef49QvCDDz6YHnjggVzFDREcozt0dEW+7LLLcrX373//e67SlbtJx76ie+6JJ56Yb/cU1dgLL7ywEsrvu+++HFZXX331PHPwv//971wVjG7X5c8RgTtCcsyaHLeRqtrGuojK74EHHpgrv9Ele8yYMTkQRjA75JBD8ueIMBVV4WhrVBrvvPPOatuIdkQ39Ai888wzT/6sUbVcaaWV8jGPcB3deyP4/ZZ4b5yXgw8+OH/WmIE57hkdoTO6affr1y9NTVGJjdnIo4t4fBlxwAEH5M8R3aXDYYcdlm+vFd2N44uKe++9N88AHb0NJie+VIhrKM7pRhttlI9PnNPoRn/55ZfnbtBxnOMamZLrO7qC77fffrnbfoTvRx99NHejnm222Rr1eAJMVY09iBkAmrqYSTdmAX7yyScnWrb++uuX1l577cosw+GWW27Js1HHLNIxEdU888yTJ7+qOtFSefKl8iMm1Fp44YVLJ598crWZnr/99tvSzjvvnLcVk2nFLNMx2VZVMctwTKIV+5p33nnzhFVl0eaYLKpz5875/THpV7SvLGYcXmmllfKyaEdMwDQlk2/deOONpd69e5fatm2b97X66qvn2ZSrTvQ166yz5lm4t91229I555xTbZbtmLhpyy23LHXq1Cm3ozy52Ntvv50n54r2xfZjJunaJtWqOdFUnI9zzz23tMgii+TjMvvss+dj9/jjj9drUq1oZ1WxrzvvvHOSE3+VZw+Pycx69uyZz+u6665b+vDDD6tt5+KLL87Lo21x3q+77rrJ7qcsZhOfa665Si1atCj169cvv/bggw/mma5jX3F+43qt+v66TE4W4n0x4VdsJ85DHK/ycZ2S4wnQHLSI/0zdyA0AUAxxH+L+/fvnLtIANH3GEAMAAFBIAjEAAACFpMs0AAAAhaRCDAAAQCEJxAAAABSSQAwAAEAhCcQAAAAUkkAMAABAIQnEAAAAFJJADAAAQCEJxAAAAKQi+v8AhgpVDDtlLf0AAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"plt.figure(figsize=(10,6))\n",
"sorted_idx = xgb_model.feature_importances_.argsort()\n",
"plt.barh(X.columns[sorted_idx], xgb_model.feature_importances_[sorted_idx])\n",
"plt.xlabel(\"XGBoost Feature Importance\")\n",
"plt.title(\"What drives Customer Churn?\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "0ea27fba",
"metadata": {},
"source": [
"# 🚀 Executive Summary: Churn Prediction Model\n",
"\n",
"### 1. Model Performance\n",
"Our XGBoost model prioritized **Recall (73%)** over precision. This ensures we capture the vast majority of at-risk customers, allowing the marketing team to intervene before it's too late.\n",
"\n",
"### 2. Key Driver Analysis\n",
"Using Feature Importance analysis, we discovered a critical insight:\n",
"* **Primary Driver: Purchase Frequency.**\n",
" * *Interpretation:* The number of times a user interacts with the platform is the strongest predictor of loyalty—far more than how much they spend (Monetary) or how recently they visited (Recency).\n",
" * *Risk:* \"One-time buyers\" are our highest risk segment.\n",
"\n",
"### 3. Recommended Retention Strategy\n",
"| Feature Driver | Insight | Recommended Action |\n",
"| :--- | :--- | :--- |\n",
"| **Low Frequency** | Users with 1-2 purchases are likely to drop. | **Action:** Implement a \"Second Purchase Bonus.\" Send a targeted offer immediately after the first delivery is received to encourage habit formation. |\n",
"| **High Monetary / High Risk** | High spenders flagged as churning are critical losses. | **Action:** VIP Outreach. Account managers should manually review these 100-200 high-value flags. |\n",
"| **High Recency** | Users silent for >60 days. | **Action:** Automated Re-engagement campaign (We miss you email). |"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "140f55d3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model saved successfully to ../models/churn_xgb_model.pkl\n"
]
}
],
"source": [
"import joblib\n",
"\n",
"# Define path\n",
"model_path = '../models/churn_xgb_model.pkl'\n",
"\n",
"# Save the trained XGBoost model\n",
"joblib.dump(xgb_model, model_path)\n",
"\n",
"print(f\"Model saved successfully to {model_path}\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}