{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us take a binary classification problem and explore how we can build Random forest model. using Python machine learning libraries \n",
    "\n",
    "- Random forest is a collection of unpruned trees created by CART (Classification and Regression Tree)\n",
    "\n",
    "- It consist of multiple single trees each based on a random sample of the training data. \n",
    "\n",
    "- The trees are created using sampling with replacement (called as Bootstrap Aggregating or Bagging).\n",
    "\n",
    "- CART models are developed for each sample obtained using Bagging, sampling of features (independent variables) is usually carried out.\n",
    "\n",
    "- Prediction is based on simple majority voting for classification and average for prediction.\n",
    "\n",
    "- They are typically more accurate than single decision trees."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Data structure Libraries\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "# Graphing Libraries\n",
    "import seaborn as sn \n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The dataset which we are using for this session is based on a telemarketing campaign carried out by a Portuguese bank for subscription of a term deposit. The data has several features related to the potential customers and whether they subscribed to the term deposit or not (outcome).\n",
    "\n",
    "### The objective, in this case, is to predict which customers may respond to their marketing campaign to open a term deposit with the bank. \n",
    "\n",
    "### The response variable (subscribed) = 1 implies that the customer subscribed a term deposit after the campaign and 0 indicates otherwise."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load the dataset as pandas dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "bank_df = pd.read_csv('bank.csv') "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View top 5 rows of data using head function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "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>age</th>\n",
       "      <th>job</th>\n",
       "      <th>marital</th>\n",
       "      <th>education</th>\n",
       "      <th>default</th>\n",
       "      <th>balance</th>\n",
       "      <th>housing-loan</th>\n",
       "      <th>personal-loan</th>\n",
       "      <th>current-campaign</th>\n",
       "      <th>previous-campaign</th>\n",
       "      <th>subscribed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>30</td>\n",
       "      <td>unemployed</td>\n",
       "      <td>married</td>\n",
       "      <td>primary</td>\n",
       "      <td>no</td>\n",
       "      <td>1787</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>33</td>\n",
       "      <td>services</td>\n",
       "      <td>married</td>\n",
       "      <td>secondary</td>\n",
       "      <td>no</td>\n",
       "      <td>4789</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>35</td>\n",
       "      <td>management</td>\n",
       "      <td>single</td>\n",
       "      <td>tertiary</td>\n",
       "      <td>no</td>\n",
       "      <td>1350</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>30</td>\n",
       "      <td>management</td>\n",
       "      <td>married</td>\n",
       "      <td>tertiary</td>\n",
       "      <td>no</td>\n",
       "      <td>1476</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>59</td>\n",
       "      <td>blue-collar</td>\n",
       "      <td>married</td>\n",
       "      <td>secondary</td>\n",
       "      <td>no</td>\n",
       "      <td>0</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   age          job  marital  education default  balance housing-loan  \\\n",
       "0   30   unemployed  married    primary      no     1787           no   \n",
       "1   33     services  married  secondary      no     4789          yes   \n",
       "2   35   management   single   tertiary      no     1350          yes   \n",
       "3   30   management  married   tertiary      no     1476          yes   \n",
       "4   59  blue-collar  married  secondary      no        0          yes   \n",
       "\n",
       "  personal-loan  current-campaign  previous-campaign  subscribed  \n",
       "0            no                 1                  0           0  \n",
       "1           yes                 1                  4           0  \n",
       "2            no                 1                  1           0  \n",
       "3           yes                 4                  0           0  \n",
       "4            no                 1                  0           0  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bank_df.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Understand the meta data of the dataset using shape variable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4521, 11)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bank_df.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us look at how many people subscribed for bank deposit out of 4521 customer records"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    4000\n",
       "1     521\n",
       "Name: subscribed, dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bank_df['subscribed'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### In terms of percentage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    88.5\n",
       "1    11.5\n",
       "Name: subscribed, dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "round(bank_df['subscribed'].value_counts(normalize=True) * 100, 1) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dealing with Imbalanced Datasets\n",
    "\n",
    "Bank marketing dataset the proportion of customers who responded to the telemarketing is approximately 11.5% and the remaining 88.5% did not respond. \n",
    "\n",
    "In such cases, the model may not be able to learn and may be biased towards the class that is over-represented.\n",
    "\n",
    "Even if the model predicts that no customer will subscribe (all negatives), it will have an accuracy of more than 88%. This is called **Accuracy Paradox**\n",
    "\n",
    "To deal with imbalanced dataset, we can use resampling techniques such as upsampling and downsampling.\n",
    "\n",
    "1. **Upsampling**: Increase the instances of under-represented minority class by replicating the existing observations in the dataset. Sampling with replacement is used for this purpose and is also called Oversampling.\n",
    "\n",
    "2. **Downsampling**: Reduce the instances of over-represented majority class by removing the existing observations from the dataset and is also called Undersampling."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Importing resample from *sklearn.utils* package.\n",
    "from sklearn.utils import resample"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us separate the dataset into 2 where we one dataset with subscribed customers and another with not subscribed customers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "bank_subscribed_no = bank_df[bank_df.subscribed == 0] \n",
    "bank_subscribed_yes = bank_df[bank_df.subscribed == 1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### We will use Upsampling technique to increase instances subscribed customers using replacement"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_minority_upsampled = resample(bank_subscribed_yes, replace=True, n_samples=2000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Now combine the majority class (dataset with not subscribed customers) and upsampled minority class (dataset with subscribed customers)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "new_bank_df = pd.concat([bank_subscribed_no, df_minority_upsampled])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Shuffle the dataset before creating model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.utils import shuffle \n",
    "new_bank_df = shuffle(new_bank_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### As you can see with resampled subscribed customers data, we now have 6000 records of data to build the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6000, 11)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_bank_df.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### If we look for data split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    4000\n",
       "1    2000\n",
       "Name: subscribed, dtype: int64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_bank_df['subscribed'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Now it looks more balanced dataset with 33% subscribed customers and 67% not subscribed customers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    66.7\n",
       "1    33.3\n",
       "Name: subscribed, dtype: float64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "round(new_bank_df['subscribed'].value_counts(normalize=True) * 100, 1) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Segregate the columns as Features and Response variables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['age',\n",
       " 'job',\n",
       " 'marital',\n",
       " 'education',\n",
       " 'default',\n",
       " 'balance',\n",
       " 'housing-loan',\n",
       " 'personal-loan',\n",
       " 'current-campaign',\n",
       " 'previous-campaign']"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Assigning list of all column names in the DataFrame \n",
    "X_features = list( new_bank_df.columns )\n",
    "\n",
    "# Remove the response variable from the list \n",
    "X_features.remove('subscribed')\n",
    "X_features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Using get_dummies() function of pandas we will encode the all the columns with data type as objects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "encoded_bank_df = pd.get_dummies( new_bank_df[X_features], drop_first = True )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Create X which would have all the data of Feature column and Y with the data of Response column"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = encoded_bank_df\n",
    "Y = new_bank_df['subscribed']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Now split the dataset into train and test sets in 70:30 ratio, respectively."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "train_X, test_X, train_y, test_y = train_test_split(X, Y, test_size=0.3, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Check the size of training and testing dataset "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(4200, 23)\n",
      "(1800, 23)\n"
     ]
    }
   ],
   "source": [
    "print(train_X.shape)\n",
    "print(test_X.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Check the size of training and testing dataset similar datasplit in terms of subscribed and not subscribed customers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training data split:\n",
      " 0    66.452381\n",
      "1    33.547619\n",
      "Name: subscribed, dtype: float64 \n",
      "\n",
      "Testing data split:\n",
      " 0    67.166667\n",
      "1    32.833333\n",
      "Name: subscribed, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print(\"Training data split:\\n\", train_y.value_counts(normalize=True) * 100, \"\\n\")\n",
    "print(\"Testing data split:\\n\", test_y.value_counts(normalize=True) * 100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Building Random Forest Model "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Importing Random Forest Classifier from the sklearn.ensemble\n",
    "from sklearn.ensemble import RandomForestClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The hyperparameters in a Random Forest model are\n",
    "\n",
    "1. n_estimators = number of trees in the forest (default = 10)\n",
    "2. criterion = (gini / Entropy) The function to measure the quality of a split. (default = gini)\n",
    "3. max_features = max number of features considered for splitting a node\n",
    "4. max_depth = max number of levels in each decision tree\n",
    "5. min_samples_split = min number of data points placed in a node before the node is split (default=2)\n",
    "6. min_samples_leaf = min number of data points allowed in a leaf node (default = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(max_depth=10, n_estimators=10)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Initializing the Random Forest Classifier with max_depth and n_estimators\n",
    "radm_clf = RandomForestClassifier(max_depth=10, n_estimators=10) \n",
    "radm_clf.fit( train_X, train_y )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Predict on the test data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred_y = radm_clf.predict(test_X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Check the accuracy and other model metrics using confusion matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Importing the metrics\n",
    "from sklearn import metrics\n",
    "\n",
    "## Defining the matrix to draw the confusion matrix from actual and \n",
    "## predicted class labels\n",
    "def draw_cm( actual, predicted ):\n",
    "    cm = metrics.confusion_matrix( actual, predicted, [0,1] )\n",
    "    sn.heatmap(cm, annot=True, fmt='.2f', \n",
    "               xticklabels = ['Not Subscribed', 'Subscribed'], \n",
    "               yticklabels = ['Not Subscribed', 'Subscribed'] ) \n",
    "    plt.ylabel('True label')\n",
    "    plt.xlabel('Predicted label') \n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def print_model_metrics(test_y, pred_y):\n",
    "    print( metrics.classification_report( test_y, pred_y ) )\n",
    "    print('accuracy = ', round(float(metrics.accuracy_score(test_y, pred_y)), 2))\n",
    "    print('recall = ', round(float(metrics.recall_score(test_y, pred_y)), 2))\n",
    "    print('precision = ', round(float(metrics.precision_score(test_y, pred_y)), 2))\n",
    "    print('roc_auc = ', round(float(metrics.roc_auc_score(test_y, pred_y)), 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.79      0.93      0.85      1209\n",
      "           1       0.78      0.48      0.60       591\n",
      "\n",
      "    accuracy                           0.79      1800\n",
      "   macro avg       0.78      0.71      0.72      1800\n",
      "weighted avg       0.78      0.79      0.77      1800\n",
      "\n",
      "accuracy =  0.79\n",
      "recall =  0.48\n",
      "precision =  0.78\n",
      "roc_auc =  0.71\n"
     ]
    }
   ],
   "source": [
    "cm = draw_cm( test_y, pred_y )\n",
    "\n",
    "print_model_metrics(test_y, pred_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "## The method takes the three following parameters\n",
    "## model: the classification model\n",
    "## test_X: X features of the test set\n",
    "## test_y: actual labels of the test set\n",
    "## Returns\n",
    "## - ROC Auc Score\n",
    "## - FPR and TPRs for different threshold values\n",
    "\n",
    "def draw_roc_curve( model, test_X, test_y ):\n",
    "    ## Creating and initializing a results DataFrame with actual labels\n",
    "    \n",
    "    test_results_df = pd.DataFrame( { 'actual': test_y } )\n",
    "    test_results_df = test_results_df.reset_index()\n",
    "    \n",
    "    # predict the probabilities on the test set\n",
    "    predict_proba_df = pd.DataFrame( model.predict_proba( test_X ) )\n",
    "    \n",
    "    ## selecting the probabilities that the test example belongs to class 1\n",
    "    test_results_df['chd_1'] = predict_proba_df.iloc[:,1:2]\n",
    "    \n",
    "    ## Invoke roc_curve() to return the fpr, tpr and threshold values.\n",
    "    ## threshold values contain values from 0.0 to 1.0\n",
    "    fpr, tpr, thresholds = metrics.roc_curve( \n",
    "        test_results_df.actual, test_results_df.chd_1, drop_intermediate = False )\n",
    "    \n",
    "    ## Getting the roc auc score by invoking metrics.roc_auc_score method\n",
    "    auc_score = metrics.roc_auc_score( test_results_df.actual, test_results_df.chd_1 )\n",
    "    \n",
    "    ## Setting the size of the plot\n",
    "    plt.figure(figsize=(8, 6))\n",
    "    \n",
    "    ## plotting the actual fpr and tpr values\n",
    "    plt.plot( fpr, tpr, label='ROC curve (area = %0.2f)' % auc_score )\n",
    "    \n",
    "    ## plotting th diagnoal line from (0,1)\n",
    "    plt.plot([0, 1], [0, 1], 'k--')\n",
    "    plt.xlim([0.0, 1.0])\n",
    "    plt.ylim([0.0, 1.05])\n",
    "    \n",
    "    ## Setting labels and titles\n",
    "    plt.xlabel('False Positive Rate or [1 - True Negative Rate]')\n",
    "    plt.ylabel('True Positive Rate')\n",
    "    plt.title('Receiver operating characteristic example')\n",
    "    plt.legend(loc=\"lower right\")\n",
    "    plt.show()\n",
    "    \n",
    "    return auc_score, fpr, tpr, thresholds"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us draw the roc_auc curve to check the model "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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QU6HppRSygdokneQiBATE0OvXr3YuHEjbdq0cTokpZRSPsT7quu9XGpqKu+99x7XXXcdzZs35+2338bf39/psJRSSvkgLcnnokOHDnHzzTczePBgZsyYAaAJXimllMdoks8lX375JfXr12fZsmVMmTKFSZMmOR2SUkopH6fV9blg3rx5dO/enWbNmjFz5kyuvfZap0NSSimVD2hJ3oNOnz4NwG233ca0adP4888/NcErpZTKNZrkPSAhIYGnnnqKWrVqER0dTUBAAI888oiO+a6UUipXadbJYevXr6dnz55s2bKFxx9/nEKFCjkdklJKqXxKS/I5JDU1lfHjx9OsWTNiYmL48ccfmTRpEgUL+k7PfEoppbyLJvkcIiKsWLGCrl27snnzZrp06eJ0SEoppfI5ra6/CsYYPv30U1q1akX16tWZPXs2QUFBPjtCnlJKKe+iJfkrFB0dzd13303fvn3T7nkPDg7WBK+UUirP0JL8FViwYAH9+vXj5MmTTJgwgaFDhzodklJKKXUJTfLZ9Pnnn3P//fdTv359fvrpJyIiIpwOSSmllMqQJnk3JSYmEhQURNeuXXnllVcYNmyYDgmrlA9LSkoiKiqKhIQEp0NR+UhwcDDh4eEUKFAgR7anST4LSUlJvPzyy3z99desXr2aQoUK8dxzzzkdllLKw6KioihSpAiVK1fWtjYqVxhjiImJISoqiipVquTINrXhXSa2b99OixYtePHFF2natCkpKSlOh6SUyiUJCQmULFlSE7zKNSJCyZIlc7T2SJN8BowxTJ48mUaNGrF3717mzJnD9OnTKVKkiNOhKaVykSZ4ldty+jun1fUZSElJYebMmbRt25aPP/6YsmXLOh2SUkoplW1eV5JPSErBGM9s++uvv+b48eMEBATw448/8sMPP2iCV0o5xt/fn4YNG1KvXj1uv/12Tp06lTZvy5YtdOjQgWuvvZYaNWrw0ksvYVx+HH/88UeaNm1K7dq1qVWrFk8//bQD7yBz69at4+GHH3Y6jMtKTEyke/fuVK9enebNm7Nv374Ml/v888+pX78+ERERdOnShePHj180f86cOYgIkZGRgNXPSm71iup1SR6gRKGcaXV4walTp+jVqxf33HMPb7zxBgDFixfXqjqllKNCQkJYv349mzdvpkSJEkyePBmA+Ph4unbtyogRI9ixYwcbNmxg+fLlvPfeewBs3ryZQYMGMWvWLLZt28bmzZupWrVqjsaWnJx81dt45ZVXGDx4cK7uMzs++ugjihcvzq5duxg6dCjDhw/PMKYnnniC3377jY0bNxIREZHWQRrA2bNneeedd2jevHnaa2FhYZQtW5Y///zT4+/BK6vrO9QqnWPbWrJkCb179+bw4cOMHTuWUaNG5di2lVK+4YX5W9h6+EyObrNOuaKMvb2u28vfcMMNbNy4EYD//e9/tGzZks6dOwNQsGBBJk2aRLt27Xj88cf5v//7P0aNGkWtWrUACAgIYODAgZdsMzY2lsGDBxMZGYmIMHbsWO6++24KFy5MbGwsYJVCv//+e6ZPn06fPn0oUaIE69ato2HDhnzzzTesX7+eYsWKAVC9enX+/PNP/Pz8GDBgAAcOHADgrbfeomXLlhft++zZs2zcuJEGDRoAsHr1ap588kni4+MJCQnhk08+oWbNmkyfPp0FCxaQkJBAXFwc8+fPZ/DgwWzatInk5GTGjRvHHXfcwb59++jVqxdxcXEATJo0iRYtWrh9fDPy7bffMm7cOADuueceBg0ahDHmogKgMQZjDHFxcZQsWZIzZ85QvXr1tPljxozh2WefZeLEiRdt+8477+Szzz675LjkNK9M8jnl008/pW/fvmlfTNczLaWUyitSUlL45Zdf6NevH2BV1Tdp0uSiZapVq0ZsbCxnzpxh8+bNPPXUU1lu96WXXiI0NJRNmzYBcPLkySzX2bFjBz///DP+/v6kpqbyzTff0LdvX1atWkXlypUpU6YM999/P0OHDqVVq1YcOHCAm266iW3btl20ncjISOrVq5c2XatWLZYuXUpAQAA///wzI0eO5OuvvwZgxYoVbNy4kRIlSjBy5Eg6dOjAxx9/zKlTp2jWrBkdO3akdOnSLF68mODgYHbu3EmPHj3SqsddtW7dmrNnz17y+sSJE+nYseNFrx06dIgKFSoA1olSaGgoMTExlCpVKm2ZAgUKMGXKFOrXr0+hQoWoUaNGWo3LunXrOHjwILfddtslSb5p06aMHj06y+N9tfJlkk9NTcXPz48uXbrw1FNPMW7cOB33XSl1Wdkpceek+Ph4GjZsyL59+2jSpAmdOnUCuKQ06So7lxl//vlnZs+enTZdvHjxLNe599578ff3B6B79+68+OKL9O3bl9mzZ9O9e/e07W7dujVtnTNnznD27NmL7lA6cuQIYWFhadOnT5/mwQcfZOfOnYgISUlJafM6depEiRIlAPjpp5/47rvv0pJmQkICBw4coFy5cgwaNIj169fj7+/Pjh07Moz/jz/+yPI9XmAyaACW/vgmJSUxZcoU1q1bR9WqVRk8eDCvvvoqI0eOZOjQoUyfPj3DbZcuXZrDhw+7HcuV8spr8lcqJSWFCRMm0LlzZ1JSUihTpgwTJkzQBK+UypMuXJPfv38/58+fTysh1q1b95JS6p49eyhcuDBFihShbt26rF27NsvtX+5kwfW19Pdsu/5e3nDDDezatYvo6GjmzZvHXXfdBVgFqRUrVrB+/XrWr1/PoUOHLrkFOSQk5KJtjxkzhvbt27N582bmz59/0TzXfRpj+Prrr9O2feDAAWrXrs2bb75JmTJl2LBhA5GRkZw/fz7D99y6dWsaNmx4yePnn3++ZNnw8HAOHjwIWNfeT58+nXayccH69esBqyZFRLjvvvtYvnw5Z8+eZfPmzbRr147KlSuzcuVKunbtmva5JSQkEBISkmGMOSnfJPl9+/bRoUMHnn32WUJDQzl37pzTISmllFtCQ0N55513mDhxIklJSTzwwAMsW7YsLTHFx8czZMgQnn32WQCeeeYZXnnllbTSbGpqalqjYledO3e+qJHYher6MmXKsG3btrTq+MsREbp168awYcOoXbs2JUuWzHC7FxKhq9q1a7Nr16606dOnT1O+fHmAy5Z+AW666SbefffdtFL2unXr0tYvW7Ysfn5+zJw587Kdl/3xxx9pJwiuj/RV9QBdu3bl008/Bay2CR06dLjkpKh8+fJs3bqV6OhoABYvXkzt2rUJDQ3l+PHj7Nu3j3379nH99dfz3Xff0bRpU8C67OF6ucJTfD7JXxjzPSIignXr1vHpp58yZ84c7dhGKeVVGjVqRIMGDZg9ezYhISF8++23vPzyy9SsWZP69etz3XXXMWjQIAAiIiJ466236NGjB7Vr16ZevXocOXLkkm2OHj2akydPUq9ePRo0aMBvv/0GwGuvvcZtt91Ghw4dsryNuHv37syaNSutqh7gnXfeITIykoiICOrUqcPUqVMvWa9WrVqcPn067fr4s88+y3PPPUfLli0z7V10zJgxJCUlERERQb169RgzZgwAAwcO5NNPP+X6669nx44dOVJD269fP2JiYqhevTpv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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, _, _, _ = draw_roc_curve( radm_clf, test_X, test_y );"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Find Optimal Parameters\n",
    "\n",
    "1. n_estimators: integer – The number of trees in the forest.\n",
    "2. max_feature: int, float – The number of features to be used for each tree.\n",
    " - If int, then consider max_features for each tree.\n",
    " - If float, then max_features is a percentage and int(max_features * n_features) features are considered for each tree.\n",
    "     - If “auto”, then max_features = sqrt(n_features).\n",
    "     - If “sqrt”, then max_features = sqrt(n_features) (same as “auto”).\n",
    "     - If “log2”, then max_features = log2(n_features).\n",
    "3. max_depth: integer – The maximum depth of the tree."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "## Configuring parameters and values for searched \n",
    "tuned_parameters = [{'max_depth': [10, 15], \n",
    "                     'n_estimators': [10,20], \n",
    "                     'max_features': ['sqrt', 0.2]}]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### We will be using GridSearchCV to build multiple random forest model for each of these combination \n",
    "- Model to be built\n",
    "- param_grid: Dictionary with hyper parameters \n",
    "- Scoring: Strategy to evaluate the performance of the cross-validated model on the test set.\n",
    "- cv: Determines the cross-validation splitting strategy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, estimator=RandomForestClassifier(),\n",
       "             param_grid=[{'max_depth': [10, 15], 'max_features': ['sqrt', 0.2],\n",
       "                          'n_estimators': [10, 20]}],\n",
       "             scoring='roc_auc')"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Initializing the RF classifier \n",
    "radm_clf = RandomForestClassifier()\n",
    "\n",
    "## Configuring search with the tunable parameters \n",
    "clf = GridSearchCV(radm_clf, tuned_parameters, cv=5, scoring='roc_auc')\n",
    "\n",
    "## Fitting the training set \n",
    "clf.fit(train_X, train_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### best_params_ variable provides the hyper parameters for which we achived best results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': 15, 'max_features': 'sqrt', 'n_estimators': 20}"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.best_params_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Initializing the Random Forest Model with the optimal values and Fitting the model with the training set "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(max_depth=15, max_features=0.2, n_estimators=20)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "radm_clf = RandomForestClassifier(max_depth=15, max_features=0.2, n_estimators=20)\n",
    "\n",
    "radm_clf.fit( train_X, train_y )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us check the optimal random forest model metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.92      0.93      0.92      1209\n",
      "           1       0.86      0.83      0.84       591\n",
      "\n",
      "    accuracy                           0.90      1800\n",
      "   macro avg       0.89      0.88      0.88      1800\n",
      "weighted avg       0.90      0.90      0.90      1800\n",
      "\n",
      "accuracy =  0.9\n",
      "recall =  0.83\n",
      "precision =  0.86\n",
      "roc_auc =  0.88\n"
     ]
    }
   ],
   "source": [
    "pred_y = radm_clf.predict(test_X)\n",
    "\n",
    "cm = draw_cm( test_y, pred_y )\n",
    "\n",
    "print_model_metrics(test_y, pred_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us draw the roc_auc curve to check the model "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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xo4dS506dYIOSURE8gGV5CNo586dAFx88cWMHj2a7777TgleRERyjZJ8BBw4cIDbb7+devXqsWXLFgoWLMiNN96oMd9FRCRXKevksHnz5nHttdeyePFi/vWvf1G8ePGgQxIRkXxKJfkckpqaymOPPUbLli3ZunUrn376KSNGjKBYsWJBhyYiIvmUknwOMTNmzpxJ586dWbRoEeeff37QIYmISD6n6vrj4Jzjtdde46yzzqJWrVqMGzeOIkWKYGZBhyYiIqKS/LHasmULl19+Ob169Uq75z0+Pl4JXkRE8gyV5I/BJ598Qu/evdm+fTvDhg1j0KBBQYckIiLyN0ry2fT2229z9dVX07hxYz7//HMSExODDklERCRDSvJhOnjwIEWKFKFz58488sgj3HbbbRoSViSGJSUlsW7dOg4cOBB0KJKPxMfHk5CQQKFChXJkexqFLgtJSUk89NBDTJgwgR9//FG3xInkE7///jslS5akfPnyamsjucI5x9atW9m9ezc1a9Y8Yp5GoYuApUuXcuaZZ/LAAw/QokULUlJSgg5JRHLJgQMHlOAlV5kZ5cuXz9HaIyX5DDjneO655zj11FP5/fffGT9+PGPGjKFkyZJBhyYiuUgJXnJbTp9zuiafgZSUFMaOHUvbtm155ZVXqFy5ctAhiYiIZJtK8iEmTJjAn3/+ScGCBfn000+ZPHmyEryIBCYuLo6mTZvSqFEjLrnkEnbs2JE2b/HixZxzzjnUqVOH2rVr8+CDDxLaxurTTz+lRYsW1K9fn3r16nHHHXcE8A4yN3fuXG644YagwziqgwcP0rVrV2rVqkWrVq1YtWpVhsu98847JCYm0rBhQ+66666018eMGUPFihVp2rQpTZs25aWXXgK8flZyq1dUJXlgx44ddO/enSuuuILhw4cDULZsWVXViUigihYtyrx581i0aBHlypXjueeeA2D//v107tyZe+65h99++4358+fz/fffM3LkSAAWLVpE//79eeONN/jll19YtGgRJ598co7GlpycfNzbeOSRRxgwYECu7jM7Xn75ZcqWLcvy5csZNGgQd99999+W2bp1K3feeSfTpk1j8eLF/PHHH0ybNi1tfteuXZk3bx7z5s1L+0FTsWJFKleuzHfffRfx95Dvq+u//vprevTowYYNGxg6dCj33ntv0CGJSB7z30mLWbJhV45us0GVUgy9pGHYy59xxhksWLAAgLfeeovWrVvTqVMnAIoVK8aIESNo164d//rXv/i///s/7r33XurVqwdAwYIF6dev39+2uWfPHgYMGMDs2bMxM4YOHcrll19OiRIl2LNnDwDjx4/n448/ZsyYMfTs2ZNy5coxd+5cmjZtygcffMC8efMoU6YMALVq1eK7776jQIEC9O3blzVr1gDw1FNP0bp16yP2vXv3bhYsWECTJk0A+PHHH7n11lvZv38/RYsW5dVXX6Vu3bqMGTOGTz75hAMHDrB3714mTZrEgAEDWLhwIcnJydx///106dKFVatW0b17d/bu3QvAiBEjOPPMM8M+vhn58MMPuf/++wG44oor6N+/P865IwqAK1eupE6dOlSsWBGAjh07MmHCBDp06JDpti+99FLefPPNvx2XnJavk/xrr71Gr1690k7MVq1aBR2SiMjfpKSkMG3aNHr37g14VfXNmzc/YplTTjmFPXv2sGvXLhYtWsTtt9+e5XYffPBBSpcuzcKFCwHYvn17luv89ttvfPHFF8TFxZGamsoHH3xAr169mDVrFjVq1KBSpUpcffXVDBo0iLPOOos1a9Zw3nnn8csvvxyxndmzZ9OoUaO06Xr16jF9+nQKFizIF198weDBg5kwYQIAM2fOZMGCBZQrV47Bgwdzzjnn8Morr7Bjxw5atmxJx44dOeGEE5g6dSrx8fEsW7aMbt26MXv27L/Ff/bZZ7N79+6/vf7444/TsWPHI15bv3491apVA7wfSqVLl2br1q1UqFAhbZlatWrx66+/smrVKhISEpg4cSKHDh1Kmz9hwgSmT59OnTp1ePLJJ9O216JFC+67774sj/fxypdJPjU1lQIFCnD++edz++23c//992vcdxE5quyUuHPS/v37adq0KatWraJ58+ace+65AH8rTYbKzmXGL774gnHjxqVNly1bNst1rrzySuLi4gCvKvqBBx6gV69ejBs3jq5du6Ztd8mSJWnr7Nq1i927dx9xh9LGjRvTSr8AO3fu5LrrrmPZsmWYGUlJSWnzzj33XMqVKwfA559/zkcffcTjjz8OeLc6rlmzhipVqtC/f3/mzZtHXFwcv/2WcX8q3377bZbv8bCM+pFJf3zLli3L888/T9euXSlQoABnnnkmK1euBOCSSy6hW7duFClShFGjRnHdddfx5ZdfAnDCCSewYcOGsGM5VvnqmnxKSgrDhg2jU6dOpKSkUKlSJYYNG6YELyJ50uFr8qtXr+bQoUNp1+QbNmz4t1LqypUrKVGiBCVLlqRhw4bMmTMny+0f7cdC6Gvp79kO/b4844wzWL58OVu2bGHixIn84x//ALyC1MyZM9OuRa9fv/5vtyAXLVr0iG0PGTKE9u3bs2jRIiZNmnTEvNB9OueYMGFC2rbXrFlD/fr1efLJJ6lUqRLz589n9uzZR5SmQ5199tlpDeFCH1988cXflk1ISGDt2rWA1x5g586daT82Ql1yySXMmjWLmTNnUrduXWrXrg1A+fLl03pGvfHGG4/4TA4cOEDRokUzjDEn5Zskv2rVKs455xzuuusuSpcuzb59+4IOSUQkLKVLl+aZZ57h8ccfJykpiWuuuYYZM2akJab9+/czcODAtJbdd955J4888khaaTY1NTWtUXGoTp06pY2iCX9V11eqVIlffvklrTr+aMyMyy67jNtuu4369etTvnz5DLc7b968v61bv359li9fnja9c+dOqlatCnit0o/mvPPO49lnn00rZc+dOzdt/cqVK1OgQAHGjh171M7Lvv3227QfCKGP9FX1AJ07d+a1114DvLYJ55xzToY/ijZv3gx4x2/kyJFpDew2btyYtsxHH31E/fr106Z/++23Iy5XRErMJ/nDY74nJiYyd+5cXnvtNcaPH6+ObUQkqpx66qk0adKEcePGUbRoUT788EMeeugh6tatS+PGjTnttNPo378/AImJiTz11FN069aN+vXr06hRoyMSzmH33Xcf27dvp1GjRjRp0oSvvvoKgEcffZSLL76Yc845J8vbiLt27cobb7yRVlUP8MwzzzB79mwSExNp0KABo0aN+tt69erVY+fOnWnXx++66y7+/e9/07p160x7Fx0yZAhJSUkkJibSqFEjhgwZAkC/fv147bXXOP300/ntt99ypIa2d+/ebN26lVq1ajF8+HAeffTRtHlNmzZNe37LLbfQoEEDWrduzT333EOdOnXSjkPDhg1p0qQJzzzzzBE/Xr766isuuuii444xKzHfd/3+/ftp3LgxVatW5bXXXqNGjRqRC05EYsYvv/xyRMlLct6TTz5JyZIl8/S98pHSpk0bPvzwwwzbQWR07qnv+nS++OKLtFsxvv76a7788ksleBGRPOTmm2/Ol6N5btmy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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, _, _, _ = draw_roc_curve( radm_clf, test_X, test_y );"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Finding Imporant Features\n",
    "\n",
    "Feature importance is calculated for a feature by multiplying error reduction at any node by the feature with the proportion of samples reaching that node. Then the values are averaged over all the trees to find final feature importance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "# Create a dataframe to store the features and their corresponding # importances\n",
    "feature_rank = pd.DataFrame( { 'feature': train_X.columns, \n",
    "                              'importance': radm_clf.feature_importances_ } )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sorting the features based on their importances with most important feature at top."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "feature_rank = feature_rank.sort_values('importance', ascending = False) \n",
    "sn.barplot( y = 'feature', x = 'importance', data = feature_rank );"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The cumulative sum of features importance can show the amount of variance explained by the top six features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "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>feature</th>\n",
       "      <th>importance</th>\n",
       "      <th>cumsum</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>balance</td>\n",
       "      <td>0.258728</td>\n",
       "      <td>25.872773</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>age</td>\n",
       "      <td>0.210169</td>\n",
       "      <td>46.889651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>previous-campaign</td>\n",
       "      <td>0.110214</td>\n",
       "      <td>57.911023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>current-campaign</td>\n",
       "      <td>0.104082</td>\n",
       "      <td>68.319253</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>housing-loan_yes</td>\n",
       "      <td>0.048177</td>\n",
       "      <td>73.136973</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>personal-loan_yes</td>\n",
       "      <td>0.030535</td>\n",
       "      <td>76.190506</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>marital_married</td>\n",
       "      <td>0.027477</td>\n",
       "      <td>78.938174</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>education_secondary</td>\n",
       "      <td>0.022449</td>\n",
       "      <td>81.183051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>job_blue-collar</td>\n",
       "      <td>0.022360</td>\n",
       "      <td>83.419097</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>education_tertiary</td>\n",
       "      <td>0.021764</td>\n",
       "      <td>85.595478</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                feature  importance     cumsum\n",
       "1               balance    0.258728  25.872773\n",
       "0                   age    0.210169  46.889651\n",
       "3     previous-campaign    0.110214  57.911023\n",
       "2      current-campaign    0.104082  68.319253\n",
       "21     housing-loan_yes    0.048177  73.136973\n",
       "22    personal-loan_yes    0.030535  76.190506\n",
       "15      marital_married    0.027477  78.938174\n",
       "17  education_secondary    0.022449  81.183051\n",
       "4       job_blue-collar    0.022360  83.419097\n",
       "18   education_tertiary    0.021764  85.595478"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature_rank['cumsum'] = feature_rank.importance.cumsum() * 100 \n",
    "feature_rank.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Now let us look at Boosting techniques. \n",
    "\n",
    "- Attempts to overcome the drawbacks of Bagging and Random Forest.\n",
    "- In Random Forest, each classifier (Tree) is given equal weight in final classification. But in Boosting algorithms a differential weights to individual classifier is given based on the accuracy of the classifier."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us build a AdaBoost classification model for the bank subscriber dataset whcih we have been using in this module  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### AdaBoost  \n",
    "- In contrast to Random forest, In AdaBoost the trees are, the trees with a node and two leaves\n",
    "\n",
    "- A tree with one node and two leaves is called as “Stump”\n",
    "\n",
    "- Technically Stumps are weak learners\n",
    "\n",
    "- Some Stumps will have more say in final classification\n",
    "\n",
    "- In each iteration, the cases from the data set that are misclassified are given higher probability of selection into the next sample."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Importing AdaBoost classifier\n",
    "from sklearn.ensemble import AdaBoostClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Hyper parameters for AdaBoost\n",
    "1. base_estimator: This is the base learner used in AdaBoost algorithms. The default and most common learner is a decision tree stump (a decision tree with max_depth=1)\n",
    "\n",
    "2. n_estimators: The maximum number of estimators (models) to train sequentially. The default is 50. \n",
    "\n",
    "3. learning_rate: Learning rate shrinks the contribution of each classifier. It determines the weight applied to each estimator in the boosting process. The default is 1. Smaller values such as 0.05, 0.1 force the algorithm to train slower but with high-performance scores."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "AdaBoostClassifier()"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Initializing AdaBoost classifier with 50 classifers \n",
    "ada_clf = AdaBoostClassifier(n_estimators=50)\n",
    "\n",
    "## Fitting AdaBoost model to training set \n",
    "ada_clf.fit(train_X, train_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Check the accuracy and other model metrics using confusion matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.74      0.88      0.80      1209\n",
      "           1       0.60      0.38      0.47       591\n",
      "\n",
      "    accuracy                           0.71      1800\n",
      "   macro avg       0.67      0.63      0.64      1800\n",
      "weighted avg       0.70      0.71      0.69      1800\n",
      "\n",
      "accuracy =  0.71\n",
      "recall =  0.38\n",
      "precision =  0.6\n",
      "roc_auc =  0.63\n"
     ]
    }
   ],
   "source": [
    "pred_y = ada_clf.predict(test_X)\n",
    "\n",
    "cm = draw_cm( test_y, pred_y )\n",
    "\n",
    "print_model_metrics(test_y, pred_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us draw the roc_auc curve to check the model "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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TTt0JpbxS3bx95HznImx7oANyuNLq2ohVCkexPDba+Dro4PHeJKkpCTefPNNxo4dS1hYGOvWrdMBgGx0o0le+65XSt0wYwzfbgxn7MId+PkI9csVIj4phcdbV6Z55aIEBehXjCfav38/PXv2ZM2aNTzyyCNMmTJFE7yH0v9ApdQNibyYyEvfbWPxthM0r1yEiQ+HUbqQVuN6uj179tCwYUP8/f356quv6Natm90hqZugSV4pdUNeWbidZTtO8sIdNRnYurJWx3u4pKQk/Pz8qFatGiNGjKBv376UK1cu8w1VjqZJXil1TcYYVu8/y087Tl5VXbvu4DnCyhXiibZVbIpOZZUFCxbw7LPPsnz5cipXrswrr7xid0gqi2iSV0ql69d/TvG/pbv552Q0AAXzXt1BTYPyhbI5KpWVoqOjefrpp/n8889p0KABiYmJdoekspgmeaXUFV5esI1Za4+kTndrWp4uYaVpXrmojVGprLZy5Up69erF4cOHeemllxgzZgx58uSxOyyVxTTJK5VLvfvzHj778+BVfU3HJiTRrFIRmlUuyl31SlKz5FU9TSsv8OWXXyIirFixghYtWtgdjnITTfJK5SJnY+L5Y08Ep6PjeffnvbSqVozqJYKvWMfPR+h9a0VtKe+FduzYQVJSEvXr1+ett94iJSWF4ODgzDdUHkuTvFK5yMcrDvDRCqvn6FqlCvBJr8YE+mtXst4uJSWF999/n5EjR9KsWTP++OMPgoKC7A5LZQNN8krlAtuPRbLjeCQfrThAoL8PPz3dhpIFA8nj586BKFVOEB4eTp8+ffjll1+45557+PTTT+0OSWUjTfJKebmTkZe454OVqdN31StF+aL5bIxIZZetW7fSpk0bEhMT+eSTT+jfv7/2XJfLaJJXysst23ESgGG3VePueqWoUVKvwXo7YwwiQq1atejWrRvDhw+natWqdoelbKB1dUp5sQnL/uG/i3ZQskAgneuX1gSfCyxfvpxmzZpx9uxZ/P39mTJliib4XEyTvFJebPJv+0kxsHx4a6oWz293OMqN4uLieOqpp+jYsSPR0dFERETYHZLKATTJK+Wl1h08B8D//acewYFX91anvMfGjRtp2LAh77//PsOGDePvv/+mZs2adoelcgC9Jq+UF1q89QRPfvU3RYLycF9YGbvDUW42btw4oqKi+Omnn7j99tvt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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, _, _, _ = draw_roc_curve( ada_clf, test_X, test_y );"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### We will be using GridSearchCV to build multiple adaBoost model for each of these combination\n",
    "\n",
    "Model to be built\n",
    "- param_grid: Dictionary with hyper parameters\n",
    "- Scoring: Strategy to evaluate the performance of the cross-validated model on the test set.\n",
    "- cv: Determines the cross-validation splitting strategy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Configuring parameters and values for searched \n",
    "tuned_parameters = [{'n_estimators': [50, 100, 150, 200], \n",
    "                     'learning_rate': [0.01, 0.05, 0.1, 0.5, 1, 10]}]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, estimator=AdaBoostClassifier(),\n",
       "             param_grid=[{'learning_rate': [0.01, 0.05, 0.1, 0.5, 1, 10],\n",
       "                          'n_estimators': [50, 100, 150, 200]}],\n",
       "             scoring='roc_auc')"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Initializing the AdaBoost classifier \n",
    "ada_clf = AdaBoostClassifier()\n",
    "\n",
    "## Configuring search with the tunable parameters \n",
    "clf = GridSearchCV(ada_clf, tuned_parameters, cv=5, scoring='roc_auc')\n",
    "\n",
    "## Fitting the training set \n",
    "clf.fit(train_X, train_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### best_params_ variable provides the hyper parameters for which we achived best results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'learning_rate': 1, 'n_estimators': 200}"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.best_params_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Initializing the AdaBoost Model with the optimal values and Fitting the model with the training set "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "AdaBoostClassifier(learning_rate=1, n_estimators=200)"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ada_clf = AdaBoostClassifier(n_estimators=200, learning_rate=1)\n",
    "\n",
    "## Fitting AdaBoost model to training set \n",
    "ada_clf.fit(train_X, train_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.74      0.88      0.81      1209\n",
      "           1       0.61      0.38      0.47       591\n",
      "\n",
      "    accuracy                           0.72      1800\n",
      "   macro avg       0.68      0.63      0.64      1800\n",
      "weighted avg       0.70      0.72      0.70      1800\n",
      "\n",
      "accuracy =  0.72\n",
      "recall =  0.38\n",
      "precision =  0.61\n",
      "roc_auc =  0.63\n"
     ]
    }
   ],
   "source": [
    "pred_y = ada_clf.predict(test_X)\n",
    "\n",
    "cm = draw_cm( test_y, pred_y )\n",
    "\n",
    "print_model_metrics(test_y, pred_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us draw the roc_auc curve to check the model "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, _, _, _ = draw_roc_curve( ada_clf, test_X, test_y );"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### Let us build a Gradient Boosting classifier model for the bank subscriber dataset which we have been using in this module\n",
    "\n",
    "\n",
    "### Gradient Boosting classifier\n",
    "\n",
    "Gradient boosting is one of the variants of ensemble methods where we create multiple weak models (decision trees) and combine them to get better performance as a whole"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Comparison between AdaBoost and Gradient Boost\n",
    "\n",
    "| S.No | Adaboost | Gradient Boost |\n",
    "| --- | --- | --- |\n",
    "| 1 | An additive model where shortcomings of previous models are identified by high-weight data points. | An additive model where shortcomings of previous models are identified by the gradient. |\n",
    "| 2 | The trees are usually grown as decision stumps. | The trees are grown to a greater depth usually ranging from 8 to 32 terminal nodes. |\n",
    "| 3 | Each classifier has different weights assigned to the final prediction based on its performance. | All classifiers are weighed equally and their predictive capacity is restricted with learning rate to increase accuracy. |\n",
    "| 4 | It gives weights to both classifiers and observations thus capturing maximum variance within data.| It builds trees on previous classifier’s residuals thus capturing variance in data. |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Importing Gradient Boosting classifier\n",
    "from sklearn.ensemble import GradientBoostingClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Hyper parameters for Gradient Boosting model are, \n",
    "1. Tree-Specific Parameters: These affect each individual tree in the model\n",
    "- max_features, max_depth, min_samples_leaf\n",
    "    \n",
    "   \n",
    "2. Boosting Parameters: These affect the boosting operation in the model\n",
    "- base_estimator, n_estimators, Learning rate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GradientBoostingClassifier(max_depth=10, n_estimators=500)"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Initializing Gradient Boosting with 500 estimators and max ## depth as 10.\n",
    "gboost_clf = GradientBoostingClassifier( n_estimators=500, max_depth=10)\n",
    "\n",
    "## Fitting gradient boosting model to training set \n",
    "gboost_clf.fit(train_X, train_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Check the accuracy and other model metrics using confusion matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.97      0.95      0.96      1209\n",
      "           1       0.91      0.94      0.92       591\n",
      "\n",
      "    accuracy                           0.95      1800\n",
      "   macro avg       0.94      0.95      0.94      1800\n",
      "weighted avg       0.95      0.95      0.95      1800\n",
      "\n",
      "accuracy =  0.95\n",
      "recall =  0.94\n",
      "precision =  0.91\n",
      "roc_auc =  0.95\n"
     ]
    }
   ],
   "source": [
    "pred_y = gboost_clf.predict(test_X)\n",
    "\n",
    "cm = draw_cm( test_y, pred_y )\n",
    "\n",
    "print_model_metrics(test_y, pred_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us draw the roc_auc curve to check the model "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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n+bNmzN69GiGDBnCvHnzKFq0aNBhxZSovCZfuJB+m4iIRLM//viDdu3aUalSJT7//HM6deoUdEgxKSqT/Nl1KgcdgoiI5MDWrVupUqUKlStXZuLEibRt25YKFSoEHVbMiroicSEziheJCzoMERHJBuccY8eOpVatWkybNg2A7t27K8FHWNQleRERiS6bN2/moosu4sYbb+TMM8+kWbNmQYdUYCjJi4hIxEybNo0mTZowY8YMnnnmGaZPn06NGjWCDqvAiMpr8iIiEh3++OMPatasyRtvvEHDhg2DDqfAMedc0DFkS4lqdd2+31YGHYaIiBzDrFmz2LhxIz179sQ5R0pKCkWKFAk6rKhmZguccy2zu56q60VEJFccPHiQf/7zn7Rr146HH36Y1NRUzEwJPkARTfJm1s3MfjKz1WZ2bwbzy5nZNDNbbGbLzKxfJOMREZHIWLZsGa1bt+aRRx7huuuu49tvvyUuTndCBS1i1+TNLA54DugCbAC+N7P3nXPLQxa7GVjunLvIzKoAP5nZm865g5GKS0REctf69etp2bIlZcuW5f333+eiiy4KOiTxRbIk3wpY7Zxb4yftiUD6AYEdUMa8TopLA38CKRGMSUREcsmePXsAqFmzJs8++yyJiYlK8PlMJJN8dWB9yPQG/7VQo4EGwG9AInCrcy4t/YbM7AYzm29m86OtoaCISKxxzvHmm29y8skn89133wFw3XXXccIJJwQcmaQXySSf0RBC6TP0ucAioBqQAIw2s7JHreTcWOdcS+dcS41MJCISnD///JNevXpx9dVXU69ePSpXVjfj+Vkkk/wGoGbIdA28EnuofsAU51kN/ALUj2BMIiKSQ5999hlNmjRh8uTJ/Pvf/9aY71Egkp3hfA/UMbNawEbgH8CV6Zb5FegEfGNmJwL1gDURjElERHJo7ty5lCtXjmnTptG8efOgw5EwRLQzHDM7H3gKiANedc7928wGADjnXjCzasA4oCpe9f4jzrk3MtumOsMREck7CxYsYOfOnXTs2JGUlBSSk5MpUaJE0GEVODntDEc93omIyFFSUlJ49NFHGTlyJAkJCXz33XeoTVRw1OOdiIjkip9//pl27doxfPhwLrvsMj799FMl+CilAWpEROSwlStX0rx5c4oUKcJ///tfevXqFXRIchyU5EVEhJSUFAoXLkydOnW4++676dev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5i10+ZVuoZOg/PnnnwwcOJD+/fvTpUuXoMMRkQIkErfQiYhv+vTpNG7cmClTpvDzzz8HHY6ISFiU5EUysXfvXgYPHky3bt2oUKEC8+bNY8AAddgoItFBSV4kE5MmTWL06NEMGTKEBQsW0KxZs6BDEhEJmxreiaSTkpLCsmXLaNq0Kb1796ZRo0a0aNEi6LBERLJNJXmREKtWreLss8+mXbt2bN26FTNTgheRqKUkL4I35vuLL75IQkICP/30Ey+++KLuexeRqKfqeinwDh48yN///nc+/PBDOnfuzGuvvUaNGjWCDktE5LipJC8FXtGiRTn55JN5+umnmT59uhK8iMQMdYYjBdKuXbu44447uPnmm2natGnQ4YiIZEqd4YiEadasWTRt2pRXXnmF2bNnBx2OiEjEKMlLgXHw4EH++c9/0q5dO8yMb775hptuuinosEREIkZJXgqMF154gUceeYTrrruOxYsXc9ZZZwUdkohIRKl1vcS0tLQ01q9fz8knn8yAAQNo2LAhnTt3DjosEZE8oZK8xKz169fTuXNn2rRpw86dOylatKgSvIgUKCrJS8xxzvHWW28xcOBAUlJSePrppylTpkzQYYmI5DmV5CWm7N27l169enHVVVfRqFEjFi9eTP/+/TGzoEMTEclzSvISU4oXL87u3bt5+OGHmTlzJqeddlrQIYmIBEbV9RL19u3bx3333cfgwYOpWbMm06ZNU8ldRASV5CXKLViwgObNm/PYY4/x0UcfASjBi4j4lOQlKqWkpPDvf/+bM844g127dvHZZ59x4403Bh2WiEi+oiQvUenRRx9l+PDhXH755SQmJurWOBGRDOiavEQN5xx//vknlSpVYtCgQdSrV4/LLrss6LBERPItleQlKvz+++90796djh07cuDAAcqVK6cELyKSBSV5yffee+89mjRpwmeffUb//v0pUqRI0CGJiEQFJXnJt/bs2cN1113HxRdfTI0aNfjhhx+49dZbKVRIp62ISDj0bSn5VuHChVm4cCFDhw5l7ty5NGzYMOiQRESiihreSb5y8OBBHn/8cQYOHEj58uWZM2cORYsWDTosEZGopJK85BvLli2jdevWDBs2jClTpgAowYuIHAcleQlcWloaTz31FC1atGDjxo1MnTqVa6+9NuiwRESinpK8BG7EiBEMGTKELl26kJiYSI8ePYIOSUQkJuiavARm3759lChRgptuuolTTz2Va6+9Vv3Oi4jkInPOBR1DtpSoVtft+21l0GHIcfjzzz+5+eabSUpK4pNPPtEtcSIiWTCzBc65ltldT9+ukqc+++wz4uPjmTRpEu3btyfafmSKiEQTJXnJE/v27ePWW2+la9eulClThrlz5zJs2DDi4uKCDk1EJGYpyUueOHjwIO+99x633HILP/zwAy1atAg6JBGRmKeGdxIxKSkpvPLKK/Tt25dy5cqxZMkSypYtG3RYIiIFhkryEhE///wz7du3Z8CAAUyaNAlACV5EJI8pyUuucs7x8ssv07RpU5YtW8abb77JlVdeGXRYIiIFkpK85Kq7776b66+/ntatW5OYmMiVV16pe99FRAKia/KSK1JTU4mLi6NPnz5Uq1ZNQ8KKiOQD6gxHjsuuXbu4/fbbSU5OZty4cUGHIyISk9QZjuS5b7/9loSEBF555RWqVatGWlpa0CGJiEgIJXnJtoMHDzJs2DDatWtHWloaM2fO5OGHH1b1vIhIPqNvZcm2LVu28Nxzz9G3b18WL17M2WefHXRIIiKSATW8k7CkpaUxZcoULr30UmrUqMHy5cupVq1a0GGJiEgmVJKXLG3YsIGuXbty+eWX8/777wMowYuIRIGIJnkz62ZmP5nZajO7N4P5V5nZEv8x28yaRjIeyb6JEyfSpEkT5s6dy9ixY+nevXvQIYmISJgiluTNLA54DjgPaAj0MrOG6Rb7BWjvnIsHHgTGRioeyb477riDXr16Ub9+fRYtWsT111+vjm1ERKJIJK/JtwJWO+fWAJjZRKAHsPzQAs652SHLzwVqRDAeCZNzDjPj/PPPp0KFCtx7770ULqzmGyIi0SaS39zVgfUh0xuA1pks3x/4OILxSBb27dvH0KFDKV26NA8++CCdOnWiU6dOQYclIiI5FMlr8hnV62bYvZ6ZdcRL8vccY/4NZjbfzOZHWw990WLhwoW0bNmSp556it27d6PjLCIS/SKZ5DcANUOmawC/pV/IzOKBl4EezrmkjDbknBvrnGvpnGupa8K5KzU1lf/85z+0bt2a7du3M336dJ588kldexcRiQGRTPLfA3XMrJaZFQX+AbwfuoCZnQRMAXo759QhfQBWrVrFfffdxyWXXEJiYiJdu3YNOiQREcklEbsm75xLMbNBwHQgDnjVObfMzAb4818A/gVUAsb4JceUnHTAL9njnGPmzJm0b9+e+vXrs2TJEurVq6fSu4hIjNEodAXMli1buP7663n//ff54osv6NixY9AhiYhIFnI6Cp3uiypApk2bxnXXXceOHTsYNWoU7du3DzokERGJIHVrW0DceeeddO/enapVqzJ//nyGDBmiUeNERGKcvuULiISEBO655x7mzZtH48aNgw5HRETygK7Jx6jk5GQeeOABatSowY033hh0OCIichxyek1eJfkYtGLFCs4880weeughEhMTgw5HREQCoiQfQ9LS0nj22Wdp3rw569atY8qUKYwePTrosEREJCBK8jFk/vz53HLLLXTq1InExEQuueSSoEMSEZEAKcnHgGXLlgHQqlUrZs2axbRp0/jb3/4WcFQiIhI0Jfkotm3bNq666iri4+P54YcfAGjTpo16rhMREUCd4UStGTNm0LdvXzZt2sTIkSOJj48POiQREclnVJKPQvfeey+dO3emVKlSzJkzhxEjRlC4sH6viYjIkZTko1D58uUZNGgQP/zwA6effnrQ4YiISD6lznCiQGpqKo8//jgNGzbkoosuwjmn6+4iIgWIOsOJUWvWrKFDhw7ce++9fPTRRwBK8CIiEhYl+XzKOcerr75K06ZNWbJkCRMmTGDMmDFBhyUiIlFErbXyqRkzZtC/f386dOjA66+/zkknnRR0SCIiEmVUks9nNm7cCECnTp149913mTFjhhK8iIjkiJJ8PrF7925uvPFG6tWrx88//4yZcfHFF2vMdxERyTFV1+cDc+bMoXfv3qxZs4a77rqLGjVqBB2SiIjEABUTA+Sc47777uPss88mJSWFr776ikcffZRixYoFHZqIiMQAJfkAmRlJSUn07t2bJUuW0K5du6BDEhGRGKLOcPJYWloaY8aM4fTTT6d169akpqYSFxcXdFgiIpKPqTOcKLBx40bOO+88Bg8ezPjx4wGU4EVEJGKU5PPI22+/TZMmTZg1axbPP/88o0ePDjokERGJcWpdnwemTp1Kz549adWqFRMmTKBu3bpBhyQiIgWASvIRtGPHDgAuvPBCxo4dy7fffqsELyIieUZJPgL279/PHXfcQf369dm6dSuFCxfm+uuv15jvIiKSp5R1ctmiRYu4+uqrWbZsGTfffDOlSpUKOiQRESmgVJLPJWlpaTz66KO0atWKpKQkPv74Y0aPHk3JkiWDDk1ERAooJflcYmbMmTOH7t27s3TpUrp16xZ0SCIiUsCpuv44OOd4/fXXOfvss6lduzYTJ06kWLFimFnQoYmIiKgkn1Nbt27l0ksvpV+/fofveS9evLgSvIiI5BsqyefAhx9+SP/+/dm2bRuPPfYYQ4YMCTokERGRoyjJZ9Nbb73FlVdeSZMmTfj000+Jj48POiQREZEMKcmH6cCBAxQrVozu3bvz8MMPc/vtt2tIWJEYlpyczIYNG9i/f3/QoUgBUrx4cWrUqEGRIkVyZXsahS4LycnJPPTQQ0yePJnvvvtOt8SJFBC//PILZcqUoVKlSmprI3nCOUdSUhK7du2iVq1aR8zTKHQR8NNPP3HWWWfxwAMP0LJlS1JTU4MOSUTyyP79+5XgJU+ZGZUqVcrV2iMl+Qw453juuedo1qwZv/zyC5MmTWLcuHGUKVMm6NBEJA8pwUtey+1zTtfkM5CamsqECRNo3749r776KlWrVg06JBERkWxTST7E5MmT+eOPPyhcuDAff/wxH330kRK8iAQmLi6OhIQEGjduzEUXXcT27dsPz1u2bBnnnHMOdevWpU6dOjz44IOEtrH6+OOPadmyJQ0aNKB+/frceeedAbyDzC1cuJDrrrsu6DCO6cCBA/Ts2ZPatWvTunVr1q5dm+Fy//vf/4iPj6dRo0bcfffdh18fMmQICQkJJCQkULduXcqXLw94/azkVa+oSvLA9u3b6d27N5dddhmjRo0CoEKFCqqqE5FAlShRgkWLFrF06VIqVqzIc889B8C+ffvo3r079957LytXrmTx4sXMnj2bMWPGALB06VIGDRrEG2+8wYoVK1i6dCmnnnpqrsaWkpJy3Nt4+OGHGTx4cJ7uMzteeeUVKlSowOrVqxkyZAj33HPPUcskJSVx1113MWPGDJYtW8bvv//OjBkzAHjyySdZtGgRixYtYvDgwfz9738HoEqVKlStWpVvv/024u+hwFfXf/XVV/Tp04fffvuN++67j2HDhgUdkojkM/dPW8by33bm6jYbVivLfRc1Cnv5M888kyVLlgDw3//+lzZt2tC1a1cASpYsyejRo+nQoQM333wz//d//8ewYcOoX78+AIULF2bgwIFHbXP37t0MHjyY+fPnY2bcd999XHrppZQuXZrdu3cDMGnSJD744APGjRtH3759qVixIgsXLiQhIYF3332XRYsWHS6h1q5dm2+//ZZChQoxYMAAfv31VwCeeuop2rRpc8S+d+3axZIlS2jatCkA3333Hbfddhv79u2jRIkSvPbaa9SrV49x48bx4Ycfsn//fvbs2cO0adMYPHgwiYmJpKSkMHLkSHr06MHatWvp3bs3e/bsAWD06NGcddZZYR/fjLz33nuMHDkSgMsuu4xBgwbhnDuiALhmzRrq1q1LlSpVAOjcuTOTJ0+mU6dOR2zrrbfe4v777z88ffHFF/Pmm28edVxyW4FO8q+//jr9+vU7fGK2bt066JBERI6SmprKjBkz6N+/P+BV1bdo0eKIZU477TR2797Nzp07Wbp0KXfccUeW233wwQcpV64ciYmJAGzbti3LdVauXMnnn39OXFwcaWlpvPvuu/Tr14958+ZxyimncOKJJ3LllVcyZMgQzj77bH799VfOPfdcVqxYccR25s+fT+PGjQ9P169fn5kzZ1K4cGE+//xzhg4dyuTJkwGYM2cOS5YsoWLFigwdOpRzzjmHV199le3bt9OqVSs6d+7MCSecwGeffUbx4sVZtWoVvXr1Yv78+UfF37ZtW3bt2nXU648//jidO3c+4rWNGzdSs2ZNwPuhVK5cOZKSkqhcufLhZWrXrs2PP/7I2rVrqVGjBlOnTuXgwYNHbGfdunX88ssvnHPOOYdfa9myJcOHD8/yeB+vApnk09LSKFSoEN26deOOO+5g5MiRGvddRI4pOyXu3LRv3z4SEhJYu3YtLVq0oEuXLgBHlSZDZecy4+eff87EiRMPT1eoUCHLdS6//HLi4uIA6NmzJw888AD9+vVj4sSJ9OzZ8/B2ly9ffnidnTt3smvXriPuUNq0adPh0i/Ajh07uOaaa1i1ahVmRnJy8uF5Xbp0oWLFigB8+umnvP/++zz++OOAd6vjr7/+SrVq1Rg0aBCLFi0iLi6OlSsz7k/lm2++yfI9HpJRPzLpj2+FChV4/vnn6dmzJ4UKFeKss85izZo1RywzceJELrvsssPHDeCEE07gt99+CzuWnCpQ1+RTU1N57LHH6Nq1K6mpqZx44ok89thjSvAiki8duia/bt06Dh48ePiafKNGjY4qpa5Zs4bSpUtTpkwZGjVqxIIFC7Lc/rF+LIS+lv6e7dDvyzPPPJPVq1ezdetWpk6deviac1paGnPmzDl8PXrjxo1H3YJcokSJI7Y9YsQIOnbsyNKlS5k2bdoR80L36Zxj8uTJh7f966+/0qBBA5588klOPPFEFi9ezPz5848qTR/Stm3bw43hQh+ff/75UcvWqFGD9evXA157gB07dhz+sRHqoosuYt68ecyZM4d69epRp06dI+ZPnDiRXr16HfHa/v37KVGiRIYx5qYCk+TXrl3LOeecw9133025cuXYu3dv0CGJiISlXLlyPPPMMzz++OMkJydz1VVXMWvWrMOJad++fdxyyy2HW3bfddddPPzww4dLs2lpaYcbFYfq2rXr4VE04a/q+hNPPJEVK1Ycro4/FjPjkksu4fbbb6dBgwZUqlQpw+0uWrToqHUbNGjA6tWrD0/v2LGD6tWrAzBu3Lhj7vPcc8/l2WefPVzKXrhw4eH1q1atSqFChZgwYcIxOy/75ptvDv9ACH2kr6oH6N69O6+//jrgtU0455xzMvxRtGXLFsA7fmPGjDnijoGffvqJbdu2ceaZZx6xzsqVK4+4XBEpMZ/kD435Hh8fz8KFC3n99deZNGmSOrYRkajSrFkzmjZtysSJEylRogTvvfceDz30EPXq1aNJkyacfvrpDBo0CID4+HieeuopevXqRYMGDWjcuDGbNm06apvDhw9n27ZtNG7cmKZNm/Lll18C8Mgjj3DhhRdyzjnnZHkbcc+ePXnjjTcOV9UDPPPMM8yfP5/4+HgaNmzICy+8cNR69evXZ8eOHYevj999993885//pE2bNpn2LjpixAiSk5OJj4+ncePGjBgxAoCBAwfy+uuvc8YZZ7By5cpcqaHt378/SUlJ1K5dm1GjRvHII48cnpeQkHD4+a233krDhg1p06YN9957L3Xr1j0876233uIf//jHUT8OvvzySy644ILjjjErMd93/b59+2jSpAnVq1fn9ddf55RTTolccCISM1asWEGDBg2CDiOmPfnkk5QpUyZf3ysfKe3ateO9997LsB1ERuee+q5P5/PPPz98K8ZXX33FF198oQQvIpKP3HTTTQVyNM+tW7dy++23h9XQ8XjFXJLfs2cPN910E126dOHJJ58EvMYToa0aRUQkeMWLF6d3795Bh5HnqlSpwsUXX5wn+4qpW+jmzZtH7969Wb16NXfeeSe333570CGJSBTL7FY1kUjI7UvoMVOSf/XVV2nTpg0HDhzgiy++4LHHHqN48eJB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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, _, _, _ = draw_roc_curve( gboost_clf, test_X, test_y );"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### As we look for cross validation scores for Gradient boosting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "\n",
    "gboost_clf = GradientBoostingClassifier( n_estimators=500, max_depth=10)\n",
    "cv_scores = cross_val_score( gboost_clf, train_X, train_y, cv = 10, scoring = 'roc_auc' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.95700689 0.96182878 0.96816541 0.94584838 0.98603923 0.9935119\n",
      " 0.96819065 0.97589054 0.96273762 0.94324809]\n",
      "Mean Accuracy:  0.9662467496402515 with standard deviation of: 0.015158604927586222\n"
     ]
    }
   ],
   "source": [
    "print(cv_scores)\n",
    "print('Mean Accuracy: ', np.mean(cv_scores), 'with standard deviation of:', np.std(cv_scores))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### The model accuracy is consistent with a mean accuracy of 96.98% and a standard deviation of only 0.009. This is a robust model. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "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.6.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
