Model Evaluation Exercise
{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Model Evaluation\n", "Use the provided dataset AutoClaim.csv to create classification models to predict whether a customer is likely to make a claim and evaluate model performance. The binary variable <b>Claim</b> will be used as the target variable. The description of the data fields are below:\n", "1. Premium USD: Premium paid by the customer in US dollar\n", "1. Age level: \n", " - 1: 18 - 21\n", " - 2: 22 - 26\n", " - 3: 26 - 29\n", " - 4: 30 - 35\n", " - 5: 36 - 40\n", " - 6: 41 - 45\n", " - 7: 46 - 50\n", " - 8: 51 - 60\n", " - 9: 61 - 70\n", " - 10: 71 - 80\n", " - 11: 81 - 89\n", "1. AgeClass:\n", " - 0: elder (All other age classes)\n", " - 1: Young (18 - 21)\n", "1. Gender:\n", " - 0: Female\n", " - 1: Male\n", "1. Car Power\n", "1. Rating Class: from 1 to 4\n", "1. InCity:\n", " - 0: live in the city\n", " - 1: Live outside the city\n", "1. SW: 0 - not in SW region, 1 - in SW region\n", "1. MW: 0 - not in MW region, 1 - in MW region\n", "1. ME: 0 - not in ME region, 1 - in ME region\n", "1. SE: 0 - not in SE region, 1 - in SE region\n", "1. NE: 0 - not in NE region, 1 - in NE region\n", "1. NW: 0 - not in NW region, 1 - in NW region\n", "1. Branch_Magenta: 0 not in Branch_Magenta, 1 - in Branch_Magenta\n", "1. Branch_Indigo: 0 not in Branch_Indigo, 1 - in Branch_Indigo\n", "1. Branch_Brown: 0 not in Branch_Brown, 1 - in Branch_Brown\n", "1. Branch_Purple: 0 not in Branch_Purple, 1 - in Branch_Purple\n", "1. Claim: 0 have not made a claim, 1 - have made a claim " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import needed libraries and set up the enviornment" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style>.container { width:100% !important; }</style>" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline \n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns; \n", "import pandas as pd\n", "np.set_printoptions(precision=2, suppress=True)\n", "from IPython.core.display import display, HTML\n", "display(HTML(\"<style>.container { width:100% !important; }</style>\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import and Understand Data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of rows and columns the dataset has:\n", "(5000, 18)\n", "The top 5 rows of the data\n" ] }, { "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>Premium USD</th>\n", " <th>Age Level</th>\n", " <th>AgeClass</th>\n", " <th>Gender</th>\n", " <th>Car Power</th>\n", " <th>Rating Class</th>\n", " <th>InCity</th>\n", " <th>SW</th>\n", " <th>MW</th>\n", " <th>ME</th>\n", " <th>SE</th>\n", " <th>NE</th>\n", " <th>NW</th>\n", " <th>Branch_Magenta</th>\n", " <th>Branch_Indigo</th>\n", " <th>Branch_Brown</th>\n", " <th>Branch_Purple</th>\n", " <th>Claim</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>846.429395</td>\n", " <td>4</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>18</td>\n", " <td>2</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>722.242540</td>\n", " <td>5</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>17</td>\n", " <td>2</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>946.788086</td>\n", " <td>6</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>15</td>\n", " <td>2</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>941.218292</td>\n", " <td>5</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>14</td>\n", " <td>3</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>66.457065</td>\n", " <td>6</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>10</td>\n", " <td>1</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " Premium USD Age Level AgeClass Gender Car Power Rating Class InCity \\\n", "0 846.429395 4 0 1 18 2 0 \n", "1 722.242540 5 0 1 17 2 0 \n", "2 946.788086 6 0 1 15 2 1 \n", "3 941.218292 5 0 1 14 3 1 \n", "4 66.457065 6 0 0 10 1 1 \n", "\n", " SW MW ME SE NE NW Branch_Magenta Branch_Indigo Branch_Brown \\\n", "0 0 0 0 1 0 0 0 0 1 \n", "1 0 0 0 0 1 0 1 0 0 \n", "2 0 0 0 0 0 1 0 0 1 \n", "3 0 0 0 0 1 0 0 0 1 \n", "4 0 0 0 0 0 1 1 0 0 \n", "\n", " Branch_Purple Claim \n", "0 0 0 \n", "1 0 0 \n", "2 0 1 \n", "3 0 0 \n", "4 0 0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Import data from AutoClaim.csv into a dataframe. Download the file from Canvas\n", "# print out the shape and the top 5 rows of the data.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 4400\n", "1 600\n", "Name: Claim, dtype: int64\n" ] } ], "source": [ "# Get the number of values in different classes of the Claim variable\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEGCAYAAACUzrmNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAO2ElEQVR4nO3dfcyddX3H8feHArplU8DWpxYtmXURF59yD4n+42BicZtlBlzd1M4160xw023J1P2DU0k02YbifFgzqsUsVIJTwJiYhoe5xSGWwZRCCPVh0sBoXRFRI1vhuz/Or+5Q7vv+Hcp93fcp9/uVnJzr+l6/65zvSe72k991Xec6qSokSZrPMUvdgCRp+hkWkqQuw0KS1GVYSJK6DAtJUtexS93AEFauXFlr165d6jYk6ahy0003fb+qVs227QkZFmvXrmXXrl1L3YYkHVWS/Odc2zwMJUnqMiwkSV2GhSSpy7CQJHUZFpKkLsNCktRlWEiSugwLSVKXYSFJ6npCfoN7Iez6k7ctdQuaQjMXf3KpW5CWhDMLSVKXYSFJ6jIsJEldhoUkqcuwkCR1GRaSpC7DQpLUZVhIkroMC0lSl2EhSeoyLCRJXYaFJKnLsJAkdRkWkqSuwcMiyYokNyf5Yls/JcnXktyZ5LNJjm/1J7X1PW372rHXeE+r35HkNUP3LEl6pMWYWbwDuH1s/UPARVW1DrgP2Nzqm4H7qup5wEVtHElOBTYCLwTWAx9PsmIR+pYkNYOGRZI1wG8A/9DWA5wBXNGGbAfOacsb2jpt+5lt/AZgR1U9WFXfAfYApw3ZtyTpkYaeWXwY+Avg4bb+NOAHVXWwre8FVrfl1cBdAG37/W38z+qz7CNJWgSDhUWS3wT2VdVN4+VZhlZn23z7jL/fliS7kuzav3//Y+5XkjS3IWcWrwRel+S7wA5Gh58+DJyQ5NBvf68B7m7Le4GTAdr2pwIHxuuz7PMzVbW1qmaqambVqlUL/2kkaRkbLCyq6j1Vtaaq1jI6QX1tVf0ecB1wbhu2CbiyLV/V1mnbr62qavWN7WqpU4B1wI1D9S1JerRj+0MW3LuAHUk+ANwMXNLqlwCfSbKH0YxiI0BV7U5yOXAbcBA4v6oeWvy2JWn5WpSwqKrrgevb8reZ5WqmqvopcN4c+18IXDhch5Kk+fgNbklSl2EhSeoyLCRJXYaFJKnLsJAkdRkWkqQuw0KS1GVYSJK6DAtJUpdhIUnqMiwkSV2GhSSpy7CQJHUZFpKkLsNCktRlWEiSugwLSVKXYSFJ6jIsJEldhoUkqcuwkCR1GRaSpC7DQpLUZVhIkroMC0lSl2EhSeoyLCRJXYaFJKnLsJAkdRkWkqQuw0KS1GVYSJK6DAtJUpdhIUnqMiwkSV2GhSSpy7CQJHUZFpKkrsHCIsmTk9yY5D+S7E7yV61+SpKvJbkzyWeTHN/qT2rre9r2tWOv9Z5WvyPJa4bqWZI0uyFnFg8CZ1TVi4GXAOuTnA58CLioqtYB9wGb2/jNwH1V9TzgojaOJKcCG4EXAuuBjydZMWDfkqTDDBYWNfKjtnpcexRwBnBFq28HzmnLG9o6bfuZSdLqO6rqwar6DrAHOG2oviVJjzboOYskK5LcAuwDdgLfAn5QVQfbkL3A6ra8GrgLoG2/H3jaeH2WfSRJi2DQsKiqh6rqJcAaRrOBF8w2rD1njm1z1R8hyZYku5Ls2r9//5G2LEmaxaJcDVVVPwCuB04HTkhybNu0Bri7Le8FTgZo258KHBivz7LP+HtsraqZqppZtWrVEB9DkpatIa+GWpXkhLb8c8CvA7cD1wHntmGbgCvb8lVtnbb92qqqVt/YrpY6BVgH3DhU35KkRzu2P+SIPQvY3q5cOga4vKq+mOQ2YEeSDwA3A5e08ZcAn0myh9GMYiNAVe1OcjlwG3AQOL+qHhqwb0nSYQYLi6r6BvDSWerfZparmarqp8B5c7zWhcCFC92jJGkyfoNbktRlWEiSugwLSVKXYSFJ6jIsJEldhoUkqcuwkCR1GRaSpC7DQpLUZVhIkroMC0lSl2EhSeoyLCRJXYaFJKnLsJAkdRkWkqSuicIiyTWT1CRJT0zz/lJekicDPw+sTHIikLbpKcCzB+5NkjQlej+r+kfAOxkFw038f1j8EPjYgH1JkqbIvGFRVR8BPpLkj6vqo4vUkyRpyvRmFgBU1UeTvAJYO75PVV06UF+SpCkyUVgk+QzwS8AtwEOtXIBhIUnLwERhAcwAp1ZVDdmMJGk6Tfo9i1uBZw7ZiCRpek06s1gJ3JbkRuDBQ8Wqet0gXUmSpsqkYfHeIZuQJE23Sa+G+uehG5EkTa9Jr4Z6gNHVTwDHA8cBP66qpwzVmCRpekw6s/jF8fUk5wCnDdKRJGnqHNFdZ6vqC8AZC9yLJGlKTXoY6vVjq8cw+t6F37mQpGVi0quhfmts+SDwXWDDgncjSZpKk56zeOvQjUiSptekP360Jsnnk+xLcm+SzyVZM3RzkqTpMOkJ7k8BVzH6XYvVwNWtJklaBiYNi1VV9amqOtgenwZWDdiXJGmKTBoW30/ypiQr2uNNwH8P2ZgkaXpMGhZ/ALwB+C/gHuBcwJPekrRMTHrp7PuBTVV1H0CSk4C/ZhQikqQnuElnFi86FBQAVXUAeOl8OyQ5Ocl1SW5PsjvJO1r9pCQ7k9zZnk9s9SS5OMmeJN9I8rKx19rUxt+ZZNNj/5iSpMdj0rA45tB/6vCzmUVvVnIQ+POqegFwOnB+klOBdwPXVNU64Jq2DnA2sK49tgCfGHuvC4CXM7of1QXjvUiShjfpYai/Ab6a5ApGt/l4A3DhfDtU1T2Mzm9QVQ8kuZ3RZbcbgFe1YduB64F3tfql7adbb0hyQpJntbE722yGJDuB9cBlE/YuSXqcJv0G96VJdjG6eWCA11fVbZO+SZK1jA5bfQ14RgsSquqeJE9vw1YDd43ttrfV5qof/h5bGM1IeM5znjNpa5KkCUw6s6CFw8QBcUiSXwA+B7yzqn6YZM6hs73tPPXD+9sKbAWYmZnxJoeStICO6Bblk0pyHKOg+Meq+qdWvrcdXqI972v1vcDJY7uvAe6epy5JWiSDhUVGU4hLgNur6m/HNl0FHLqiaRNw5Vj9Le2qqNOB+9vhqi8DZyU5sZ3YPqvVJEmLZOLDUEfglcCbgW8muaXV/hL4IHB5ks3A94Dz2rYvAa8F9gA/oX3pr6oOJHk/8PU27n2HTnZLkhbHYGFRVf/K7OcbAM6cZXwB58/xWtuAbQvXnSTpsRj0nIUk6YnBsJAkdRkWkqQuw0KS1GVYSJK6DAtJUpdhIUnqMiwkSV2GhSSpy7CQJHUZFpKkLsNCktRlWEiSugwLSVKXYSFJ6jIsJEldhoUkqcuwkCR1GRaSpC7DQpLUZVhIkroMC0lSl2EhSeoyLCRJXYaFJKnLsJAkdRkWkqQuw0KS1GVYSJK6DAtJUpdhIUnqMiwkSV2GhSSpy7CQJHUZFpKkLsNCktRlWEiSugwLSVLXYGGRZFuSfUluHaudlGRnkjvb84mtniQXJ9mT5BtJXja2z6Y2/s4km4bqV5I0tyFnFp8G1h9WezdwTVWtA65p6wBnA+vaYwvwCRiFC3AB8HLgNOCCQwEjSVo8g4VFVX0FOHBYeQOwvS1vB84Zq19aIzcAJyR5FvAaYGdVHaiq+4CdPDqAJEkDW+xzFs+oqnsA2vPTW301cNfYuL2tNlf9UZJsSbIrya79+/cveOOStJxNywnuzFKreeqPLlZtraqZqppZtWrVgjYnScvdYofFve3wEu15X6vvBU4eG7cGuHueuiRpES12WFwFHLqiaRNw5Vj9Le2qqNOB+9thqi8DZyU5sZ3YPqvVJEmL6NihXjjJZcCrgJVJ9jK6qumDwOVJNgPfA85rw78EvBbYA/wEeCtAVR1I8n7g623c+6rq8JPmkqSBDRYWVfXGOTadOcvYAs6f43W2AdsWsDVJ0mM0LSe4JUlTzLCQJHUZFpKkLsNCktRlWEiSugwLSVKXYSFJ6jIsJEldhoUkqcuwkCR1GRaSpC7DQpLUZVhIkroGu+uspGG87au7lroFTaFPvmJm0Nd3ZiFJ6jIsJEldhoUkqcuwkCR1GRaSpC7DQpLUZVhIkroMC0lSl2EhSeoyLCRJXYaFJKnLsJAkdRkWkqQuw0KS1GVYSJK6DAtJUpdhIUnqMiwkSV2GhSSpy7CQJHUZFpKkLsNCktRlWEiSugwLSVLXURMWSdYnuSPJniTvXup+JGk5OSrCIskK4GPA2cCpwBuTnLq0XUnS8nFUhAVwGrCnqr5dVf8D7AA2LHFPkrRsHLvUDUxoNXDX2Ppe4OXjA5JsAba01R8luWORelsOVgLfX+ompsJH/36pO9Aj+bfZLNBf5nPn2nC0hEVmqdUjVqq2AlsXp53lJcmuqppZ6j6kw/m3uXiOlsNQe4GTx9bXAHcvUS+StOwcLWHxdWBdklOSHA9sBK5a4p4kadk4Kg5DVdXBJG8HvgysALZV1e4lbms58fCeppV/m4skVdUfJUla1o6Ww1CSpCVkWEiSugwLzcvbrGgaJdmWZF+SW5e6l+XCsNCcvM2KptingfVL3cRyYlhoPt5mRVOpqr4CHFjqPpYTw0Lzme02K6uXqBdJS8iw0Hy6t1mRtDwYFpqPt1mRBBgWmp+3WZEEGBaaR1UdBA7dZuV24HJvs6JpkOQy4N+AX06yN8nmpe7pic7bfUiSupxZSJK6DAtJUpdhIUnqMiwkSV2GhSSpy7CQHockz0yyI8m3ktyW5EtJnt+7G2qSZye5YrH6lB6vo+JnVaVplCTA54HtVbWx1V4CPKO3b1XdDZw7bIfSwnFmIR25XwP+t6o+eahQVbcwdvPFJGuT/EuSf2+PV4zVb23Lv5/kC0muTvKdJG9P8mdJbk5yQ5KTFvuDSYczLKQj9yvATZ0x+4BXV9XLgN8BLp7ntX6X0W3hLwR+UlUvZfQt5bcsTLvSkfMwlDSs44C/a4enHgKeP8e466rqAeCBJPcDV7f6N4EXDd+mND/DQjpyu+mfd/hT4F7gxYxm8j+dY9yDY8sPj60/jP9ONQU8DCUduWuBJyX5w0OFJL8KPHdszFOBe6rqYeDNwIrFbVFaGIaFdIRqdBfO3wZe3S6d3Q28l0f+5sfHgU1JbmB0COrHi96otAC866wkqcuZhSSpy7CQJHUZFpKkLsNCktRlWEiSugwLSVKXYSFJ6vo/cJxumpXJqb8AAAAASUVORK5CYII=\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Visualize the proportion of counts in different classes for Claim\n", "# using Seaborn countplot\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare Data for Classification Training\n", "### Set Predictors and Target Variable" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The top 5 rows of X\n" ] }, { "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>Premium USD</th>\n", " <th>AgeClass</th>\n", " <th>Gender</th>\n", " <th>Car Power</th>\n", " <th>Rating Class</th>\n", " <th>InCity</th>\n", " <th>SW</th>\n", " <th>MW</th>\n", " <th>ME</th>\n", " <th>SE</th>\n", " <th>NE</th>\n", " <th>NW</th>\n", " <th>Branch_Magenta</th>\n", " <th>Branch_Indigo</th>\n", " <th>Branch_Brown</th>\n", " <th>Branch_Purple</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>846.429395</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>18</td>\n", " <td>2</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>722.242540</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>17</td>\n", " <td>2</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>946.788086</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>15</td>\n", " <td>2</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>941.218292</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>14</td>\n", " <td>3</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>66.457065</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>10</td>\n", " <td>1</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>1</td>\n", " <td>1</td>\n", " <td>0</td>\n", " <td>0</td>\n", " <td>0</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " Premium USD AgeClass Gender Car Power Rating Class InCity SW MW ME \\\n", "0 846.429395 0 1 18 2 0 0 0 0 \n", "1 722.242540 0 1 17 2 0 0 0 0 \n", "2 946.788086 0 1 15 2 1 0 0 0 \n", "3 941.218292 0 1 14 3 1 0 0 0 \n", "4 66.457065 0 0 10 1 1 0 0 0 \n", "\n", " SE NE NW Branch_Magenta Branch_Indigo Branch_Brown Branch_Purple \n", "0 1 0 0 0 0 1 0 \n", "1 0 1 0 1 0 0 0 \n", "2 0 0 1 0 0 1 0 \n", "3 0 1 0 0 0 1 0 \n", "4 0 0 1 1 0 0 0 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The top 5 rows of y\n" ] }, { "data": { "text/plain": [ "0 0\n", "1 0\n", "2 1\n", "3 0\n", "4 0\n", "Name: Claim, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Set the predictors using all the varibles except for Claim and Age Level\n", "# Set the target variable to be Claim\n", "\n", "# print out the top 5 rows of predictors and target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split data into training and test sets" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Class distribution in training data\n", "0 3300\n", "1 450\n", "Name: Claim, dtype: int64\n", "Class distribution in test data\n", "0 1100\n", "1 150\n", "Name: Claim, dtype: int64\n" ] } ], "source": [ "# Let's define a global variable for the random seed\n", "\n", "# Split data into training and test sets. Use random_seed = 1\n", "\n", "# print out the class frequency of training and test sets\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Feature Standardization" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Scale the data with StandardScaler\n", "# fit and transform training data. \n", "# transform test data\n", " \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model Buiding and Evaluation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fit data to Dummy Classifier\n", "Fit the data to a dummy classifer which predicts all cases to the majority class. Use the model to predict the y values of the test data. Print out the number of cases in the two classes. Also print out the model accuracy." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 1250\n", "dtype: int64\n", "Model accuracy: 0.88\n" ] } ], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fit the data to Logistic Regression Model\n", "Use the model to predict the y values of the test data. Get the actual prediction using the predict() funtion and the probability prediction using the predict_proba() function. The probability will be used to calculation AUC later.\n", "\n", "You can try different C values (the hypter parameter). But there is not a lot of difference probably because more influential features should be included. C=1 seems to be fine. Print out the number of cases in the two classes. Also print out the model accuracy. How much has the accuracy improved comparing to the Dummy Classifier?" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 1211\n", "1 39\n", "dtype: int64\n", "Model accuracy: 0.8888\n" ] } ], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fit the data to a Decision Tree Model\n", "Use the model to predict the y values of the test data. For decision tree, data does not need to be scaled. Get the actual prediction using the predict() funtion and the probability prediction using the predict_proba() function. The probability will be used to calculation AUC later.\n", "\n", "You can try different depth and find one that maximize the metric that is most important to you. Print out the number of cases in the two classes. Also print out the model accuracy. How much has the accuracy improved comparing to the Dummy Classifier?" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 1198\n", "1 52\n", "dtype: int64\n", "Model accuracy: 0.872\n" ] } ], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluation of Model Performance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get the confusion matrix of the prediction results\n", "Print out the confusion matrixes of the prediction results generated by the 4 models, incuding the dummy model. No plots need to be created. Simply print out the confusion matrixes. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Confusion matrix of the baseline model\n", "[[1100 0]\n", " [ 150 0]]\n", "Confusion matrix of the logistic regression model\n", "[[1086 14]\n", " [ 125 25]]\n", "Confusion matrix of the decision tree model\n", "[[1069 31]\n", " [ 129 21]]\n" ] } ], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get the Classification Reports\n", "Print out the classification reports of the 2 models (logistic and decision tree) created above. Compare different metrics of the important (positive) class. Based on the metrics, which model is the best for you?" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Classification Report for Logistic Regression\n", " precision recall f1-score support\n", "\n", "Did Not Claim (0) 0.90 0.99 0.94 1100\n", " Claimed (1) 0.64 0.17 0.26 150\n", "\n", " accuracy 0.89 1250\n", " macro avg 0.77 0.58 0.60 1250\n", " weighted avg 0.87 0.89 0.86 1250\n", "\n", "Classification Report for Decision Tree\n", " precision recall f1-score support\n", "\n", "Did Not Claim (0) 0.89 0.97 0.93 1100\n", " Claimed (1) 0.40 0.14 0.21 150\n", "\n", " accuracy 0.87 1250\n", " macro avg 0.65 0.56 0.57 1250\n", " weighted avg 0.83 0.87 0.84 1250\n", "\n" ] } ], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate AUC and Plot the ROC\n", "Use the roc_curve and auc classes to calculate false positive rate, true positive rate and thresholds for the 2 models (logistic and decision tree) created above. Plot the roc curves of the 2 models on the same chart to compare their performance based on the ROC curve and AUC." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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lFLKX3/9VT755JNu0RUVFeWWetzJoEGD5MqVK10uH237W04lrl+/Lv39/eX169fljRs3pL+/v7xx40ai1wwcOFCOGDFCSinlvXv37N/7hQsXZL58+ezHw4cPl3PnznVah7P/K8B+mUC7mhL3UY+kTp06bqlnVeB5HieSTERCrX7wVCruT0hNoqJgzBgYMUL97NdP9QjSCCPWHOHohdturbN8oRx89mqFZF935swZunfvztWrV8mXLx8//fQTxYoV4/Tp07z++uvExMTQuHFjvv32W+7evct///1H06ZNOXz4MEeOHKFbt25ERkYSGxvLsmXL+PTTTzl9+jQBAQHUr1+fPn362MvHxMTw4YcfsmnTJoQQ9OjRg3fffTdBbTVq1OD8+fP24wMHDjBw4EDu3r1L3rx5mTVrFgULFmTfvn28+eabZM2alRdeeIENGzZw+PBhZs2axbp167h//z737t3j119/ZcyYMSxevJiIiAhatmzJiBEjuHfvHm3btiUkJISYmBg+/fRT2rVrx0cffcTq1avJkCEDDRo0YOzYsQwfPpxs2bIxaNAgAgMD6dWrF2FhYZQqVYqZM2eSO3duLBYL1atX57fffuPWrVv8+OOP1HaSsnTZsmWMGjUKgP/++4833niDe/fuATBhwgRq1qzJtm3bGDFiBAULFiQwMJCjR48yd+5cxo8fT2RkJNWrV2fSpEn4+vryzjvvsG/fPsLDw2nTpg0jRoxI9t+DI5s2baJ+/fr4WXfV169fn40bN9KhQwen5aWULF68mF9//RWALFmy2M/dv3//ofH/Fi1aMGTIEF5//fVH0ggps6H2SI4fPw7AU089leI65u85y57gGzQolguuuEtZGuTgQWUSFxioDOLatTNbUZqmb9++dO7cmS5dujBz5kz69evHypUr6d+/P/3796dDhw5MmTLF6bVTpkyhf//+vP7660RGRhITE8Po0aM5fPgwgYGBgGrgbEybNo3g4GD++usvMmTIwI0bNxLVtnHjRlq0UHtCo6KiePfdd1m1ahX58uVj0aJFfPLJJ8ycOZNu3boxbdo0atasGW8X/q5du/j777/x8/Nj8+bNnDx5kr179yKlpFmzZvz+++9cvXqVQoUKsW7dOkDlCL9x4wYrVqzg2LFjCCG4detWPH2dO3fmhx9+oE6dOgwbNowRI0bw/fffAxAdHc3e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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }