Skip to content

Instantly share code, notes, and snippets.

@MattMcMurray
Last active November 10, 2017 17:32
Show Gist options
  • Save MattMcMurray/3a4ceb1d8c568d0848eaeb0e7c2354e9 to your computer and use it in GitHub Desktop.
Save MattMcMurray/3a4ceb1d8c568d0848eaeb0e7c2354e9 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exploring Why Patients No-show to Doctors' Appointments\n",
"Why do 30% of appointmens result in a patient not showing up to their appointment?\n",
"\n",
"## Dataset\n",
"- Sourced from kaggle.com\n",
"- \"300k medical appointments of the public healthcare of the capital city of Espirito Santo State - Vitoria - Brazil and its 15 variables (characteristics) of each\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Part 1: Data Cleaning"
]
},
{
"cell_type": "code",
"execution_count": 230,
"metadata": {},
"outputs": [],
"source": [
"# let's import the dataset\n",
"import os\n",
"import pandas as pd\n",
"\n",
"FILE_NAME = 'appointments.csv'\n",
"\n",
"def fetch_data():\n",
" csv_path = os.path.join('datasets', FILE_NAME)\n",
" return pd.read_csv(csv_path)\n",
"\n",
"appt_data = fetch_data()"
]
},
{
"cell_type": "code",
"execution_count": 231,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 110527 entries, 0 to 110526\n",
"Data columns (total 14 columns):\n",
"PatientId 110527 non-null float64\n",
"AppointmentID 110527 non-null int64\n",
"Gender 110527 non-null object\n",
"ScheduledDay 110527 non-null object\n",
"AppointmentDay 110527 non-null object\n",
"Age 110527 non-null int64\n",
"Neighbourhood 110527 non-null object\n",
"Scholarship 110527 non-null int64\n",
"Hipertension 110527 non-null int64\n",
"Diabetes 110527 non-null int64\n",
"Alcoholism 110527 non-null int64\n",
"Handcap 110527 non-null int64\n",
"SMS_received 110527 non-null int64\n",
"No-show 110527 non-null object\n",
"dtypes: float64(1), int64(8), object(5)\n",
"memory usage: 11.8+ MB\n"
]
}
],
"source": [
"# We can take a quick peek at some of the information provided\n",
"appt_data.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Note: Looks like there are some misspelt column names. This dataset comes from Brazil, therefore English is likely not the first language of whoever compiled this dataset._"
]
},
{
"cell_type": "code",
"execution_count": 232,
"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>PatientId</th>\n",
" <th>AppointmentID</th>\n",
" <th>Age</th>\n",
" <th>Scholarship</th>\n",
" <th>Hipertension</th>\n",
" <th>Diabetes</th>\n",
" <th>Alcoholism</th>\n",
" <th>Handcap</th>\n",
" <th>SMS_received</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>1.105270e+05</td>\n",
" <td>1.105270e+05</td>\n",
" <td>110527.000000</td>\n",
" <td>110527.000000</td>\n",
" <td>110527.000000</td>\n",
" <td>110527.000000</td>\n",
" <td>110527.000000</td>\n",
" <td>110527.000000</td>\n",
" <td>110527.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>1.474963e+14</td>\n",
" <td>5.675305e+06</td>\n",
" <td>37.088874</td>\n",
" <td>0.098266</td>\n",
" <td>0.197246</td>\n",
" <td>0.071865</td>\n",
" <td>0.030400</td>\n",
" <td>0.022248</td>\n",
" <td>0.321026</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.560949e+14</td>\n",
" <td>7.129575e+04</td>\n",
" <td>23.110205</td>\n",
" <td>0.297675</td>\n",
" <td>0.397921</td>\n",
" <td>0.258265</td>\n",
" <td>0.171686</td>\n",
" <td>0.161543</td>\n",
" <td>0.466873</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>3.921784e+04</td>\n",
" <td>5.030230e+06</td>\n",
" <td>-1.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>4.172614e+12</td>\n",
" <td>5.640286e+06</td>\n",
" <td>18.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>3.173184e+13</td>\n",
" <td>5.680573e+06</td>\n",
" <td>37.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>9.439172e+13</td>\n",
" <td>5.725524e+06</td>\n",
" <td>55.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>9.999816e+14</td>\n",
" <td>5.790484e+06</td>\n",
" <td>115.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>4.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PatientId AppointmentID Age Scholarship \\\n",
"count 1.105270e+05 1.105270e+05 110527.000000 110527.000000 \n",
"mean 1.474963e+14 5.675305e+06 37.088874 0.098266 \n",
"std 2.560949e+14 7.129575e+04 23.110205 0.297675 \n",
"min 3.921784e+04 5.030230e+06 -1.000000 0.000000 \n",
"25% 4.172614e+12 5.640286e+06 18.000000 0.000000 \n",
"50% 3.173184e+13 5.680573e+06 37.000000 0.000000 \n",
"75% 9.439172e+13 5.725524e+06 55.000000 0.000000 \n",
"max 9.999816e+14 5.790484e+06 115.000000 1.000000 \n",
"\n",
" Hipertension Diabetes Alcoholism Handcap \\\n",
"count 110527.000000 110527.000000 110527.000000 110527.000000 \n",
"mean 0.197246 0.071865 0.030400 0.022248 \n",
"std 0.397921 0.258265 0.171686 0.161543 \n",
"min 0.000000 0.000000 0.000000 0.000000 \n",
"25% 0.000000 0.000000 0.000000 0.000000 \n",
"50% 0.000000 0.000000 0.000000 0.000000 \n",
"75% 0.000000 0.000000 0.000000 0.000000 \n",
"max 1.000000 1.000000 1.000000 4.000000 \n",
"\n",
" SMS_received \n",
"count 110527.000000 \n",
"mean 0.321026 \n",
"std 0.466873 \n",
"min 0.000000 \n",
"25% 0.000000 \n",
"50% 0.000000 \n",
"75% 1.000000 \n",
"max 1.000000 "
]
},
"execution_count": 232,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"appt_data.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Notes:\n",
"- Looks like there are some entries where age is unknown, we'll have to deal with these somehow. Could use an `Imputer` to set them to the median value\n",
"- \"Handcap\" [sic] seems to be a continuous value between 0-4, what does this mean? "
]
},
{
"cell_type": "code",
"execution_count": 233,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"No 88208\n",
"Yes 22319\n",
"Name: No-show, dtype: int64"
]
},
"execution_count": 233,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# what about no-show data, how is that represented?\n",
"appt_data['No-show'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 234,
"metadata": {},
"outputs": [],
"source": [
"# that's inconvenient for data representation, let's convert this to an integer value\n",
"import numpy as np\n",
"appt_data['No-show'] = pd.Series(np.where(appt_data['No-show'].values == 'Yes', 1, 0), appt_data.index)"
]
},
{
"cell_type": "code",
"execution_count": 235,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"0 88208\n",
"1 22319\n",
"Name: No-show, dtype: int64"
]
},
"execution_count": 235,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"appt_data['No-show'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's a lot easier to process!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Dates to Day of the Week\n",
"Let's convert both the day that the appointment was made and the date of the appointment into days of the week:"
]
},
{
"cell_type": "code",
"execution_count": 236,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 4\n",
"1 4\n",
"2 4\n",
"3 4\n",
"4 4\n",
"Name: ScheduledDotW, dtype: int64"
]
},
"execution_count": 236,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"appt_data['ScheduledDay'] = pd.to_datetime(appt_data['ScheduledDay'])\n",
"appt_data['ScheduledDotW'] = appt_data['ScheduledDay'].dt.dayofweek\n",
"appt_data['ScheduledDotW'].head()"
]
},
{
"cell_type": "code",
"execution_count": 237,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 4\n",
"1 4\n",
"2 4\n",
"3 4\n",
"4 4\n",
"Name: AppointmentDotW, dtype: int64"
]
},
"execution_count": 237,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"appt_data['AppointmentDay'] = pd.to_datetime(appt_data['AppointmentDay'])\n",
"appt_data['AppointmentDotW'] = appt_data['AppointmentDay'].dt.dayofweek\n",
"appt_data['AppointmentDotW'].head()"
]
},
{
"cell_type": "code",
"execution_count": 238,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2 25867\n",
"1 25640\n",
"0 22715\n",
"4 19019\n",
"3 17247\n",
"5 39\n",
"Name: AppointmentDotW, dtype: int64\n",
"1 26168\n",
"2 24262\n",
"0 23085\n",
"4 18915\n",
"3 18073\n",
"5 24\n",
"Name: ScheduledDotW, dtype: int64\n"
]
}
],
"source": [
"print(appt_data['AppointmentDotW'].value_counts())\n",
"print(appt_data['ScheduledDotW'].value_counts()) # Monday = 0, Sunday = 6"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's now convert these to numerical values for easier processing"
]
},
{
"cell_type": "code",
"execution_count": 239,
"metadata": {},
"outputs": [],
"source": [
"# let's fix the column names, so we don't make mistakes later\n",
"appt_data = appt_data.rename(columns={'Hipertension': 'Hypertension', 'Handcap': 'Handicap'})"
]
},
{
"cell_type": "code",
"execution_count": 240,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 110527 entries, 0 to 110526\n",
"Data columns (total 16 columns):\n",
"PatientId 110527 non-null float64\n",
"AppointmentID 110527 non-null int64\n",
"Gender 110527 non-null object\n",
"ScheduledDay 110527 non-null datetime64[ns]\n",
"AppointmentDay 110527 non-null datetime64[ns]\n",
"Age 110527 non-null int64\n",
"Neighbourhood 110527 non-null object\n",
"Scholarship 110527 non-null int64\n",
"Hypertension 110527 non-null int64\n",
"Diabetes 110527 non-null int64\n",
"Alcoholism 110527 non-null int64\n",
"Handicap 110527 non-null int64\n",
"SMS_received 110527 non-null int64\n",
"No-show 110527 non-null int64\n",
"ScheduledDotW 110527 non-null int64\n",
"AppointmentDotW 110527 non-null int64\n",
"dtypes: datetime64[ns](2), float64(1), int64(11), object(2)\n",
"memory usage: 13.5+ MB\n"
]
}
],
"source": [
"appt_data.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Neighbourhood is not very useful to us and there are way too many categories for analysis, so we'll remove that characteristic and move on."
]
},
{
"cell_type": "code",
"execution_count": 241,
"metadata": {},
"outputs": [],
"source": [
"appt_data = appt_data.drop('Neighbourhood', axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 242,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 110527 entries, 0 to 110526\n",
"Data columns (total 15 columns):\n",
"PatientId 110527 non-null float64\n",
"AppointmentID 110527 non-null int64\n",
"Gender 110527 non-null object\n",
"ScheduledDay 110527 non-null datetime64[ns]\n",
"AppointmentDay 110527 non-null datetime64[ns]\n",
"Age 110527 non-null int64\n",
"Scholarship 110527 non-null int64\n",
"Hypertension 110527 non-null int64\n",
"Diabetes 110527 non-null int64\n",
"Alcoholism 110527 non-null int64\n",
"Handicap 110527 non-null int64\n",
"SMS_received 110527 non-null int64\n",
"No-show 110527 non-null int64\n",
"ScheduledDotW 110527 non-null int64\n",
"AppointmentDotW 110527 non-null int64\n",
"dtypes: datetime64[ns](2), float64(1), int64(11), object(1)\n",
"memory usage: 12.6+ MB\n"
]
}
],
"source": [
"appt_data.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the distribution of \"handicap\"? We saw earlier that values range between [0,4]"
]
},
{
"cell_type": "code",
"execution_count": 243,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 108286\n",
"1 2042\n",
"2 183\n",
"3 13\n",
"4 3\n",
"Name: Handicap, dtype: int64"
]
},
"execution_count": 243,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"appt_data['Handicap'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After some research, it appears that \"Handicap\" refers to the sum of different kinds of disability (e.g., visual, physical, mental, etc.). We'll leave this one alone."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Waiting Time\n",
"Let's create a column that describes how many days passed between when the appointment was made and the day of the appointment."
]
},
{
"cell_type": "code",
"execution_count": 244,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.34894641128412063"
]
},
"execution_count": 244,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"time_deltas = appt_data['AppointmentDay'] - appt_data['ScheduledDay']\n",
"appt_data['WaitingTime'] = time_deltas.copy()\n",
"appt_data['WaitingTime'].where(appt_data['WaitingTime'] < pd.Timedelta(0)).count() / appt_data['WaitingTime'].count()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Interesting_, one third of appointments were created **after** the appointment occurred. We can speculate as to why this is the case, but unfortunately, we'll never know why this is the case.\n",
"\n",
"Let's now convert these `TimeDelta` objects into a number of days."
]
},
{
"cell_type": "code",
"execution_count": 245,
"metadata": {},
"outputs": [],
"source": [
"appt_data['WaitingTime'] = appt_data['WaitingTime'].dt.days"
]
},
{
"cell_type": "code",
"execution_count": 246,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 110527 entries, 0 to 110526\n",
"Data columns (total 16 columns):\n",
"PatientId 110527 non-null float64\n",
"AppointmentID 110527 non-null int64\n",
"Gender 110527 non-null object\n",
"ScheduledDay 110527 non-null datetime64[ns]\n",
"AppointmentDay 110527 non-null datetime64[ns]\n",
"Age 110527 non-null int64\n",
"Scholarship 110527 non-null int64\n",
"Hypertension 110527 non-null int64\n",
"Diabetes 110527 non-null int64\n",
"Alcoholism 110527 non-null int64\n",
"Handicap 110527 non-null int64\n",
"SMS_received 110527 non-null int64\n",
"No-show 110527 non-null int64\n",
"ScheduledDotW 110527 non-null int64\n",
"AppointmentDotW 110527 non-null int64\n",
"WaitingTime 110527 non-null int64\n",
"dtypes: datetime64[ns](2), float64(1), int64(12), object(1)\n",
"memory usage: 13.5+ MB\n"
]
}
],
"source": [
"appt_data.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now have a set of data that seems to be relatively well prepared, let's save it to disk so we can come back to if if we'd like."
]
},
{
"cell_type": "code",
"execution_count": 247,
"metadata": {},
"outputs": [],
"source": [
"appt_data.to_pickle(os.path.join('datasets', 'prepared_data'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Visualizations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's take a look at some histograms to get a feeling of the data"
]
},
{
"cell_type": "code",
"execution_count": 248,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJoAAANeCAYAAABat2SqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xu4XXV97/v3R1BEUQFpUwTa0G2q\nRaioqdBj60nFYkRr7LMthVIJlMrpI95aumuwno1b1BN3t1qvtCgpwaJIrW5SQTGbumppCwJKjYCW\nFKMk5aJy0Ui9hH7PH+O3yCSslcwkc6615lzv1/OsZ435G2OO8fvOOdcca3zH75KqQpIkSZIkSdpd\nj5jtCkiSJEmSJGk8mGiSJEmSJEnSQJhokiRJkiRJ0kCYaJIkSZIkSdJAmGiSJEmSJEnSQJhokiRJ\nkiRJ0kCYaJIkSZpCkguSvGU39/GmJH+1u8dP8itJvrY7dZEkzawkP51kc5I9Zrsu0kwy0SRNIclE\nknuS7DXbdZEkDd9c/96vqn+oqqfMdj0kadTN5Pd9VX2zqvapqgf6qNfCJJVkz2HXa5rjP+zmSpIN\nSf4jyfeS3Jvkn5L8fpK+8ghJTklyVc/jX2r72qOn7IPTlP35IOLS7DDRJG0jyULgV4ACXjKrlZEk\nDZ3f+5I0P/h9v0t+vaoeB/wMsBJ4PXD+Lu7rOrocxDN7yn4F2LhN2XOBz+/iMTQHmGiSHu5k4Grg\nAmD5ZGGSJyb52yTfTXJtkrdsk6F/apK1Se5O8rUkx8981SVJu2DK7/1tJVmW5IZ2Hvi3JEtb+ZOS\nrGnf/+uTvGKbpz4qyYXtju2NSRb37PPn2931e9u6KS98kixJsrHn8euTbGr7/FqSY1r5m5L8dZK/\nauvWJfm5JGcluSvJbUmO3eVXSpJG23T/51+Q5M/b//LfS/L3SX6mZ30leU2SW5N8O8mfTrbqSfKI\nJG9M8o32PXthkie0dQ9ppdS+789J8o/tOJ9NckA7zGRi5d7W3e6XWougf0zyrnaeuDXJ/9XKb2vH\n641jryT/K8k3k9zZYtq7rVuSZGOSM9vzbk9yalt3OnAS8Mft2H+77QtXVfdV1Rrgt4DlSQ5vz31C\ni/lb7TV4Y3tNfh74c+CX2j7vraoft9f/ue25Pwk8Crhkm7Kfw0TTSDPRJD3cycBF7ecFSRa08vcD\n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\nT7HqmCm2LeCMafazClg1Rfl1wOG7WU1JkiRJfXjEoHdYVWdV1cFVtZBuMO+/q6qTgMnZGuDh3SCW\nt+WXte2rlZ+QZK82+8PkjBCSJEmSJEmag2ayb9J0szWcD3y4DfZ9N11yarszQkiSJEmSJGnuGWqi\nqaom6Gb9mXa2hqr6AfCb0zyvPmHSAAAgAElEQVR/yhkhJEmSJEmSNPcMvOucJEmSJEmS5icTTZIk\nSZIkSRoIE02SJEmSJEkaCBNNkiRJkiRJGggTTZIkSZIkSRoIE02SJEmSJEkaCBNNkiRJkiRJGggT\nTZIkSZIkSRoIE02SJEmSJEkaCBNNkiRJkiRJGggTTZIkSZIkSRoIE02SJEmSJEkaCBNNkiRJkiRJ\nGoihJJqSPDrJF5L8S5Ibk/yPVn5okmuSrE/ysSSPauV7tcfr2/qFPfs6q5V/LckLhlFfSZIkSZIk\n7b5htWj6IfC8qno6cCSwNMnRwNuBd1XVk4F7gNPa9qcB97Tyd7XtSHIYcALwNGAp8IEkewypzpIk\nSZIkSdoNQ0k0VWdze/jI9lPA84CPt/LVwEvb8rL2mLb+mCRp5RdX1Q+r6uvAeuDZw6izJEmSpNGU\nZFWSu5J8pads/yRrk9zSfu/XypPkPa3XxJeTPLPnOcvb9rckWd5T/qwk69pz3tOuVSRJU9hzWDtu\nLY+uB54MvB/4N+DeqtrSNtkIHNSWDwJuA6iqLUnuA57Yyq/u2W3vc3qPdTpwOsCCBQuYmJjY6fqe\neURXrQV7b10eVcYw+4ZR/135XO+OzZs3z/gxB2nU6w/jEYMkSTPkAuB9wIU9ZSuAK6tqZZIV7fHr\ngRcCi9rPUcC5wFFJ9gfOBhbT3SS/PsmaqrqnbfMK4BrgcrreFp+egbgkaeQMLdFUVQ8ARybZF/gk\n8NQhHus84DyAxYsX15IlS3Z6H6esuAzokgPvWDe0l2VGGMPsG0b9N5y0ZKD725GJiQl25W9prhj1\n+sN4xNCvdnPiOmBTVb04yaHAxXQ3Ha4HXl5VP0qyF91FxLOA7wC/VVUb2j7OouuK/QDwmqq6opUv\nBd4N7AF8qKpWzmhwkqShq6rP947z2iwDlrTl1cAEXaJpGXBhVRVwdZJ9kxzYtl1bVXcDJFlLNwTI\nBPD4qrq6lV9I1zPDRJMkTWHos85V1b3A54BfAvZNMnn1fTCwqS1vAg4BaOufQHcB8WD5FM+RJI2P\n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\nJEmSJGkgTDRJkiRJkiRpIEw0SZIkSZIkaSBMNEmSJEmSJGkgTDRJkiRJkiRpIEw0SZIkSZIkaSBM\nNEmSJEmSJGkgTDRJkiRJkiRpIEw0SZIkSZIkaSBMNEmSJEmSJGkgTDRJkiRJkiRpIEw0SZIkSZIk\naSBMNGneSfLnSf7fPredSPJ7w66TJGl+SvKmJH/Vln86yeYke8x2vSRJ2pnrJqmXiSaNnSQbkvxH\nku8luTfJPyX5/SSPAKiq36+qc2agHiapJGkEtfPI87cpOyXJVcM8blV9s6r2qaoHhnkcSdLOm61z\nwzR1mZHrjJm6btL4MdGkcfXrVfU44GeAlcDrgfNnt0qSJEmStGvS8Rpec54fUo21qrqvqtYAvwUs\nT3J4kguSvAUgyX5JPpXkW0nuacsHb7Ob/5LkC0m+m+TSJPtPrkhydGsxdW+Sf0mypJW/FfgV4H2t\nG8T7WvlTk6xNcneSryU5vmdfxyW5qbXE2pTkj4b76kiSdkWSFUn+rX1f35TkN3rWnZLkqiT/P3v3\nH29ZXdd7/PWOEUUUQbFJZtDhJlaIaToCXcsmMRjRHO9NEUMBL8m9CWlFP6C6kT/oYqUEphgKAUYO\niF2ZFCNSj1o3EFATAY0JQWZEUYYfDqg4+rl/rO/R7eGcM2fO2eecvfd5PR+P/Zi1v+u71vp898zs\ntddnfb/f9RftvPLFJM/rWb9Pko+1ba8A9uxZtypJJVnW3j86yd8k+XLb1/tb+bTnrnan+/9Mde6S\nJPVXkt9N8r4JZWcmOaMtT/u9PNU1Rc+2pyb5V+B+4N3s+HXGeUneluSD7fxzVZIfb+uS5PQkd7TY\nrkuyf892b+zZz6uSbGzH2JBkr551lW4UyU2tHW9Lkr5+0BoaJpq0JFTVJ4FNdF/KvX4E+Bu6nk+P\nB74J/NWEOkcB/wN4HLANOBMgyQrgg8AbgUcDvwO8L8ljq+oPgU8AJ7RhECck2RW4Avg74EeBI4C3\nJ9mvHecc4H+2nlj7Ax/pU/MlSf31n3Tnk0cBrwP+NsnjetYfCHyBLon0Z8A5PT+2/w64tq17A3D0\nNMd5N/Bw4Ml0543TW/msz12SpHnxt8DaJLsDtBsGRwAX9NTZ4WuKnm1fARwHPBI4hh2/zqCVvQ7Y\nA9gInNrKDwGeDTyJ7rx2OHDnxAYmeQ7wf9r6xwG3AusnVHsB8Ezgp1u9Q6f+yDTKTDRpKfky3Zf3\n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\nAoe36pfRDXfYCNxPN88GLaH0BuDqVu/1VTU+wfir6Z5stwvwofZimmNIkkZEuwGxDtgHuBt4Lw9+\n0umCGLVh2PNhKQz/HPU22r7hN99tNNEkSZp3VfWyKVYdPEndAo6fYj/nAudOUn4NsP8k5XdOdgxJ\n0kh5LvDFqvoaQJK/B55F99TSZa1XU++w6vGh2JvaULtH0U0KPtUQbaYplyRN4BxNkiRJkobZl4CD\nkjy8zbV0MHAD8FHgxa3OxCHaR7flFwMfaTc5NgBHJHlokn2AfYFP0vWk3TfJPkl2ppswfMMCtEuS\nhpI9miRJkiQNraq6KsklwKeAbcCn6YavfRBYn+SNreyctsk5wLuTbAS20CWOqKrr2xPrbmj7Ob6q\nvguQ5ATgcmAn4Nyqun6h2idJw8ZEkyRJkqShVlWn0M3/1+tmuifGTaz7LeAlU+znVODUScovo5tD\nUJK0HQ6dkyRJkiRJUl+YaJIkSZIkSVJfmGiSJEmSJElSX5hokiRJkiRJUl+YaJIkSZIkSVJfmGiS\nJEmSJElSX5hokiRJkiRJUl+YaJIkSZIkSVJfmGiSJEmSJElSX5hokiRJkiRJUl/MKdGU5LeSXJ/k\nc0nek+RhSfZJclWSjUkuSrJzq/vQ9n5jW7+qZz8nt/IvJDm0p3xtK9uY5KS5xCpJkiRJkqT5NetE\nU5IVwGuA1VW1P7ATcATwJuD0qnoicBdwbNvkWOCuVn56q0eS/dp2TwbWAm9PslOSnYC3Ac8D9gNe\n1upKkiRJkiRpAM116NwyYJcky4CHA7cDzwEuaevPB17Ulte197T1BydJK19fVd+uqi8CG4ED2mtj\nVd1cVQ8A61tdSZIkSZIkDaBZJ5qqajPwF8CX6BJM9wDXAndX1bZWbROwoi2vAG5r225r9R/TWz5h\nm6nKJUmSJEmSNICWzXbDJHvQ9TDaB7gbeC/d0LcFl+Q44DiA5cuXMzY2tsP7WL4LnPiUbdPWmc1+\nB8XWrVuHOv6ZGPU22r7htxTaKEmSJGlpm3WiCXgu8MWq+hpAkr8HngXsnmRZ67W0Etjc6m8G9gY2\ntaF2jwLu7Ckf17vNVOU/pKrOBs4GWL16da1Zs2aHG/PWCy/lzddN/3HccuSO73dQjI2NMZvPZZiM\nehtt3/BbCm2UJEmStLTNZY6mLwEHJXl4m2vpYOAG4KPAi1udo4FL2/KG9p62/iNVVa38iPZUun2A\n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\n5pxoctK94TDME5rN1Ki30fYNv6XQxh3Vbkzc3pa/kaS3d+yaVu18YIwu0fT93rHAlUnGe8euofWO\nBWjJqrVJxmi9Y1v5eO9YE02SJEnSPJhTomm6Sfeq6vYdmHRvzYTyMZx0T5KWFHvH9tcg9aAbpFhg\nsOIxlskNUiwwWPEMUiySJE1m1ommGUy6dxoPnnTvhCTr6YY73NOSUZcDf9ozAfghwMlVtSXJvW2C\nvqvoJt1762zjlSQNLnvH9t8g9aAbpFhgsOIxlskNUiwwWPEMUiySJE1mLj2axifduy7JZ1rZH9Al\nmC5OcixwK3B4W3cZcBjdBHr3A6+EbtK9JOOT7sGDJ907D9iFbpiDQx0kacTYO1aSJEkaHbNONDnp\nniRpruwdK0mSJI2Wvjx1TpKkWbJ3rCRJkjRCTDRJkhaNvWMlSZKk0fIjix2AJEmSJEmSRoOJJkmS\nJEmSJPWFiSZJkiRJkiT1hYkmSZIkSZIk9YWJJkmSJEmSJPWFiSZJkiRJkiT1hYkmSZIkSZIk9YWJ\nJkmSJEmSJPWFiSZJkiRJkiT1hYkmSZIkSZIk9YWJJkmSJEmSJPXFssUOQJKG3aqTPjijeuet3XWe\nI5EkSZKkxWWPJkmSJEmSJPWFiSZJkiRJkiT1hYkmSZIkSZIk9YWJJkmSJEmSJPWFiSZJkiRJkiT1\nhYkmSZIkSZIk9YWJJkmSJEmSJPWFiSZJkiRJkiT1xbLFDmB7kqwFzgB2At5VVactckiSpCHjuWRh\nrTrpgz/0/sSnbOOYCWW3nPb8hQxJkubMc4kkzcxA92hKshPwNuB5wH7Ay5Lst7hRSZKGiecSSdJc\neS6RpJkb6EQTcACwsapurqoHgPXAukWOSZI0XDyXSJLmynOJJM3QoA+dWwHc1vN+E3DgxEpJjgOO\na2+3JvnCLI61J/D16SrkTbPY6+DYbvtGwKi30fYNuV9806zb+IR+x7LELNVzycD8n3rNJLEs8jl1\nYD4bjGUqgxQLDFY8nksWx1I9l8yHQfr/NF9GvY22b8jN93XJoCeaZqSqzgbOnss+klxTVav7FNLA\nGfX2wei30fYNv6XQxmE2aucSY5naIMVjLJMbpFhgsOIZpFj0YKN2LpkPo94+GP022r7hN99tHPSh\nc5uBvXver2xlkiTNlOcSSdJceS6RpBka9ETT1cC+SfZJsjNwBLBhkWOSJA0XzyWSpLnyXCJJMzTQ\n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\nr0vm97dHhuhzkiRJkiRJ0gBbakPnJEmSJEmSNE9MNEmSJEmSJKkvTDRJkiRJkiSpL0w0SZIkSZIk\nqS9MNEmSJEmSJKkvTDRJkiRJkiSpL0w0SZIkSZIkqS9MNEmSJEmSJKkvTDRJkiRJkiSpL0w0SZIk\nSZIkqS9MNEmSJEmSJKkvTDRJkiRJkiSpL0w0SZIkSZIkqS9MNEmSJEmSJKkvTDRJkiRJkiSpL0w0\nSZIkSZIkqS9MNEmSJEmSJKkvTDRJkiRJkiSpL0w0SXOQpJI8cbHjkCRJkrTwktyS5Ll92td5Sd7Y\n77r93FaaCRNNGkntC/+OJLv2lP1akrFFDEuSpL5KcmSSf5qH/a5Jsqnf+5WkQZbk55L8vyT3JNmS\n5F+TPHOx45pP7fv+e0m2ttemJBfvSLuTjCX5tZ73f53krJ73D0ly3xRlB/WvNRoUJpo0ynYCXrvY\nQUiSFs9UFw1Jjmm9Uk+fUH9dKz+vp+zYJJ9P8o0kX01yWZJHLnhjJlFVF1bVIYsdhyQNuyS7AR8A\n3go8GlgBvA749mLGtUC+XFWPAB4JHAR8HvhEkoNnub+PA8/ueb8a+BLw8xPKAK6d5TE0wEw0aZT9\nOfA7SXafuCLJf01ydbvwuDrJf51qJ0memORjre7Xk1w0ocpzk9yU5O4kb0uStt2PJPmjJLe23lUX\nJHlUW3d+khPb8op2UXN8e//j7WLI/5+SNAczuGj4T+DwJMt6Njsa+I+effwC8KfAy6rqkcBPARPP\nAzOJZafZtEGStGCeBFBV76mq71bVN6vqn6rqswBJXpXkxnbT4YYkT+/Z9mlJPtuuFy5K8rDxFUle\nkOQz7Vrh/yX56Z51P5PkU22fFwG92x2T5F96A5xu2o7ZHqdXdTZV1R8D7wLe1LOPSa+fkpxKl0D6\nq9Yj6q/oEk0/lWTPtvnPA+uBXSeU/VtVfWeyWDTcvJDVKLsGGAN+p7cwyaOBDwJnAo8B3gJ8MMlj\nptjPG4B/AvYAVtJdsPR6AfBM4KeBw4FDW/kx7fWLwH8BHgH8VVv3MWBNW/4F4GZ+kPX/BeATVfW9\nmTVTkjSFaS8agK8A19G+t9v54b8CG3r28Uy6H8KfbvvaUlXnV9U3pjtwuvkvzmq9n+4DfjHJQ5P8\nRZIvtZ5R70iyS88269pFwr1J/jPJ2lb+qCTnJLk9yeYkbxxPXPVeiLTj/cWEOC5N8tttea8k70vy\n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\nbQFOaysGHQc8WlX3D7pTmhXvJd5Lhp33Eu8lGj0z+b7WEGtzMV4K3F1VfzDo/iyEJD828fRrkgOA\nlwJ/M9he9U9VnVtVq9r9/xS6/7/9yoC71TdJDkzy9Ilt4ARgQVaBXLEQFx1WVbUnyRuBrXQrO2yq\nqjuTvA24paq20P1w+GCS7XST1Z0yuB7Pzgzz+8/A04A/a/PSfrWqXjmwTs/CDPMbaTPMcStwQpK7\ngCeA/7uqRuJJiRnmdw7dEI7fphtDfMYI/YJOkg/T/fJ2SJsb5Dy6iRKpqvfRzRVyErAd+A7wusH0\nVHPlvcR7ybDzXuK9RKNnb9/XA+5WX031fV1Vlw62V331YuBXgTvaHEYAv1tV1w2wT/12KHB5kv3o\nHlq5uqo+OuA+aebGgI+0/7utAD5UVZ9YiDfKCN1zJUmSJEmSNMSW29A5SZIkSZIkLRALTZIkSZIk\nSeoLC02SJEmSJEnqCwtNkiRJkiRJ6gsLTZIkSZIkSeoLC02SJEmSJEnqCwtNkiRJkiRJ6gsLTZIk\nSZIkSeoLC02SJEmSJEnqCwtNkiRJkiRJ6gsLTZIkSZIkSeoLC02SJEmSJEnqCwtNkiRJkiRJ6gsL\nTZIkSZIkSeoLC02SJEmSJEnqCwtNkiRJkiRJ6gsLTZIkSZIkSeoLC02SJEmSJEnqCwtNWjaS7Ejy\nS3M8t5IcsQB9Gk/ya3s59o+T7E6yX7/fV5I0d0l+N8kHpjl+apJPLkI/FuV9JEmSZsNCk0ZSkp9L\n8j+TPJrkoSR/leSfD7pf/VRVX62qp1XVE4PuiySNuiTnJvn4pNg9e4mdMt21quo/VNWvtfar24cR\nK3qOX1lVJ/Shz3e2Dxx2J3kiyXd79n+3X+8jSZLUTyv23UQaLkmeAXwU+HXgamB/4OeB7w2yX1NJ\nsqKq9gy6H5IkPg1sTLJfVT2R5FDgScALJ8WOaG0HrqqeN7GdZBz406ra65NUkiRJw8AnmjSKngtQ\nVR+uqieq6u+q6pNVdTtAktcnuTvJt5LcleTonnNfkOT29iTUVUmeMnGgnbe9PSG1JclzpnrzJC9P\ncluSx5Lcl+StPccmPtk+M8lXgU8leUqSP03yYJJHktycZKznkj/Rnsj6VpJPJjlk0rVWtP3xJP8x\nyWfbe1+b5Fn9+kOVpCXuZrrC0gva/s8DNwJfnBT7UlV9Lcm728/4x5LcmuTnJy6U5K1J/rTtThSl\nHmlPGv1skjOSfKanfSX5t+1pqUeSvDdJ2rH9klyY5G+TfDnJGyc/IbU3e3mfN7T3+VaStyf5yfYE\n8GNJrk6yf0/7VyT5fOvT/0zyz2b7hypJkjSZhSaNov8NPJHk8iQnJjl44kCS1wBvBU4DngG8Eniw\n59yTgfXA4cA/A85o570E+I/t+KHAV4DNe3n/b7frHwS8HPj1JK+a1Ob/BP4p8DLgdOCZwGHAs4F/\nC/xdT9t/BbwO+HG6p7P+3TS5nwb869bHPcBF07SVJDVV9ThwE/ALLfQLwP8APjMpNlE4upmuAPUs\n4EPAn/V+ONFj4tyD2nDnv95LF14B/HO6e8/JdPcHgNcDJ7b3OhqYfD+ZrZcBLwKOA34HuAT4Fbp7\n0FHAawGSvBDYBPwbunvTHwNbkjx5nu8vSZKWOQtNGjlV9Rjwc0AB7we+2Z5AGgN+DfhPVXVzdbZX\n1Vd6Tr+oqr5WVQ8B/x8/+BT7VGBTVX2uqr4HnAv8bJLVU7z/eFXdUVX/0J6i+jBdYanXW6vq21X1\nd8Df0/0n/oj2BNatLYcJf1JV/7u1vbqnT1P5YFV9oaq+Dfy/wMlxsnBJmqn/zg8KQz9PV2j6H5Ni\n/x2gqv60qh6sqj1VdSHwZOCn5vHeF1TVI1X1VbonqSZ+1p8MvLuqdlbVw8AF83gP6O6Bj1XVncAX\ngE9W1b1V9SjwceCFrd1ZwB9X1U3t3nQ53RD04+b5/pIkaZmz0KSRVFV3V9UZVbWK7hPa5wB/SPeJ\n7ZemOfXrPdvfAZ7Wtp9D9xTTxPV30z0JtXLyBZIcm+TGJN9M8ijdE0qHTGp2X8/2B4GtwOYkX0vy\nn5I8aQZ9mkrvdb9CNwxk8ntLkqb2aeDn2rDjH6uqe4D/CfyLFjuqtSHJv2vDsB9N8gjdk6nz+Xk7\n3f2n92d77/ZcfKNn+++m2J94358AzmnD5h5pOR7W+iNJkjRnFpo08qrqb4DL6H5BuA/4yTlc5mt0\n/+kGIMmBdE8h7Zqi7YeALcBhVfVM4H1AJnerp39/X1W/X1VHAv+CbvjEaXPoI3S/BEz4x3RPS/3t\nHK8lScvNX9MVjF4P/BV8/ynZr7XY16rqy20+pt+he9ro4Ko6CHiUH/1ZDz0/7+fofmBVz/5he2vY\nZ/cB51fVQT2vp1bVhxfp/SVJ0hJloUkjJ8lPJzknyaq2fxjdnBPbgA8A/y7Ji9I5IslPTHe95sPA\n65K8oM1P8R+Am6pqxxRtnw48VFXfTXIM3RxL0/X3F5M8vw1xe4yuOPQPM0x3sl9JcmSSpwJvA66p\nqifmeC1JWlbaEOVbgDfTDZmb8JkWm5if6el08+B9E1iR5Pfo5v2byjfpfqb/kzl262rgTUlWJjkI\neDoRekEAACAASURBVMscrzNb7wf+bXtKN0kOTLfYxdMX6f0lSdISZaFJo+hbwLHATUm+TVdg+gJw\nTlX9GXA+3VNH3wL+G91ErtOqqr+km/Poz+k+Xf5J4JS9NH8D8LYk3wJ+j+6XhOn8H8A1dEWmu+nm\n//jgvvq0Fx+ke3rr68BTgN+c43Ukabn673SLL3ymJ/Y/Wmyi0LQV+ATd4hNfAb7LXoa0VdV36O47\nf9WGoM12jqP3A58EbgduA66jK3It6IcIVXUL3VNc/xV4GNhOWyBDkiRpPlI13ye+JS2GJOPAn1bV\nBwbdF0nSwkhyIvC+qprJ07iSJElDxyeaJEmSBiTJAUlOSrIiyUrgPOAjg+6XJEnSXFlokiRJGpwA\nv083fO02uiHWvzfQHkmSJM2DQ+ckSZIkSZLUFz7RJEkauCT7JbktyUfb/uFJbkqyPclVSfZv8Se3\n/e3t+Oqea5zb4l9M8rKe+PoW255k42LnJkmSJC0nKwbdgX475JBDavXq1bM+79vf/jYHHnhg/zs0\nJJZ6frD0czS/0TfXHG+99da/raofW4AuDZM30Q0ZmlhC/p3Au6pqc5L3AWcCF7evD1fVEUlOae1+\nOcmRdCtFPg94DvCXSZ7brvVe4KXATuDmJFuq6q7pOjPXe8lsDOv3vP2aHfs1O/ZrdvrZr2VyL5Ek\nDYElV2havXo1t9xyy6zPGx8fZ926df3v0JBY6vnB0s/R/EbfXHNM8pX+92Z4JFkFvJxuifg3Jwnw\nEuBftSaXA2+lKzRtaNsA1wD/tbXfAGyuqu8BX06yHTimtdteVfe299rc2k5baJrrvWQ2hvV73n7N\njv2aHfs1O/3s11K/l0iShseSKzRJkkbOHwK/Azy97T8beKSq9rT9ncDKtr0SuA+gqvYkebS1Xwls\n67lm7zn3TYofO1UnkpwFnAUwNjbG+Pj43DOagd27dy/4e8yF/Zod+zU79mt2hrVfkiRNx0KTJGlg\nkrwCeKCqbk2ybpB9qapLgEsA1q5dWwv9dMNyeIKin+zX7Niv2bFfkiT1j4UmSdIgvRh4ZZKTgKfQ\nzdH0buCgJCvaU02rgF2t/S7gMGBnkhXAM4EHe+ITes/ZW1ySJElSn+1z1bkkm5I8kOQLPbFnJbk+\nyT3t68EtniQXtZV9bk9ydM85p7f29yQ5vSf+oiR3tHMuanNt7PU9JElLR1WdW1Wrqmo13WTen6qq\nU4EbgVe3ZqcD17btLW2fdvxTVVUtfkpble5wYA3wWeBmYE1bxW7/9h5bFiE1SZIkaVnaZ6EJuAxY\nPym2EbihqtYAN7R9gBPp/nO/hm6ei4uhKxoB59HNi3EMcF5P4ehi4PU9563fx3tIkpa+t9BNDL6d\nbg6mS1v8UuDZLf5m2r2hqu4Erqab5PsTwNlV9UR7IuqNwFa6Ve2ubm0lSZIkLYB9Dp2rqk8nWT0p\nvAFY17YvB8bpfinYAFzRPl3eluSgJIe2ttdX1UMASa4H1icZB55RVdta/ArgVcDHp3kPSdISVFXj\ndD/raavEHTNFm+8Cr9nL+efTrVw3OX4dcF0fuypJkiRpL+Y6R9NYVd3ftr8OjLXt768G1Eys+jNd\nfOcU8ene40f0Y6WgBx56lPdcee20bZ6/8pmzvu6wWA6rliz1HM1v9C2HHJe71Rs/ts82Oy54+SL0\nRJIkSRqMeU8GXlWVpPrRmbm+Rz9WCnrPlddy4R3T/3HsOHX21x0Wy2HVkqWeo/mNvuWQoyRJkqTl\nbSZzNE3lG21IHO3rAy2+t1V/pouvmiI+3XtIkiRJkiRpCM210NS76s/k1YBOa6vPHQc82oa/bQVO\nSHJwmwT8BGBrO/ZYkuPaanOnMfXKQr3vIUmSJEmSpCG0z6FzST5MNyn3IUl20q0edwFwdZIzga8A\nJ7fm1wEnAduB7wCvA6iqh5K8nW6ZaYC3TUwMDryBbmW7A+gmAf94i+/tPSRJkiRJkjSEZrLq3Gv3\ncuj4KdoWcPZerrMJ2DRF/BbgqCniD071HpIkSZIkSRpOcx06J0mSJEmSJP0QC02SJEmSJEnqCwtN\nkiRJkiRJ6gsLTZIkSZIkSeoLC02SJEmSJEnqCwtNkiRJkiRJ6gsLTZIkSZIkSeoLC02SJEmSJEnq\nCwtNkiRJkiRJ6gsLTZIkSZIkSeoLC02SJEmSJEnqCwtNkiRJkiRJ6gsLTZIkSZIkSeoLC02SJEmS\nJEnqCwtNkiRJkiRJ6gsLTZIkSZIkSeoLC02SJEmSJEnqCwtNkiRJkiRJ6gsLTZIkSZIkSeoLC02S\n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\nAHclOR54Cng7veLVPUmuA54Grmht7wcuBXYBL7e2VNX+JB8CHmrtbqyq/W35XcDtwAnAl9pDkiRJ\nkiRJE2ioQlNVPQKsnmHThTO0LeD6WY6zBdgyQ/xh4KxhcpQkSZIkSdJoDDNHkyRJkiRJkvR9Fpok\nSZIkSZLUCQtNkiRJkiRJ6oSFJkmSJEmSJHXCQpMkaWySnJ7kK0keT/JYkve2+ClJtid5sn09ucWT\n5JYku5I8muTcvmOtb+2fTLK+L/7GJDvbPrckyeh7KkmSJC0NFpokSeN0ENhYVWcCFwDXJzkT2AQ8\nUFWrgAfaOsAlwKr22ADcCr3CFHADcD5wHnDDoeJUa/OOvv3WjqBfkiRJ0pJkoUmSNDZVta+qvtaW\nvw08ASwH1gF3tGZ3AJe35XXAndWzAzgpyWnAxcD2qtpfVS8A24G1bduJVbWjqgq4s+9YkiRJkjpm\noUmSNBGSrATOAR4EpqpqX9v0LDDVlpcDz/TttqfFjhTfM0NckiRJ0gJYNu4EJElK8lrgc8D7quql\n/mmUqqqS1Ahy2EBvOB5TU1NMT0/P+Rgbzz44cNupE47cfj7P34UDBw6M7bmPxLzmxrzmxrwkSeqO\nhSZJ0lgleRW9ItNdVfX5Fn4uyWlVta8Nf3u+xfcCp/ftvqLF9gJrDotPt/iKGdq/QlVtBjYDrF69\nutasWTNTsyO6dtN9A7fdePZBbt45+8fw7qvn/vxdmJ6eZj59X2jmNTfmNTfmJUlSdxw6J0kam3YH\nuNuAJ6rqo32btgKH7hy3Hri3L35Nu/vcBcCLbYjdNuCiJCe3ScAvAra1bS8luaA91zV9x5IkSZLU\nMa9okiSN05uAtwE7kzzSYh8AbgLuSXId8DRwRdt2P3ApsAt4GXg7QFXtT/Ih4KHW7saq2t+W3wXc\nDpwAfKk9JEmSJC0AC02SpLGpqj8EMsvmC2doX8D1sxxrC7BlhvjDwFlDpClJkiRpQA6dkyRJkiRJ\nUicsNEmSJEmSJKkTFpokSZIkSZLUCQtNkiRJkiRJ6oSFJkmSJEmSJHXCQpMkSZIkSZI6YaFJkiRJ\nkiRJnbDQJEmSJEmSpE5YaJIkSZIkSVInLDRJkiRJkiSpE0MXmpIcl+TrSb7Y1s9I8mCSXUk+k+T4\nFn91W9/Vtq/sO8b7W/ybSS7ui69tsV1JNg2bqyRJkiRJkhZOF1c0vRd4om/9w8BvVNU/BF4Armvx\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f8c74edfc50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"chars = ['Age', 'Alcoholism', 'Diabetes', 'Handicap', 'Hypertension', 'SMS_received', 'Scholarship', 'No-show',\n",
" 'AppointmentDotW', 'ScheduledDotW', 'WaitingTime']\n",
"appt_data[chars].hist(bins=30, figsize=(20,15))\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Some Observations:\n",
"- Age of patients starts dropping off around 65. The highest concentration of patient age looks to be of toddler age.\n",
"- Most people wait somewhere between 0 - 25 days for the appointment\n",
"- Monday - Wednesday are slightly favoured for both when appointments are create and when appointments lie - This could be due to clinic hours in Brazil (?)\n",
"\n",
"Let's now look at some histograms to see if we can spot any correlations:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Train / Test Split"
]
},
{
"cell_type": "code",
"execution_count": 249,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nK8lXV42/YPUx/58xxh1J7kiSbdu2jaWlpXUsfx6Wl5dzKjyOjXLjrj2LXkKS5Knrlxa9hFl57z33\n59171/PjYv3m8pzYo/Nkjx5hj87THPZoMo/nxR6dJ7+TMnf2KHN3Ou7R9byH0p8mubyqvn16L6Qr\nknwuyceTvHmac0OS+6fLD0zXM93+O2Pl9KgHklw3fQrchUkuSvLJdawLAAAAgJNozf+rbIzxaFXd\nl+T3kzyf5DNZOXtoT5LdVfXOaezO6ZA7k/xGVe1LcjArn+yWMcYTVXVvVmLU80luHmN8c63rAgAA\nAODkWte512OMW5LcctTwkznGp7SNMf46yY8e5/vcmuTW9awFAAAAgJfGel7yBgAAAMBpSFACAAAA\noEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACg\nRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBF\nUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQ\nAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVAC\nAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIA\nAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAA\nAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAA\noEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACg\nRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBF\nUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQ\nAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgRVACAAAAoEVQAgAAAKBFUAIAAACgZV1B\n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\nAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEA\nAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEA\nAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEA\nAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEA\nAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEA\nAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEA\nAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEA\nAAAwRFACAAAAYIigBAAAAMCQDXMPAAAAAC9m38HDuXLXbXOPkYd3Xz73CLAYzlACAAAAYIigBAAA\nAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAwRFACAAAAYIigBAAA\nAMCQxQSlqtpeVQ9W1f6q2jX3PAAAAACsbRFBqapOS/LhJJcl2Zrk3VW1dd6pAAAAAFjLIoJSkguS\n7O/ur3b3U0n2JNkx80wAAAAArGEpQWlTkkdW3T8wHQMAAABgYaq7554hVfUzSbZ39y9N969I8pbu\nvuaIx12V5Krp7nlJHlzXQY+P70nyn3MPAS/BnrJ0dpSls6MsnR1l6ewoS3cy7ej3d/f3vtSDNqzH\nJP8PB5Ocver+5unY83T3dUmuW6+h1kNV/VN3b5t7Dngx9pSls6MsnR1l6ewoS2dHWbpTcUeX8pS3\nu5Nsqapzq+rVSd6V5NaZZwIAAABgDYs4Q6m7n66qa5LckeS0JNd3930zjwUAAADAGhYRlJKku29P\ncvvcc8zgpHoKHycte8rS2VGWzo6ydHaUpbOjLN0pt6OLuCg3AAAAACeOpVxDCQAAAIAThKA0o6ra\nXlUPVtX+qto19zywWlWdXVWfr6r7q+q+qrp27plgLVV1WlX9c1V9Zu5Z4EhVdUZV3VRV/1JVD1TV\nj849E6xWVb82fZ//SlV9oqpeM/dMUFXXV9XjVfWVVcfeUFV7q+qh6e2Zc87Iqe0oO/qH0/f7e6vq\n01V1xpwzrgdBaSZVdVqSDye5LMnWJO+uqq3zTgXP83SS93X31iQXJrnajrJQ1yZ5YO4h4Cj+JMnf\ndvcPJPmh2FUWpKo2JfmVJNu6+41ZeXGcd807FSRJPp5k+xHHdiW5s7u3JLlzug9z+XheuKN7k7yx\nu9+U5F+TvH+9h1pvgtJ8Lkiyv7u/2t1PJdmTZMfMM8GzuvtQd98z3f5WVn4I2jTvVPB8VbU5yeVJ\nPjr3LHCkqnp9kh9P8rEk6e6nuvub804FL7AhyXdV1YYkr03yHzPPA+nuv0/yxBGHdyS5Ybp9Q5J3\nrutQsMpaO9rdn+3up6e7X0iyed0HW2eC0nw2JXlk1f0D8cM6C1VV5yQ5P8kX550EXuCPk/x6kv+d\nexBYw7lJvp7kL6enZX60ql4391DwjO4+mOSDSb6W5FCSw9392XmngqPa2N2HptuPJtk45zDwEn4x\nyd/MPcTxJigBL6qqTk/yqSS/2t3/Nfc88IyqenuSx7v7S3PPAkexIcmbk3yku89P8t/xFA0WZLoG\nzY6sxM/vS/K6qvq5eaeCl9YrL1Xu5cpZpKr6raxcPuTGuWc53gSl+RxMcvaq+5unY7AYVfWqrMSk\nG7v75rnngSNclOQdVfVwVp42/BNV9dfzjgTPcyDJge5+5uzOm7ISmGApfjLJv3X317v7f5LcnOTH\nZp4JjuaxqjorSaa3j888D7xAVV2Z5O1J3jOFz5OaoDSfu5Nsqapzq+rVWbkA4q0zzwTPqqrKynU/\nHujuD809Dxypu9/f3Zu7+5ys/Bv6ue72P+ssRnc/muSRqjpvOnRpkvtnHAmO9LUkF1bVa6fv+5fG\nheNZrluT7Jxu70xyy4yzwAtU1fasXIrhHd397bnnWQ+C0kymi3Vdk+SOrHzj/mR33zfvVPA8FyW5\nIitnfXx5+vW2uYcCOMH8cpIbq+reJD+c5A9mngeeNZ09d1OSe5Lsy8rPBtfNOhQkqapPJPnHJOdV\n1YGqem+S3Ul+qqoeysrZdbvnnJFT21F29M+TfHeSvdPPTn8x65DroE6Bs7AAAAAAeAU5QwkAAACA\nIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAwRFACAAAAYIigBAAAAMCQ/wMUdox+\nOe5BSwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f8c883d8358>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Let's create an age category\n",
"age_cat = np.ceil(appt_data['Age'] / 10)\n",
"\n",
"# Let's group anybody >100yrs old into the 100 year old category, as they are outliers\n",
"age_cat.where(age_cat < 100, 100, inplace=True)\n",
"\n",
"age_cat.hist(bins=30, figsize=(20,15))\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great, this histogram's distribution looks similar to the `Age` histogram. Let's add it to our data."
]
},
{
"cell_type": "code",
"execution_count": 250,
"metadata": {},
"outputs": [],
"source": [
"appt_data['AgeCategory'] = age_cat"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now create a stratified sample based on the `AgeCategory`"
]
},
{
"cell_type": "code",
"execution_count": 251,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import StratifiedShuffleSplit\n",
"\n",
"split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)\n",
"for train_index, test_index in split.split(appt_data, appt_data['AgeCategory']):\n",
" strat_train_set = appt_data.loc[train_index]\n",
" strat_test_set = appt_data.loc[test_index]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's ensure that proportions are similar"
]
},
{
"cell_type": "code",
"execution_count": 252,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"6.0 0.141694\n",
"1.0 0.137613\n",
"4.0 0.136184\n",
"5.0 0.130466\n",
"3.0 0.124703\n",
"2.0 0.118514\n",
"7.0 0.101233\n",
"8.0 0.051761\n",
"0.0 0.032028\n",
"9.0 0.023017\n",
"10.0 0.002723\n",
"12.0 0.000045\n",
"11.0 0.000018\n",
"Name: AgeCategory, dtype: float64\n",
"6.0 0.141681\n",
"1.0 0.137610\n",
"4.0 0.136207\n",
"5.0 0.130462\n",
"3.0 0.124717\n",
"2.0 0.118520\n",
"7.0 0.101239\n",
"8.0 0.051751\n",
"0.0 0.032028\n",
"9.0 0.023025\n",
"10.0 0.002714\n",
"12.0 0.000045\n",
"Name: AgeCategory, dtype: float64\n"
]
}
],
"source": [
"print(appt_data['AgeCategory'].value_counts() / len(appt_data))\n",
"print(strat_test_set['AgeCategory'].value_counts() / len(strat_test_set))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Looks great! We can now remove the `AgeCategory`."
]
},
{
"cell_type": "code",
"execution_count": 253,
"metadata": {},
"outputs": [],
"source": [
"for set_ in (strat_train_set, strat_test_set):\n",
" set_.drop('AgeCategory', axis=1, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 254,
"metadata": {},
"outputs": [],
"source": [
"# let's pickle this data so we can come back to it if necessary\n",
"strat_train_set.to_pickle(os.path.join('datasets', 'strat_train_set'))\n",
"strat_test_set.to_pickle(os.path.join('datasets', 'strat_test_set'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Correlation\n",
"Let's look for some correlations in the data"
]
},
{
"cell_type": "code",
"execution_count": 255,
"metadata": {},
"outputs": [],
"source": [
"data = strat_train_set.copy()"
]
},
{
"cell_type": "code",
"execution_count": 256,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"No-show 1.000000\n",
"WaitingTime 0.186947\n",
"SMS_received 0.125284\n",
"Scholarship 0.029843\n",
"ScheduledDotW 0.005464\n",
"AppointmentDotW 0.001655\n",
"PatientId -0.001909\n",
"Alcoholism -0.002125\n",
"Handicap -0.004115\n",
"Diabetes -0.015732\n",
"Hypertension -0.036250\n",
"Age -0.059259\n",
"AppointmentID -0.162624\n",
"Name: No-show, dtype: float64"
]
},
"execution_count": 256,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"corr_matrix = data.corr()\n",
"corr_matrix['No-show'].sort_values(ascending=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- Nothing super concrete\n",
"- AppointmentID is pretty useless here\n",
"- There's a significant positive correlation between a patient missing an appointment and a high wait time\n",
"- Interestingly, there's also a small positive correlation between receiving an SMS reminder and missing an appointment\n",
" * My bias is showing, but I assumed it would be the other way around\n",
" * Let's see if we can find out why this is the case"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# DataFrame Transformer\n",
"Allows us to feed a `DataFrame` straight into a pipeline and select columns."
]
},
{
"cell_type": "code",
"execution_count": 257,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.base import BaseEstimator, TransformerMixin\n",
"\n",
"class DataFrameSelector(BaseEstimator, TransformerMixin):\n",
" def __init__ (self, attribute_names):\n",
" self.attribute_names = attribute_names\n",
" \n",
" def fit(self, X, y=None):\n",
" return self\n",
" \n",
" def transform(self, X):\n",
" return X[self.attribute_names].values"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Set Up Pipelines To Ready for Prediction"
]
},
{
"cell_type": "code",
"execution_count": 258,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 88421 entries, 44864 to 36472\n",
"Data columns (total 16 columns):\n",
"PatientId 88421 non-null float64\n",
"AppointmentID 88421 non-null int64\n",
"Gender 88421 non-null object\n",
"ScheduledDay 88421 non-null datetime64[ns]\n",
"AppointmentDay 88421 non-null datetime64[ns]\n",
"Age 88421 non-null int64\n",
"Scholarship 88421 non-null int64\n",
"Hypertension 88421 non-null int64\n",
"Diabetes 88421 non-null int64\n",
"Alcoholism 88421 non-null int64\n",
"Handicap 88421 non-null int64\n",
"SMS_received 88421 non-null int64\n",
"No-show 88421 non-null int64\n",
"ScheduledDotW 88421 non-null int64\n",
"AppointmentDotW 88421 non-null int64\n",
"WaitingTime 88421 non-null int64\n",
"dtypes: datetime64[ns](2), float64(1), int64(12), object(1)\n",
"memory usage: 11.5+ MB\n"
]
}
],
"source": [
"data.info()"
]
},
{
"cell_type": "code",
"execution_count": 259,
"metadata": {},
"outputs": [],
"source": [
"# https://github.com/scikit-learn/scikit-learn/pull/7375/files#diff-1e175ddb0d84aad0a578d34553f6f9c6\n",
"class LabelBinarizerPipelineFriendly(LabelBinarizer):\n",
" def fit(self, X, y=None):\n",
" \"\"\"this would allow us to fit the model based on the X input.\"\"\"\n",
" super(LabelBinarizerPipelineFriendly, self).fit(X)\n",
" def transform(self, X, y=None):\n",
" return super(LabelBinarizerPipelineFriendly, self).transform(X)\n",
"\n",
" def fit_transform(self, X, y=None):\n",
" return super(LabelBinarizerPipelineFriendly, self).fit(X).transform(X)"
]
},
{
"cell_type": "code",
"execution_count": 260,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/mathieu/Develop/git/HackDayProject/venv/lib/python3.5/site-packages/sklearn/utils/validation.py:475: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n",
" warnings.warn(msg, DataConversionWarning)\n"
]
}
],
"source": [
"from sklearn.pipeline import Pipeline, FeatureUnion\n",
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"numerical_attrs = ['Age', 'Scholarship', 'Hypertension', 'Diabetes', \n",
" 'Alcoholism', 'Handicap', 'SMS_received', 'WaitingTime']\n",
"categorical_attrs = ['Gender']\n",
"\n",
"labels = data['No-show'].copy()\n",
"data = data.drop('No-show', axis=1)\n",
"\n",
"num_pipeline = Pipeline([\n",
" ('selector', DataFrameSelector(numerical_attrs)),\n",
" ('std_scaler', StandardScaler())\n",
"])\n",
"\n",
"cat_pipeline = Pipeline([\n",
" ('selector', DataFrameSelector(categorical_attrs)),\n",
" ('label_binarizer', LabelBinarizerPipelineFriendly())\n",
"])\n",
"\n",
"full_pipeline = FeatureUnion(transformer_list=[\n",
" ('num_pipeline', num_pipeline),\n",
" ('cat_pipeline', cat_pipeline)\n",
"])\n",
"\n",
"prepared_data = full_pipeline.fit_transform(data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Selecting and Training a Model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linear Regression"
]
},
{
"cell_type": "code",
"execution_count": 261,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)"
]
},
"execution_count": 261,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"lin_reg = LinearRegression()\n",
"lin_reg.fit(prepared_data, labels)"
]
},
{
"cell_type": "code",
"execution_count": 262,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Predictions: [ 0.26903984 0.19360012 0.19776904 0.23113952 0.17055647]\n",
"Labels: 44864 1\n",
"24799 1\n",
"108547 1\n",
"24979 1\n",
"10221 0\n",
"Name: No-show, dtype: int64\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/mathieu/Develop/git/HackDayProject/venv/lib/python3.5/site-packages/sklearn/utils/validation.py:475: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n",
" warnings.warn(msg, DataConversionWarning)\n"
]
}
],
"source": [
"some_data_pt = data.iloc[:5]\n",
"some_data_label = labels.iloc[:5]\n",
"some_data_pt_prepared = full_pipeline.transform(some_data_pt)\n",
"print('Predictions:', lin_reg.predict(some_data_pt_prepared))\n",
"print('Labels:', some_data_label)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"** Not even close...**"
]
},
{
"cell_type": "code",
"execution_count": 263,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.39229643378648837"
]
},
"execution_count": 263,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import mean_squared_error\n",
"predictions = lin_reg.predict(prepared_data)\n",
"lin_mse = mean_squared_error(labels, predictions)\n",
"lin_rmse = np.sqrt(lin_mse)\n",
"lin_rmse"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# DecisionTreeRegressor"
]
},
{
"cell_type": "code",
"execution_count": 264,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,\n",
" max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
" min_impurity_split=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=42, splitter='best')"
]
},
"execution_count": 264,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.tree import DecisionTreeRegressor\n",
"\n",
"dec_tree = DecisionTreeRegressor(random_state=42)\n",
"dec_tree.fit(prepared_data, labels)"
]
},
{
"cell_type": "code",
"execution_count": 265,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.2968375571401668"
]
},
"execution_count": 265,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tree_predictions = dec_tree.predict(prepared_data)\n",
"tree_mse = mean_squared_error(labels, tree_predictions)\n",
"tree_rmse = np.sqrt(tree_mse)\n",
"tree_rmse"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Better. Still not great"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# RandomForestRegressor"
]
},
{
"cell_type": "code",
"execution_count": 266,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.31167539452639936"
]
},
"execution_count": 266,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.ensemble import RandomForestRegressor\n",
"\n",
"forest_reg = RandomForestRegressor()\n",
"forest_reg.fit(prepared_data, labels)\n",
"forest_preds = forest_reg.predict(prepared_data)\n",
"forest_mse = mean_squared_error(labels, forest_preds)\n",
"forest_rmse = np.sqrt(forest_mse)\n",
"forest_rmse"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Worse. Let's go back to Decision Trees and see if we can fine tune that model."
]
},
{
"cell_type": "code",
"execution_count": 283,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"RandomizedSearchCV(cv=None, error_score='raise',\n",
" estimator=DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,\n",
" max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
" min_impurity_split=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=42, splitter='best'),\n",
" fit_params=None, iid=True, n_iter=1000, n_jobs=1,\n",
" param_distributions={'splitter': ['best', 'random'], 'max_features': <scipy.stats._distn_infrastructure.rv_frozen object at 0x7f8c884dae10>, 'max_depth': <scipy.stats._distn_infrastructure.rv_frozen object at 0x7f8c884da4a8>},\n",
" pre_dispatch='2*n_jobs', random_state=None, refit=True,\n",
" return_train_score='warn', scoring='neg_mean_squared_error',\n",
" verbose=0)"
]
},
"execution_count": 283,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.model_selection import RandomizedSearchCV\n",
"from scipy.stats import randint as sp_randint\n",
"\n",
"params = {\n",
" 'max_depth': sp_randint(10, 100000),\n",
" 'max_features': sp_randint(1, 10),\n",
" 'splitter': ['best', 'random']\n",
"}\n",
"\n",
"dec_tree = DecisionTreeRegressor(random_state=42)\n",
"rand_search = RandomizedSearchCV(dec_tree, param_distributions=params,\n",
" n_iter=1000, \n",
" scoring='neg_mean_squared_error')\n",
"\n",
"rand_search.fit(prepared_data, labels)"
]
},
{
"cell_type": "code",
"execution_count": 284,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'max_depth': 21, 'max_features': 2, 'splitter': 'best'}"
]
},
"execution_count": 284,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rand_search.best_params_"
]
},
{
"cell_type": "code",
"execution_count": 285,
"metadata": {},
"outputs": [],
"source": [
"final_model = rand_search.best_estimator_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Evaluate Against Test Set"
]
},
{
"cell_type": "code",
"execution_count": 286,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/mathieu/Develop/git/HackDayProject/venv/lib/python3.5/site-packages/sklearn/utils/validation.py:475: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n",
" warnings.warn(msg, DataConversionWarning)\n"
]
}
],
"source": [
"X_test = strat_test_set.drop('No-show', axis=1)\n",
"y_test = strat_test_set['No-show'].copy()\n",
"\n",
"X_test_prepared = full_pipeline.transform(X_test)\n",
"\n",
"final_preds = final_model.predict(X_test_prepared)"
]
},
{
"cell_type": "code",
"execution_count": 287,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0., 0., 1., ..., 1., 0., 0.])"
]
},
"execution_count": 287,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.rint(final_preds)"
]
},
{
"cell_type": "code",
"execution_count": 288,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.4274997545536382"
]
},
"execution_count": 288,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"final_mse = mean_squared_error(y_test, final_preds)\n",
"final_rmse = np.sqrt(final_mse)\n",
"final_rmse"
]
}
],
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment