{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Background\n", "The sinking of the RMS Titanic is one of the most infamous shipwrecks in history. On April 15, 1912, during her maiden voyage, the Titanic sank after colliding with an iceberg, killing 1502 out of 2224 passengers and crew. This sensational tragedy shocked the international community and led to better safety regulations for ships.\n", "\n", "One of the reasons that the shipwreck led to such loss of life was that there were not enough lifeboats for the passengers and crew. Although there was some element of luck involved in surviving the sinking, some groups of people were more likely to survive than others, such as women, children, and the upper-class.\n", "\n", "Complete the analysis of what sorts of people were likely to survive. In particular, we ask you to apply the tools of machine learning to predict which passengers survived the tragedy.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Suppress Future Warnings\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Data Importing¶" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "************************\n", " Versions \n", "************************\n", "Scikit-learn version=0.21.3\n", "Numpy version=1.16.5\n", "Pandas version=0.25.1\n", "Matplotlib version=3.1.1\n", "Python version=3.7.4\n" ] } ], "source": [ "import sklearn\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib\n", "import platform\n", "%config IPCompleter.greedy=True #autocomplete code\n", "message=\" Versions \"\n", "print(\"*\"*len(message))\n", "print(message)\n", "print(\"*\"*len(message))\n", "print(\"Scikit-learn version={}\".format(sklearn.__version__))\n", "print(\"Numpy version={}\".format(np.__version__))\n", "print(\"Pandas version={}\".format(pd.__version__))\n", "print(\"Matplotlib version={}\".format(matplotlib.__version__))\n", "print(\"Python version={}\".format(platform.python_version()))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from sklearn import datasets \n", "from matplotlib import pyplot as plt\n", "import seaborn as sns\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Import our libraries\n", "import pandas as pd\n", "import numpy as np\n", "# Import sklearn libraries\n", "from sklearn.model_selection import train_test_split, GridSearchCV, StratifiedKFold, cross_val_score\n", "from sklearn.model_selection import cross_validate\n", "from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_curve, precision_recall_curve, auc, make_scorer, confusion_matrix, f1_score, fbeta_score\n", "# Import the Naive Bayes, logistic regression, Bagging, RandomForest, AdaBoost, GradientBoost, Decision Trees and SVM Classifier\n", "from sklearn.naive_bayes import MultinomialNB\n", "from sklearn.ensemble import BaggingClassifier, RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn import svm\n", "from xgboost import XGBClassifier\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "plt.style.use('seaborn-notebook')\n", "from matplotlib.ticker import StrMethodFormatter\n", "from sklearn.preprocessing import StandardScaler, MinMaxScaler, LabelBinarizer" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
5603Moran, Mr. JamesmaleNaN003308778.4583NaNQ
6701McCarthy, Mr. Timothy Jmale54.0001746351.8625E46S
7803Palsson, Master. Gosta Leonardmale2.03134990921.0750NaNS
8913Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)female27.00234774211.1333NaNS
91012Nasser, Mrs. Nicholas (Adele Achem)female14.01023773630.0708NaNC
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass \\\n", "0 1 0 3 \n", "1 2 1 1 \n", "2 3 1 3 \n", "3 4 1 1 \n", "4 5 0 3 \n", "5 6 0 3 \n", "6 7 0 1 \n", "7 8 0 3 \n", "8 9 1 3 \n", "9 10 1 2 \n", "\n", " Name Sex Age SibSp \\\n", "0 Braund, Mr. Owen Harris male 22.0 1 \n", "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", "2 Heikkinen, Miss. Laina female 26.0 0 \n", "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", "4 Allen, Mr. William Henry male 35.0 0 \n", "5 Moran, Mr. James male NaN 0 \n", "6 McCarthy, Mr. Timothy J male 54.0 0 \n", "7 Palsson, Master. Gosta Leonard male 2.0 3 \n", "8 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female 27.0 0 \n", "9 Nasser, Mrs. Nicholas (Adele Achem) female 14.0 1 \n", "\n", " Parch Ticket Fare Cabin Embarked \n", "0 0 A/5 21171 7.2500 NaN S \n", "1 0 PC 17599 71.2833 C85 C \n", "2 0 STON/O2. 3101282 7.9250 NaN S \n", "3 0 113803 53.1000 C123 S \n", "4 0 373450 8.0500 NaN S \n", "5 0 330877 8.4583 NaN Q \n", "6 0 17463 51.8625 E46 S \n", "7 1 349909 21.0750 NaN S \n", "8 2 347742 11.1333 NaN S \n", "9 0 237736 30.0708 NaN C " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "titanic = pd.read_csv(\"TitanicDataset_train.csv\")\n", "titanic.head(10) #display the first 3 sets of data in train csv" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
08923Kelly, Mr. Jamesmale34.5003309117.8292NaNQ
18933Wilkes, Mrs. James (Ellen Needs)female47.0103632727.0000NaNS
28942Myles, Mr. Thomas Francismale62.0002402769.6875NaNQ
38953Wirz, Mr. Albertmale27.0003151548.6625NaNS
48963Hirvonen, Mrs. Alexander (Helga E Lindqvist)female22.011310129812.2875NaNS
\n", "
" ], "text/plain": [ " PassengerId Pclass Name Sex \\\n", "0 892 3 Kelly, Mr. James male \n", "1 893 3 Wilkes, Mrs. James (Ellen Needs) female \n", "2 894 2 Myles, Mr. Thomas Francis male \n", "3 895 3 Wirz, Mr. Albert male \n", "4 896 3 Hirvonen, Mrs. Alexander (Helga E Lindqvist) female \n", "\n", " Age SibSp Parch Ticket Fare Cabin Embarked \n", "0 34.5 0 0 330911 7.8292 NaN Q \n", "1 47.0 1 0 363272 7.0000 NaN S \n", "2 62.0 0 0 240276 9.6875 NaN Q \n", "3 27.0 0 0 315154 8.6625 NaN S \n", "4 22.0 1 1 3101298 12.2875 NaN S " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "titanictest = pd.read_csv(\"TitanicDataset_test.csv\")\n", "titanictest.head(5) #display the first 3 sets of data in train csv" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18931
28940
38950
48961
\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 1\n", "2 894 0\n", "3 895 0\n", "4 896 1" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kaggle_testset = pd.read_csv(\"100-Acc.csv\")\n", "kaggle_testset.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exploratory Data Analysis" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 891 entries, 0 to 890\n", "Data columns (total 12 columns):\n", "PassengerId 891 non-null int64\n", "Survived 891 non-null int64\n", "Pclass 891 non-null int64\n", "Name 891 non-null object\n", "Sex 891 non-null object\n", "Age 714 non-null float64\n", "SibSp 891 non-null int64\n", "Parch 891 non-null int64\n", "Ticket 891 non-null object\n", "Fare 891 non-null float64\n", "Cabin 204 non-null object\n", "Embarked 889 non-null object\n", "dtypes: float64(2), int64(5), object(5)\n", "memory usage: 83.7+ KB\n" ] } ], "source": [ "titanic.info()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PassengerId 0\n", "Survived 0\n", "Pclass 0\n", "Name 0\n", "Sex 0\n", "Age 177\n", "SibSp 0\n", "Parch 0\n", "Ticket 0\n", "Fare 0\n", "Cabin 687\n", "Embarked 2\n", "dtype: int64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List out all variables with nulls/missing values\n", "titanic.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['PassengerId', 'Survived', 'Pclass', 'Age', 'SibSp', 'Parch', 'Fare']\n", "['Name', 'Sex', 'Ticket', 'Cabin', 'Embarked']\n" ] } ], "source": [ "# Get list of numeric and nonnumeric variables\n", "numvars = list(titanic.columns[titanic.dtypes != \"object\"])\n", "nonnumvars = list(titanic.columns[titanic.dtypes == \"object\"])\n", "print(numvars)\n", "print(nonnumvars)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Pclass', 'Age', 'SibSp', 'Parch', 'Fare']\n", "['Sex', 'Cabin', 'Embarked']\n" ] } ], "source": [ "# Do some further exploration on list to get list of features used\n", "numvars.remove('PassengerId')\n", "numvars.remove('Survived')\n", "numfeats = numvars\n", "print(numfeats)\n", "\n", "#nonnumvars.remove('Cabin')\n", "nonnumvars.remove('Name')\n", "nonnumvars.remove('Ticket')\n", "nonnumfeats = nonnumvars\n", "print(nonnumfeats)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import seaborn as sns\n", "sns.set(style=\"whitegrid\")\n", "ax = sns.boxplot(y=titanic[\"Age\"])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "titanic['Age'].hist(bins=10)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Data Preparation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Handle missing values" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassAgeSibSpParchFare
count891.000000891.000000891.000000891.000000891.000000891.000000891.000000
mean446.0000000.3838382.30864229.6991180.5230080.38159432.204208
std257.3538420.4865920.83607113.0020151.1027430.80605749.693429
min1.0000000.0000001.0000000.4200000.0000000.0000000.000000
25%223.5000000.0000002.00000022.0000000.0000000.0000007.910400
50%446.0000000.0000003.00000029.6991180.0000000.00000014.454200
75%668.5000001.0000003.00000035.0000001.0000000.00000031.000000
max891.0000001.0000003.00000080.0000008.0000006.000000512.329200
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass Age SibSp \\\n", "count 891.000000 891.000000 891.000000 891.000000 891.000000 \n", "mean 446.000000 0.383838 2.308642 29.699118 0.523008 \n", "std 257.353842 0.486592 0.836071 13.002015 1.102743 \n", "min 1.000000 0.000000 1.000000 0.420000 0.000000 \n", "25% 223.500000 0.000000 2.000000 22.000000 0.000000 \n", "50% 446.000000 0.000000 3.000000 29.699118 0.000000 \n", "75% 668.500000 1.000000 3.000000 35.000000 1.000000 \n", "max 891.000000 1.000000 3.000000 80.000000 8.000000 \n", "\n", " Parch Fare \n", "count 891.000000 891.000000 \n", "mean 0.381594 32.204208 \n", "std 0.806057 49.693429 \n", "min 0.000000 0.000000 \n", "25% 0.000000 7.910400 \n", "50% 0.000000 14.454200 \n", "75% 0.000000 31.000000 \n", "max 6.000000 512.329200 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Age has some missing values which needs to be filled\n", "titanic['Age'].fillna(titanic['Age'].mean(), inplace=True)\n", "model_mean_age = titanic['Age'].mean()\n", "titanic.describe()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NoS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833YesC
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass \\\n", "0 1 0 3 \n", "1 2 1 1 \n", "\n", " Name Sex Age SibSp \\\n", "0 Braund, Mr. Owen Harris male 22.0 1 \n", "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", "\n", " Parch Ticket Fare Cabin Embarked \n", "0 0 A/5 21171 7.2500 No S \n", "1 0 PC 17599 71.2833 Yes C " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# For the cabin parameter there are over 600 missing values\n", "# We will replace the Cabin value with No if missing and Yes if there is a cabin number\n", "titanic['Cabin'].fillna('No', inplace=True)\n", "titanic['Cabin'].replace(regex=r'^((?!No).)*$',value='Yes',inplace=True)\n", "titanic.head(2)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NoS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833YesC
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass \\\n", "0 1 0 3 \n", "1 2 1 1 \n", "\n", " Name Sex Age SibSp \\\n", "0 Braund, Mr. Owen Harris male 22.0 1 \n", "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", "\n", " Parch Ticket Fare Cabin Embarked \n", "0 0 A/5 21171 7.2500 No S \n", "1 0 PC 17599 71.2833 Yes C " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 2 missing values in the embarked\n", "# use the mode to replace it\n", "titanic['Embarked'].fillna(titanic['Embarked'].mode()[0], inplace=True)\n", "model_embarked_mode = titanic['Embarked'].mode()[0]\n", "titanic.head(2)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassSexAgeSibSpParchFareCabinEmbarked
003male22.0107.2500NoS
111female38.01071.2833YesC
\n", "
" ], "text/plain": [ " Survived Pclass Sex Age SibSp Parch Fare Cabin Embarked\n", "0 0 3 male 22.0 1 0 7.2500 No S\n", "1 1 1 female 38.0 1 0 71.2833 Yes C" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Drop the PassengerId\n", "titanic = titanic.drop([\"PassengerId\",\"Name\",\"Ticket\"],axis=1)\n", "titanic.head(2)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassAgeSibSpParchFareSex_femaleSex_maleCabin_NoCabin_YesEmbarked_CEmbarked_QEmbarked_S
00322.0107.25000110001
11138.01071.28331001100
\n", "
" ], "text/plain": [ " Survived Pclass Age SibSp Parch Fare Sex_female Sex_male \\\n", "0 0 3 22.0 1 0 7.2500 0 1 \n", "1 1 1 38.0 1 0 71.2833 1 0 \n", "\n", " Cabin_No Cabin_Yes Embarked_C Embarked_Q Embarked_S \n", "0 1 0 0 0 1 \n", "1 0 1 1 0 0 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Encode all the categorical variables\n", "titanicdf = pd.get_dummies(titanic,columns=nonnumfeats)\n", "titanicdf.head(2)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Survived int64\n", "Pclass int64\n", "Age float64\n", "SibSp int64\n", "Parch int64\n", "Fare float64\n", "Sex_female uint8\n", "Sex_male uint8\n", "Cabin_No uint8\n", "Cabin_Yes uint8\n", "Embarked_C uint8\n", "Embarked_Q uint8\n", "Embarked_S uint8\n", "dtype: object" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "titanicdf.dtypes" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassAgeSibSpParchFareSex_femaleSex_maleCabin_NoCabin_YesEmbarked_CEmbarked_QEmbarked_S
count891.000000891.000000891.000000891.000000891.000000891.000000891.000000891.000000891.000000891.000000891.000000891.000000891.000000
mean0.3838382.30864229.6991180.5230080.38159432.2042080.3524130.6475870.7710440.2289560.1885520.0864200.725028
std0.4865920.83607113.0020151.1027430.80605749.6934290.4779900.4779900.4203970.4203970.3913720.2811410.446751
min0.0000001.0000000.4200000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
25%0.0000002.00000022.0000000.0000000.0000007.9104000.0000000.0000001.0000000.0000000.0000000.0000000.000000
50%0.0000003.00000029.6991180.0000000.00000014.4542000.0000001.0000001.0000000.0000000.0000000.0000001.000000
75%1.0000003.00000035.0000001.0000000.00000031.0000001.0000001.0000001.0000000.0000000.0000000.0000001.000000
max1.0000003.00000080.0000008.0000006.000000512.3292001.0000001.0000001.0000001.0000001.0000001.0000001.000000
\n", "
" ], "text/plain": [ " Survived Pclass Age SibSp Parch Fare \\\n", "count 891.000000 891.000000 891.000000 891.000000 891.000000 891.000000 \n", "mean 0.383838 2.308642 29.699118 0.523008 0.381594 32.204208 \n", "std 0.486592 0.836071 13.002015 1.102743 0.806057 49.693429 \n", "min 0.000000 1.000000 0.420000 0.000000 0.000000 0.000000 \n", "25% 0.000000 2.000000 22.000000 0.000000 0.000000 7.910400 \n", "50% 0.000000 3.000000 29.699118 0.000000 0.000000 14.454200 \n", "75% 1.000000 3.000000 35.000000 1.000000 0.000000 31.000000 \n", "max 1.000000 3.000000 80.000000 8.000000 6.000000 512.329200 \n", "\n", " Sex_female Sex_male Cabin_No Cabin_Yes Embarked_C Embarked_Q \\\n", "count 891.000000 891.000000 891.000000 891.000000 891.000000 891.000000 \n", "mean 0.352413 0.647587 0.771044 0.228956 0.188552 0.086420 \n", "std 0.477990 0.477990 0.420397 0.420397 0.391372 0.281141 \n", "min 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "25% 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 \n", "50% 0.000000 1.000000 1.000000 0.000000 0.000000 0.000000 \n", "75% 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 \n", "max 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 \n", "\n", " Embarked_S \n", "count 891.000000 \n", "mean 0.725028 \n", "std 0.446751 \n", "min 0.000000 \n", "25% 0.000000 \n", "50% 1.000000 \n", "75% 1.000000 \n", "max 1.000000 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "titanicdf.describe()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Survived 1.000000\n", "Sex_female 0.543351\n", "Cabin_Yes 0.316912\n", "Fare 0.257307\n", "Embarked_C 0.168240\n", "Parch 0.081629\n", "Embarked_Q 0.003650\n", "SibSp -0.035322\n", "Age -0.069809\n", "Embarked_S -0.149683\n", "Cabin_No -0.316912\n", "Pclass -0.338481\n", "Sex_male -0.543351\n", "Name: Survived, dtype: float64\n" ] } ], "source": [ "# Since all values are numeric, do a correction and sort to determine the most important features relative to Survived\n", "corr = titanicdf.corr()\n", "corr.sort_values([\"Survived\"], ascending = False, inplace = True)\n", "print(corr.Survived)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Train Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Split Data into Train and Test Sets" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "y = titanicdf[\"Survived\"].values\n", "X = titanicdf.drop([\"Survived\"],axis=1).values\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train Model with Algorithm: Logistics Regression " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# Train Model with Logistics Regression\n", "from sklearn.linear_model import LogisticRegression\n", "LogisticRegression_Model = LogisticRegression()\n", "LogisticRegression_Model.fit(X_train,y_train)\n", "Y_prediction = LogisticRegression_Model.predict(X_test)\n", "LogisticRegression_Model.score(X_train, y_train)\n", "acc_LR = round(LogisticRegression_Model.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train Model with Algorithm: CART Classification Tree" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "from sklearn.tree import DecisionTreeClassifier\n", "CART_Model = DecisionTreeClassifier()\n", "CART_Model.fit(X_train,y_train)\n", "Y_prediction = CART_Model.predict(X_test)\n", "CART_Model.score(X_train, y_train)\n", "acc_CART = round(CART_Model.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train Model with Algorithm: SVM" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "from sklearn.svm import SVC\n", "SVM_Model = SVC()\n", "SVM_Model.fit(X_train, y_train)\n", "Y_prediction = SVM_Model.predict(X_test)\n", "SVM_Model.score(X_train, y_train)\n", "acc_SVM = round(SVM_Model.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train Model with Algorithm: K-Nearest Neighbour" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "from sklearn.neighbors import KNeighborsClassifier\n", "K_NearestNeighbour = np.arange(1,20)\n", "train_accuracy = np.empty(len(K_NearestNeighbour))\n", "test_accuracy = np.empty(len(K_NearestNeighbour))\n", "#Loop over the different values of K\n", "for i,k in enumerate(K_NearestNeighbour):\n", " #Setup K-NN classifier\n", " knn_classifier = KNeighborsClassifier(n_neighbors = k)\n", " #train the model\n", " knn_classifier.fit(X_train, y_train)\n", " #Compute accuracy of training set\n", " train_accuracy[i] = knn_classifier.score(X_train, y_train)\n", " #Compute accuracy of test set\n", " test_accuracy[i] = knn_classifier.score(X_test, y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Checking accuracy of K**" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEaCAYAAADtxAsqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3gU1dvG8e/uZje9kJAKoQihSSgSekelBAKhgxQRBCy8FBVFBREQEQSBH2IBRaUTJJTQhYhUQVB6F6mBkAKkJ5vdef9AVmMSUthNfT7X5UVmd+bMPQvm2Zk5c45KURQFIYQQIhfUhR1ACCFE8SFFQwghRK5J0RBCCJFrUjSEEELkmhQNIYQQuSZFQwghRK5J0RAmN2/epH79+hle27p1K40bN+bQoUNZrl+9enXWrl2b4fVvv/2WCRMmALBgwQKaNm1KVFRUhnW6dOnC4cOHzXwEj9etWzfi4uIKdJ/5ERoaysiRIwt0f23atGHYsGFmaW/48OFcvnz5setMmDCBb7/9Nsv3qlevTmxsrFmyCPOToiGytXr1aj755BO+//57mjZtmuU6arWamTNncuXKlWzbSUhI4J133qGwHwnauHEjTk5OhZqhKNqwYQPjxo3L9pd4Xi1evJiqVauapS1R9FgVdgBRNC1atIjQ0FBWrlxJ+fLls13PxsaGl156ibfeeovVq1ej0+kyrdO1a1dOnDjBkiVLHvttNj4+ntatW7Njxw7c3d0B6N27N6NGjaJChQpMnTqVxMREoqKiqFGjBvPmzcPa2pratWvz7LPPcv78eYKCgti/fz+rV68GICIigj59+hAeHo6/vz+HDh1iz549/PTTT6jVaq5du4aNjQ0zZ86kSpUqXLt2jffee48HDx7g7u6Ooih07dqVHj16ZMg6aNAg6tWrx++//87t27dp2rQp06ZNIyIigqCgIP744w/g4dnYo+XQ0FB27tyJ0WgkIiICT09P+vTpw/Lly7l69SovvfQSQ4cOBSAqKophw4Zx9+5dypUrx7Rp03B3dyc+Pp7p06dz8eJF9Ho9TZs25e2338bKyirD5zB79mz8/f0zfLZTpkzh/PnzqFQqWrZsyRtvvMGsWbM4deoUN2/e5N69ewwZMsS0zeHDh5k7dy6+vr5cunSJ9PR0pkyZQoMGDUhLS2P27Nn89ttvGAwGatWqxcSJE3FwcKBdu3bMnz8ff39/Fi1axI8//oi9vT0BAQHs3r2b8PBwAP744w/69etHdHQ0fn5+zJkzBzs7OwDmzZvHqVOnMBqNjB07lrZt2wKwcOFCtmzZgkajoXLlykyaNAl3d3cGDRqEs7MzV65coX///nh6evLll1+iUqnQaDS8/fbbNGzYMNt/eyL35ExDZDJr1izmzJnDoEGDHlswHnn11Vexs7Nj7ty5Wb5vbW3NnDlz+OKLLzhz5ky27Tg6OvL888+zadMmAP7880+io6Np2bIlISEhBAcHExISws6dO7l58yZ79uwBQK/X07ZtW3bs2MGIESO4fv06ly5dAmDt2rV07949UzH77bffmDRpEps3b6Zu3bosWrQIgLfffpvOnTuzefNmJk6cyPHjx7PNe/36dZYtW8amTZvYu3cvR44cyfGzOnr0KFOmTGHTpk3cuXOHLVu28MMPP7B48WLmzZuH0WgE4K+//uKDDz4gLCyMatWqMX36dAA+/vhjnn76aUJDQ9mwYQP37t3ju+++y/Q5/LtgAHz00Ue4uLgQFhbGunXruHDhAkuWLOG9996jdu3avP322xkKxiMnT55k6NChbNiwgR49epj+jhctWoRGoyE0NJRNmzbh4eHB7NmzM2y7b98+QkND+fHHHwkNDSUxMTHD+5GRkXz33Xfs2LGDyMhIdu7caXqvfPnyrF+/nk8//ZQJEyYQGxvLunXr2LdvHz/++CNhYWH4+fmZLoMCODk5sXXrVgYNGsSsWbOYPHkyoaGhjBkzpsAvhZZkUjREBklJSVy8eJFFixYxZ84czp49m+M2arWaTz/9lNDQUA4cOJDlOtWrV2fs2LG8+eabJCUlZdtW79692bBhAwDr1q2jZ8+eqNVqxo8fj6urK4sXL+bDDz/k7t27GdoJCAgAQKfT0bt3b9auXYvBYGD9+vX06dMn036efvppvLy8AKhVqxYPHjzgwYMHnDx5kt69ewNQpUoVmjRpkm3Wtm3bolarcXBwoGLFijx48CCHTwr8/f3x9vZGrVZTvnx5WrRogVqtxtfXl9TUVJKTkwFo1qwZFStWBKBXr14cPHgQgD179rBmzRq6detGjx49OHnyJBcvXsz0OfzX3r17GThwICqVCp1OR79+/di7d2+OeX18fKhZs2aGz+lRjvDwcIKDg+nWrRu7du3izz//zLDtL7/8QseOHXFyckKlUjFgwIAM7z/33HPY2tqi0Wjw8/PLcB+jf//+AFSrVo0qVarwxx9/sHfvXnr06GE6Gxk8eDC//voraWlpmY69c+fOjBo1ivfff5+4uDiGDx+e47GK3JHLUyIDGxsbvvzyS7RaLSNHjmTUqFGEhobi4uLC/PnzTZcW2rVrR8+ePU3beXt7M2XKFN555x2Cg4OzbHvQoEHs37/f9K05KwEBAaSnp3Py5Ek2b97MmjVrAHjjjTcwGAx06tSJNm3acPv27Qz3SB79IgHo168fvXr1olGjRvj5+eHr65vlcT6iUqlQFAWNRgOQod1Hr2X3Wf23jUd/PqLX6zNs898zHiurrP8X/Pd+jUajaT2j0cj8+fOpUqUKAHFxcahUKtO6//4c/s1oNGZYz2g0kp6enu2xPZLVMT7a/r333qN169YAJCYmkpqamunYHvdZ/vvY//u5qdX/fJ99dPw5HcO/j33cuHH07NmTAwcOEBoaypIlS/jxxx9zPF6RMznTEBmo1Wq0Wi0AI0aMoGrVqrz55psYjUbGjBnDxo0b2bhxI2PGjMm0bceOHWnVqhU//PBDtu3PmDGDX375hWvXrmW7Tu/evZk2bRrVq1fH29sbgP379/P6668TGBgIwIkTJzAYDFlu7+3tTb169fj4449N31hzw8HBgWeeeYbQ0FAAbty4waFDhzL8osqJk5MTer3e1Htoy5Ytud723w4fPkxERATwsENCq1atAGjRogXff/89iqKQlpbGq6++yvLly3Nsr0WLFixfvty0XUhICM2aNctXtkftrVixgrS0NIxGI5MmTeKzzz7LsE7r1q3ZuXMn8fHxAHn6pb1+/XoAzpw5w/Xr16lbty4tW7Zk3bp1pjPMZcuW0bBhw0yFOD09nXbt2pGcnEz//v2ZPHkyFy5cMJ2RiCcjZxoiWyqVipkzZ9K9e3fmzZvHG2+8keM2EydO5NixY9m+7+rqyieffMLLL7+c7TrBwcF89tlnGX4JjRs3jtdffx07OzscHBxo2LAh169fz7aNHj16MG3aNNM34dyaOXMm77//PitXrsTT05Py5ctn+LadE0dHR8aPH8/w4cNxdXWlY8eOedr/I9WqVeO9994jOjqap556iqlTpwLw/vvvM336dIKCgtDr9TRr1uyxn+UjEydO5KOPPjJt17JlS1555ZV8ZQN47bXXTP82DAYDNWvWzHB/AaBp06b06dOHvn37YmNjg5+fH7a2trlq/8aNGwQHB6NSqfjss89wcXGhV69e3L59m969e2M0GqlYsWKm+yjw8Azmvffe46233sLKygqVSsXHH3+cZScNkXcqGRpdlDRGo5GpU6fi4+PDiBEj8rTtl19+Sfv27alSpQrx8fF07dpVupDm06lTp/jjjz8YPHgwAN999x0nTpxg3rx5hZxMPAk50xAlSkJCAm3btuWZZ57J9M03NypVqsS4ceNQq9UYDAaGDx8uBSOfKleuzOLFiwkJCUGlUuHt7c20adMKO5Z4QhY/00hISKBfv3589dVXmbpvnjt3jvfff5/ExEQCAgKYMmUKVlZWREREMH78eGJiYqhcuTKzZ8/G3t7ekjGFEELkgkVvhJ84cYL+/ftz9erVLN8fP348H3zwATt27EBRFEJCQgCYMmUKL7zwAtu3b6d27dp88cUXlowphBAilyx6eSokJITJkyfz9ttvZ3rv1q1bpKSkUK9ePeDhjcv//e9/9O7dm99++42FCxeaXh84cCDjx4/P8/6NRiOJiYlotdo89YARQojSTFEU9Ho99vb2Gbo/g4WLxuP649+9e9c0VASAu7s7kZGR3Lt3DwcHB1Mf7kev50diYmKGB5+EEELkXrVq1XB0dMzwWqHdCP/vgzr/fjDqv2cF+T1LePS8QbVq1Ypsd7vTp09Tu3btwo6RK8Ulq+Q0r+KSE4pP1qKeMy0tjYsXL5p+h/5boRUNLy+vDMNlR0dH4+HhgaurK/Hx8RgMBjQaDVFRUXh4eORrH4+KjU6nw9ra2iy5LaEoZ/uv4pJVcppXcckJxSdrcciZ1Rf2QnsivFy5clhbW5seBNu4cSOtWrVCq9USEBDA1q1bgYfDNj96GlYIIUThKvCiMXz4cE6dOgXA7NmzmTFjBh07diQpKcn0ENDkyZMJCQkhMDCQo0ePMnbs2IKOKYQQIgsFcnnq0SB38HCClkdq1KiR5Xg05cqVY9myZQURTQghRB7IE+FClHJ6vZ6bN2+SkpKS5ftWVlacO3eugFPlT3HJWlRy2tjYUL58+SxveGdHioYQpdzNmzdxdHSkUqVKWd74TExMLDYjMhSXrEUhp6IoxMTEcPPmTSpXrpzr7WRodCFKuZSUFNzc3OQB2FJGpVLh5uaW7RlmdqRoZCM18iopNy8UdgwhCoQUjNIpP3/vUjSy8eDXjURt/rywYwghRJEiRSMbVi4e6GPvYEyX2b6EKChTpkyhW7duBAYGUrt2bbp160a3bt1Yt25dntsaP368aQiiYcOGERMTY5aMMTEx1K5d+7EzVJZkciM8Gzr3CqAY0cdEYO1ZqbDjCFEqTJ48GXh4c37w4MFs3Lgx320dPnzYNO/4t99+a5Z8AJs2beLZZ59lzZo1vPjii2Zrt7iQopENXVlfAPRRN6RoiFIl/Oh1fjryz1S6j4b0MYfnG1WgXUCFfG2bkJDA1KlTuXz5MkajkREjRhAYGMjZs2eZPHkyBoMBrVbL7Nmz2bx5M7GxsQwbNoxVq1bRpUsXQkJC2LdvH4cOHeLevXvcuHGD1q1bM2nSJABmzZrFrl27cHV1xdXVlQ4dOtCtW7dMOUJDQ5k8eTIffPABv/32Gw0bNgQezmc+efJkUlNTcXFxYfbs2Xh4eDBr1izCw8PRaDS88MILDBw4kKFDhzJ+/HgCAgK4du0aL7/8Mj/99BNvvfUWCQkJXLt2jQkTJpCQkMAPP/xASkoKer2eGTNmUK9evSz3NXPmTJo3b07Pnj0B6N+/P++//77Zx7iSy1PZ0Lp5g1pDWlT281ALIQrOwoULqVu3LqGhoSxbtoyFCxdy69YtvvvuO0aMGEFoaChdu3bl+PHjvPrqq7i6uvLtt9/i5OSUoZ3jx4/z+eefs2nTJnbs2MGff/7JTz/9xKlTp9iyZQtffvklZ8+ezTLDqVOnePDgAc888wydOnVi9erVpvfeeOMNRo8eTVhYGB06dGD58uVs2bKFU6dOERYWRkhICGvWrCE2Nvaxx+nm5sa2bdto0aIFISEhLFq0iE2bNjFkyBDTw9FZ7atnz56mM7Pr16+TkJBgkUER5UwjGyqNFq2rN2nRNwo7ihAFql1AxrOBovBMAcDBgwfR6/WmydqSk5O5fPkybdq0YfLkyezZs4dmzZrRqVOnx7bzzDPPmI6nfPny3L9/nwMHDtCpUye0Wi1lypTh2WefzXLb0NBQAgMDUavVBAYGEhwcTGxsLAaDgbi4ONM4eQMHDgTggw8+oFOnTuh0OnQ6HWFhYTkeZ926dQHQaDR8/vnnhIeH89dff3H48GFsbGyIiorKcl9Go5FJkyZx+/ZtNmzYQPfu3XPcV35I0XgMXVlfUiP/KuwYQgge/lL87LPPqFGjBvBwZGxnZ2e0Wi0NGjQgPDycpUuXcuTIEaZMmZJtO/8eXfbRdAwajYacZr5OS0tjy5Yt6HQ6du7cCTx8QG79+vX06NEjQ/fVlJQUoqKiMk0Ad/PmTdzc3DK0m56enmW+hIQEevXqRXBwMI0bN6ZatWqEhIRgZWWV5b58fX0JDg5my5YtbN++naVLlz72ePJLLk89htbdl/R7kRj1qYUdRYhSr3HjxqxatQqAyMhIgoKCuHv3Lv/3f//HuXPneOGFF3jllVdMl5asrKwy/ULOTtOmTdm+fTt6vZ74+Hh++eWXTM8w7Nq1C09PT/bv3094eDjh4eGmwVVdXFwoU6YMhw4dAh6ekSxcuJCAgAB27NhBeno6SUlJDB06lOjoaMqUKcOlS5dM7WblypUraLVaXnnlFRo2bMiOHTswGAyUKVMmy33Bw5lOly9fToUKFShbtmweP+HckaLxGDp3X0BBH3OrsKMIUeqNGTOGhIQEgoKCeOmll5gwYQLlypXj1VdfZcGCBQQHB7Nw4UI++OADANq0acOwYcOIiIjIse1nn32WevXqERwczCuvvIKHhwc2NjYZ1lm3bh39+/fP8Fq3bt2Ij4/n0KFDzJkzh/nz59OtWzfTTe2OHTvi7+9P9+7d6d27N8OGDcPX15cXX3yRpUuX0r17d/R6fZaZatWqRdWqVenYsSNdunTB3d2dW7ce/i7Kal/w8HKbp6cnPXr0yPPnm2tKCZaSkqIcPXpUSUlJydf2qVE3lD8/6qHEndxj5mT/OHr0qMXaNrfiklVy5s3Zs2cf+35CQkIBJXly+c169OhRZcOGDYqiKEpqaqrSrVs35dKlS+aMloElPlOj0ajcuXNHad++vZKWlpbr7bL6+3/c704503gMbRkvUFuhl5vhQpRolStXZuPGjXTt2pWePXsSHBxM1apVCztWnmzbto3g4GDeeuutPI1am1dyI/wxVBortG4+pN2VbrdClGSurq4sWbKksGM8kcDAQAIDAy2+HznTyIHO3Ve63QohxN+kaORAV9aX9Pt3MablbfhgIYQoiaRo5OBhDyrQR98s5CRCCFH4pGjkQPt30ZBLVEIIIUUjR9oyXqCxIi1KioYQQkjRyIFKrUHnVk6KhhAFwBzzacyfP5/du3c/dp2sRq/Nr4sXL1K9enV27NhhtjaLMulymwtad19SZepXISzOHPNpjBkzJsd1nmSejv9at24dHTt2ZM2aNXTo0MFs7RZVUjRyQVfWl8Qz+zGmJaPW2RZ2HCEsKv7kHuJPhJuWDQYDD8w0n4Zj3XY41mmTr20XLFjA8ePHuX37NgMHDqRq1arMnTuXlJQU4uLiePfdd2natCkTJkygUaNGNGrUiFGjRuHn58e5c+dwc3Nj/vz5uLi4UL16dS5cuMCCBQuIjIzk2rVr3Lp1i969e/Pqq6+i1+uZPHkyx44dw9PTE5VKxWuvvUbjxo0zZNLr9YSFhbFixQr69evH9evXqVDh4QjBBw8e5JNPPkFRFHx8fJgzZw5arZYpU6Zw9OhRdDodr732GoGBgbRr146lS5dSvnx5Dh8+zOeff86yZcsYNGgQzs7OXLp0iXnz5nHs2DE2btxIcnIyWq2WOXPm8NRTT2W5rxEjRvD666/TvHlzFEWhQ4cOLFu2DE9Pzyf6O5TLU7nwqAdVWpT0oBKiMKWlpbF161ZeeOEFli9fzkcffcT69ev56KOPmD9/fqb1z58/z0svvcTmzZtxcnLKcmjyCxcu8O2337J27VoWLVpEXFwcq1evJjk5me3btzNjxgxOnTqVZZ5ffvkFHx8fKleuzHPPPceaNWtMOd966y1mzpxJWFgY1apVY/369SxbtoykpCTWrVvHd999x8KFC0lLe/yU0o8uffn6+rJr1y6WLVvG5s2badOmDStWrMh2X/+eX+Po0aNUqFDhiQsGyJlGrujcH35zSIu6jk05v0JOI4RlOdZpk+FsoKjMpwFQp04d08+ffvopP//8M9u3b+fEiRMkJiZmWt/NzY1atWoB4Ofnx4MHDzKt07hxY3Q6HW5ubri4uBAfH8+BAwfo06cPKpWKcuXK0bRp0yzzrFu3ji5dugAPn8h+6623GDNmDBcuXMDT05OaNWsC8OabbwIwcuRI+vTpg1qtxt3dnS1btuT6mB0cHJgzZw5btmzh6tWr7Nu3j5o1a2a7r6SkJObOnUtSUpJp+HZzkDONXLBy8UBlpZMxqIQoZP8eefaFF17g5MmT1K5dm1deeSXL9bOaOyM362g0GoxG42OzxMTEsG/fPpYsWUK7du2YOHEicXFx/PTTT5nm0YiPj+fOnTuZ5sK4du2a6UzjUbb/Duf+6Jhv375N3759iY+Pp1WrVnTv3h1FUbLdl52dHa1atWLHjh38+uuv2U4slVcWLRphYWEEBgbSvn17VqxYken9X375haCgIIKCgnjzzTdN3xSOHDlC48aNTT0n3n33XUvGzJFKrUErPaiEKDLu37/P1atXGTNmDK1atWL37t0YDAaztd+sWTO2bt2KoihERkZy5MiRTPNrbNy4kSZNmrB3717Cw8P5+eefeeWVV1i9ejWVK1cmJiaGy5cvA/DNN9+watUqGjZsaGo3JiaGgQMHkpaWRpkyZUzrZtfz69SpU1SsWJEhQ4bg7+/Prl27MBgM2e4LoGfPnsydO5eWLVtmKI5PwmKXpyIjI5k7dy6hoaHodDr69etH48aNTSNHxsXFMWHCBJYtW0bVqlVZvHgxc+fOZeLEiZw+fZqhQ4cycuRIS8XLM527L8nXzhR2DCEE4OLiQq9evejcuTNWVlY0adKElJQUkpOTzdJ+nz59OH/+PEFBQbi7u+Pj45Npfo3169czbty4DK8NGDCAb775hps3b/Lpp5/y9ttvo9frqVChArNmzUKr1fLRRx/Rt29f1Go1kyZNwsHBgdGjRzNt2jQ+//xzWrRokWWm5s2bs2rVKgIDA1EUhYYNG3Lp0iWsra2z3BdAgwYNUKlU9OzZ0yyfC2C5+TRCQ0OVd99917T8+eefKwsWLDAtnzhxQunRo4dp+dKlS0rr1q0VRVGUsWPHKgMHDlS6dOmijBw5UomIiMhXhiedT+Pf7h1Yp/z5UQ/FkGzecfCLypwKuVFcskrOvJH5NDL7+eeflfDwcEVRFCUuLk5p166dcu/ePbO0rSgF85kajUbl/PnzSrdu3R67Xl7n07DYmcbdu3dxd3c3LXt4eHDy5EnTcqVKlbhz5w7nz5+nRo0abNu2jejoaAAcHR3p1KkT7du3Z9WqVYwbN47Vq1fnO8vp06fzfyB/0z5IwwE4uX8XhjLln7i9fzt27JhZ27Ok4pJVcuaelZVVljeR/y2n94sSc2T18fFh0qRJfPbZZ8DDG9hardasn4OlP9Ply5ezdOlSZs2a9dh9paWl5enfocWKhtFozHANUFGUDMtOTk7MnDmTSZMmYTQa6dOnj2nikKlTp5rW69+/P3PmzCE+Ph5HR8d8Zaldu/YTX8/T3yvHjd/X8pSbPU71GzxRW/927NgxGjQwX3uWVFyySs68OXfu3GN7RxWl3lM5MVfWatWqmbrPWkJBfKYjR47M1SV+nU5H3bp1M7yWmpqa7Zdti90I9/LyIioqyrQcFRWFh4eHadlgMODl5cXatWtZt24dNWvWxNfXF6PRyJdffpnpppbGTA8X5ZeViwcqrbUMXChKJCWLXkWi5MvP37vFikazZs04dOgQsbGxJCcns3PnTlq1amV6X6VSMXToUCIjI1EUhe+//57AwEDUajU//fSTaRyXDRs2ULduXezs7CwVNVdUKjVat/LopQeVKGFsbGyIiYmRwlHKKH/34PrvDf6cWOzylKenJ+PGjWPw4MHo9Xp69epFnTp1GD58OKNHj8bf35+pU6fy8ssvk5aWRtOmTRk2bBiA6bLVwoULcXV1NfUEKGw6d1+S/zqZ84pCFCPly5fn5s2bGa4M/FtaWho6na6AU+VPcclaVHLa2NhQvnze7tFa9InwR89g/NvixYtNP7dp04Y2bdpk2s7Pz++Jbnxbis7dl4RTezAkJ6CxdSjsOEKYhVarpXLlytm+f+zYsUzXvIuq4pK1uOTMijwRnge6so9m8ZNLVEKI0kmKRh5oPR4NXChFQwhROknRyAMrJ3dUOhspGkKIUkuKRh6oVCp0ZX2l260QotSSopFH2rK+0u1WCFFqSdHII527L4bE+xiS4gs7ihBCFDgpGnlkmsUv+nohJxFCiIInRSOPHhUNuUQlhCiNpGjkkcbRDZW1nfSgEkKUSlI08uhhD6ryUjSEEKWSFI18kG63QojSSopGPmjdfTEmxWFIfFDYUYQQokBJ0cgHUw+qKOlBJYQoXaRo5IPOvQIgY1AJIUofKRr5oHEog9rGXu5rCCFKHSka+aBSqWQ4ESFEqSRFI5907g97UMkUmUKI0kSKRj7p3H0xJidgSLxf2FGEEKLASNHIp0ez+EkPKiFEaSJFI5+0MgaVEKIUkqKRTxp7F9S2DtLtVghRqkjRyCeZxU8IURpJ0XgCWveH3W6lB5UQorSQovEEdGV9MaYmYYiPLewoQghRIKRoPAGdx9/DicglKiFEKSFF4wn80+1WioYQonSQovEENPbOqO2cpNutEKLUsGjRCAsLIzAwkPbt27NixYpM7//yyy8EBQURFBTEm2++SWJiIgBxcXGMGDGCTp06MWDAAKKioiwZ84k8Gk5ECCFKA4sVjcjISObOncvKlSvZsGEDa9as4fLly6b34+LimDBhAnPnziUsLIwaNWowd+5cAObNm0dAQADbtm2jd+/eTJ8+3VIxn5iurC9p0oNKCFFKWKxoHDx4kCZNmuDi4oKdnR0dOnRg+/btpvevXr2Kj48PVatWBaBt27bs2rULgD179hAUFARAly5d2Lt3L3q93lJRn4jO3RclLRlDXHRhRxFCCIuzslTDd+/exd3d3bTs4eHByZMnTcuVKlXizp07nD9/nho1arBt2zaio6MzbWtlZYWDgwOxsbF4enrmK8vp06ef4Egezyo2GUfgzKGfSXevkq82jh07Zt5QFlRcskpO8youOaH4ZC0uOf/LYkXDaDSiUqlMy0urYeIAACAASURBVIqiZFh2cnJi5syZTJo0CaPRSJ8+fdBqtVm2pSgKanX+T4pq166NtbV1vrd/HENSNa4dWU5FF2tcGjTI8/bHjh2jQT62KwzFJavkNK/ikhOKT9ainjM1NTXbL9sWKxpeXl4cPXrUtBwVFYWHh4dp2WAw4OXlxdq1awE4efIkvr4Pu7B6eHgQHR2Nl5cX6enpJCYm4uLiYqmoT0Rj54jG3kW63QohSgWL3dNo1qwZhw4dIjY2luTkZHbu3EmrVq1M76tUKoYOHUpkZCSKovD9998TGBgIQOvWrdmwYQMAW7duJSAgINuzkKLg0XAiQghR0lmsaHh6ejJu3DgGDx5McHAwXbp0oU6dOgwfPpxTp06hVquZOnUqL7/8Mh07dsTJyYlhw4YBMGbMGI4fP07nzp1ZuXIlH3zwgaVimsXDgQtvoijGwo4ihBAWZbHLU4DpGYx/W7x4sennNm3a0KZNm0zbubi48NVXX1kymlnp3H1R9CmkP4hG6+KR8wZCCFFMyRPhZqBzfzgGlVyiEkKUdFI0zODRLH7yZLgQoqSTomEGGht7NA6uMl+4EKLEk6JhJjp3X+l2K4Qo8aRomInW3Re99KASQpRwUjTMRFfWFyU9jfT7dws7ihBCWIwUDTPRucuETEKIkk+KhpnoypYHpGgIIUq2HIvGvXv3CiJHsae2sUfj6IZeut0KIUqwHItG586defPNNzMMPiiyJj2ohBAlXY5FIzw8nGbNmjFr1iyCgoJYsWIFCQkJBZGt2NG5+6KPuYViNBR2FCGEsIgci4aNjQ09e/YkJCSEiRMnsmTJElq2bMmUKVPk0tV/aE09qCILO4oQQlhErm6E7927l//7v/9j3LhxPPfcc6xevRpvb29ee+01S+crVh6NQZV2Vy5RCSFKphxHuW3bti0uLi688MILfPrpp9jY2ABQvXp11qxZY/GAxYnO/e8eVNE3sKdxIacRQgjzy7FozJkzh+rVq2Nvb09aWhoxMTG4ubkBsHv3bosHLE7UOlusnN1lDCohRImV4+WpO3fu0L17dwBu3bpF586dCQ8Pt3iw4kpb1le63QohSqwci8ZXX33F0qVLAahcuTLr169nwYIFFg9WXOncfUmLiZAeVEKIEinHomE0GvHy8jIte3t7YzTKoHzZ0bn7giEdfeztwo4ihBBml2PRcHV1ZfXq1aSnp2MwGPjxxx8pW7ZsQWQrlnRlZUImIUTJlWPRmDp1KiEhIdSpU4c6deoQEhLC5MmTCyJbsaT9ewwqmfpVCFES5dh7qlKlSoSGhvLgwQM0Gg0ODg4FkavYUutssHLxkOFEhBAlUo5FIzY2lk2bNpGYmIiiKBiNRq5du8acOXMKIl+xpCvrK5enhBAlUo5FY+zYsdjY2HD58mWaNWvGwYMHadCgQUFkK7a07r4kXTmOYtCj0mgLO44QQphNjvc0IiIiWLRoEa1atWLgwIGsWrWKK1euFES2Ykvn7gtGg/SgEkKUODkWjUc9pSpVqsTFixfx9PQkPT3d4sGKM9MYVHJfQwhRwuR4ecrNzY1vvvmGevXqsWDBAhwcHEhJSSmIbMWW1q0cqNRSNIQQJU6uutzqdDoCAgKoXbs2//vf/3jrrbcKIluxpdZaY+XiIcOJCCFKnByLxsyZMxk8eDAA48ePZ8OGDTz//PO5ajwsLIzAwEDat2/PihUrMr1/5swZevbsSdeuXRk5ciRxcXEAHDlyhMaNG9OtWze6devGu+++m5djKhJkFj8hREmUY9E4d+4ciqLkueHIyEjmzp3LypUr2bBhA2vWrOHy5csZ1pk+fTqjR49m06ZNVK5cmW+//RaA06dPM3ToUDZu3MjGjRuZMWNGnvdf2HRlfdHH3kZJ1xd2FCGEMJsc72l4eHjQuXNn6tati729ven1iRMnPna7gwcP0qRJE1xcXADo0KED27dvZ9SoUaZ1jEYjiYmJACQnJ+Ps7AzAqVOniI6OZvPmzZQrV47Jkyfj7e2d96MrRDr3CqAY0cdGoPOoWNhxhBDCLHIsGvXr16d+/fp5bvju3bu4u7ublj08PDh58mSGdSZMmMDQoUP5+OOPsbW1JSQkBABHR0c6depE+/btWbVqFePGjWP16tV5zvDI6dOn871tfmni4nECzh/5Bb33049d99ixYwUTygyKS1bJaV7FJScUn6zFJWcmioV88cUXyty5c03La9asUSZNmmRaTk5OVgIDA5UTJ04oiqIoS5YsUYYPH55lWw0aNFDi4uLynCElJUU5evSokpKSkudtn5RBn6r8Ob2XEvPzyseud/To0QJK9OSKS1bJaV7FJaeiFJ+sRT3n43535nimERQUlOXrYWFhj93Oy8uLo0ePmpajoqLw8PAwLV+8eBFra2vq1KkDQN++fZk/fz5Go5Gvv/6aESNGoNFoTOv/++fiQG2lQ+vmQ/yJ3Vg5ueFQpw1qK11hxxJCiCeSY9GYNGmS6We9Xs+WLVvw9fXNseFmzZqxYMECYmNjsbW1ZefOnUybNs30fsWKFblz5w5XrlzhqaeeYvfu3fj7+6NWq/npp5+oWLEigYGBbNiwgbp162JnZ5fPQyw87p1fJWbnd0Rv+5p7+0JwbtIVp/rPo9bZFnY0IYTIlxyLRqNGjTIsN2vWjH79+vHqq68+djtPT0/GjRvH4MGD0ev19OrVizp16jB8+HBGjx6Nv78/M2bMYOzYsSiKgpubGx9//DHwsJvvpEmTWLhwIa6ursyaNesJDrHw2JSvgc9Ln5By9RT3DqwjdtcP3D+wDueGnXEKCERjKyMGCyGKlxyLxn/du3ePu3fv5mrdoKCgTJe3Fi9ebPq5devWtG7dOtN2fn5+T3TjuyhRqVTYVq6DbeU6pNy8wP2Dodzbu4b7v27EqUFHVDYVCjuiEELkWp7vaURERNC3b1+LBSrJbMpXx6vPu6RGXuX+ofU8+HUTzioV0XEXcW7aDa2zR86NCCFEIcrTPQ2VSoWrqytVqlSxaKiSztqzEp7B49C36svlsG+J+2MXcX/8hEPtlrg07Y7u79n/hBCiqMnxifAKFSqwdetWGjVqhJubG3PmzCE6OrogspV4WlcfkmoHUuH1L3AK6ETi2YPc/Hoskes+JfW2DD8vhCh6ciwaEyZM4KmnngKgXLlyNGrUqFiOBVWUWTm5Ufb5l6gw6itcmvcg+a+T3FoynturPiL5+tnCjieEECY5Fo179+6ZBiy0trZmyJAhREVFWTxYaaSxd8a1zQtUGPUVrm0HkHrnT24vm0TMrh8KO5oQQgC5KBoGg4HIyEjTcnR0dL4GMBS5p7axx6VZDyqM+grHuu14cHiTnHEIIYqEHG+EDxkyhODgYFq2bIlKpeLgwYO8/fbbBZGt1FNrrXFrP4zka6eJ3vIF5V6eg1prXdixhBClWI5nGr169eK7776jVq1a1K5dmyVLlmQ7tIgwP7XOBvfAV9HH3ubevpDCjiOEKOVyLBqRkZGsXr2aIUOG0Lx5c+bOnSv3NAqYbeU6ONZ9lge/biL19p+FHUcIUYrlWDTeeeedTL2n3nvvPYsHExm5PvciGntnojZ/gWJIL+w4QohSSnpPFRMaG3vKdhxB2t2r3D+0obDjCCFKKek9VYzYV2+Efa3m3Nu/lrTom4UdRwhRCuWp9xTAoUOHpPdUISrbfhjJf50gavMX+AyehkpdvOYZEUIUb3nqPeXv70/fvn1ZunRpQWQTWdDYO+P2/FBSb10g7tj2wo4jhChlcjU0ure3N2lpaaxYsYKkpCQGDRpk6VziMRxqtyLhzH5if16BnV8AWhfPwo4khCglHls0rly5wg8//MCmTZsoV64cKSkphIeH4+joWFD5RBZUKhXugSO58fVYord+hVf/D1CpVIUdSwhRCmR7eWrEiBEMHDgQrVbL0qVL2bx5M/b29lIwiggrp7K4tRtE8l8niT8RXthxhBClRLZF4+zZszz99NP4+flRsWJFAPk2W8Q4PvM8NhVqEbvre9LjYws7jhCiFMi2aOzZs4fu3buzefNmWrRowejRo0lNTS3IbCIHKpUa986vohjSid6+WLpCCyEsLtuiYWVlRWBgIMuWLSM0NBQPDw9SU1Np3749q1atKsiM4jG0rj6UadWXpItHSDx/qLDjCCFKuBy73AJUrVqViRMnsnfvXoYNG0ZIiAycV5Q4Nw5C51WFmB3fYEiKL+w4QogSLFdF4xFbW1v69u3L+vXrLZVH5INKrcG9y2sYkhOI2fVdYccRQpRgeSoaouiy9qyES7PuJJz6haTLxwo7jhCihJKiUYKUad4LbdnyRG1bhDE1qbDjCCFKICkaJYjKSot7l9cxxMUQG768sOMIIUogKRoljE25ajg16kzc7ztIvn6msOMIIUoYKRolkGvr/li5eBC95UuMenm2RghhPhYtGmFhYQQGBtK+fXtWrFiR6f0zZ87Qs2dPunbtysiRI4mLiwMgLi6OESNG0KlTJwYMGCCTPuWRzCsuhLAUixWNyMhI5s6dy8qVK9mwYQNr1qzh8uXLGdaZPn06o0ePZtOmTVSuXJlvv/0WgHnz5hEQEMC2bdvo3bs306dPt1TMEsu2ch0c6z33cF7xiMs5byCEELmQq6HR8+PgwYM0adIEFxcXADp06MD27dsZNWqUaR2j0UhiYiIAycnJODs7Aw+HMHl0ZtKlSxemTp2KXq9Hq9VaKm6J5PrsYJIu/07Uli/wGTIDJT0NY1oySmoyxtRkjGnJGFOT/v7z79f/+9qjPw16dN51oUGDwj4sIUQhsljRuHv3Lu7u7qZlDw8PTp48mWGdCRMmMHToUD7++GNsbW1NT5r/e1srKyscHByIjY3F0zN/80acPn06n0dRMI4ds9xzFdpq7XD4/UeuznohV+srGi2KlQ5FY/3wTysdipU16vRU7E9v5UxKPClVWkARH7zSkp+pOUlO8ysuWYtLzv+yWNEwGo0ZRsVVFCXDckpKCu+//z7ff/89derU4bvvvuOdd95h0aJFmdpSFAW1Ov9X0mrXro21tXW+t7ekY8eO0cCi394bkFChPPp7kah1Nqit7VDpbFFb26J+9Oej13Q22U4fqxjSOb/0I2wv78PDyZayHV4uslPNWv4zNQ/JaX7FJWtRz5mamprtl22LFQ0vLy+OHj1qWo6KisLDw8O0fPHiRaytralTpw4Affv2Zf78+cDDs5Lo6Gi8vLxIT08nMTHRdJlL5J3D0y2fuA2Vxook/y54VKzCg0MbMCQ+wCN4LGornRkSCiGKC4vdCG/WrBmHDh0iNjaW5ORkdu7cSatWrUzvV6xYkTt37nDlyhUAdu/ejb+/PwCtW7dmw4YNAGzdupWAgAC5n1EUqFS4tRuE2/MvkXThMHdWTsWQkljYqYQQBchiZxqenp6MGzeOwYMHo9fr6dWrF3Xq1GH48OGMHj0af39/ZsyYwdixY1EUBTc3Nz7++GMAxowZw4QJE+jcuTOOjo7Mnj3bUjFFPjg36oLG3oW7mxYQsXQi3v0mYuXkVtixhBAFwGJFAyAoKIigoKAMry1evNj0c+vWrWndunWm7VxcXPjqq68sGU08IYenW6Cxc+LOj7O49cN7ePefhK5s+cKOJYSwMHkiXOSbbeU6+AyaCoZ0Ipa+T8rNC4UdSQhhYVI0xBOx9noKnxeno7Zx4PaKD0m8dDTnjYQQxZYUDfHEtGW8KPfix2jL+hK5dibxJ8ILO5IQwkKkaAiz0Ng74zNwCraV/InavJB7B9ahKEphxxJCmJkUDWE2amtbvPq+i8PTLbm3ZyUxO79FMRrM1r5Rn4o+9rYUIyEKkUV7T4nSR6XR4t5tNBoHFx4cDsOQeB+PrmNQWeXtORvFaEAffYuUiEukRlwmNeISaXevgWLErnpj3DuNRGPvbKGjEEJkR4qGMDuVSo3bc0PQOLgSu/sHbifF4dXrHdQ29lmurygKhvhYUiIumgpE6u0/UdJSAFBb22Ht44dLs+6gUnP/0HpuLh5H2cBXsa/WsCAPTYhST4qGsBiXJl3R2DsTtXkhEcs+wKvfRKwcy2BMSST19p+kRFwm9e9CYUi493AjtRXWnpVwrNMWa5+qWPv4oXX1RqX650qqQ81m3N04n8i1n+BYtx1uz7+E2tqukI5SiNJFioawKEf/1mjsnIhcN5tb372N2toOffQt4OF9Ca2rD7aV/LH28Xv4n2elHC9l6TwqUG7oJ9zbG8L9QxtIvnoa966jsK3wtMWPR1GMJF04QurtP3Fp0Qu1tmgOhCmEpUjREBZnV6U+3gOnELPzWzS2jjg83fLhWYR3FTS2jrlu50ZkPKE/X2ZAxxqUdbHFte0A7PwacHfTAm4vm4xz4yDKtOlvkWNQDOkknN3P/YPr0UffBCD52mm8+ryHxi73xyBEcSdFQxQIG5+qlBsyI9/b/3nzPpMXH+JBQhqRsUl89Eoz1GoVNuVrUP7l2cTsXsqDw5tIunIcjd/zZsttTE8j4UQ49w9tJP3BXbTuFfAIHgtqK6I2zidi6Xt49Z+E1tkj58aEKAGkaIgi7+xfMUz95lfsbLX0b1+dVTsvsOGXy/Ro6weAWmeLe6eR2Ps1JGrLFzge+o57umRcmgbne84PY2oycX/s5MGvmzAk3sfaxw+39kOx82tgur+isXcmcu0nRHz/Pt79J6LzqGi2YxaiqJLnNESR9seFu3yw6BDODtZ88noL+revTlN/b5ZtO8efN+9nWNeu6jOUHz4XvWd17u1ZScTSSehjb+dpf4bkeGL3ruH6568Qu3spOo8KeA/4EJ8hM7Cv1jDDDXnbCrXwGfQRqCBi6USSr58xyzELUZRJ0RBF1qFTt5n67WG83ez5ZFQLPMrYoVKpGNW7Hk721sxZeYyUtPQM22jsHEmsG4xH8Fj0MTe5+c2bxB3bkeMDgenx94jZ/QPXF7zC/X0h2FSoic+QGXi/MBnbSv4ZZp38N51HBcq9+DEahzLcWTmNxPO/mu34hSiKpGiIIunnYzf4ZOlvVCnvzIzXmlPG0cb0npO9jrH96nMjMoEfNp/NvLFKhcPTLSk/fC42vjWI3r6IO6unkx4fm2lV/f1IorZ9zY2Fr/Lg8Gbsqzei/PC5ePWegE25arnKauXsjs/g6ei8KhO5bjZxx7bn+7iFKOrknoYocrYd/IsvQ0/iX6UsE4c2xtY68z/T+tU96NaqChv3/kmDmp4E1PTMtI6Vkxte/SYRd2w7sbuXcnPROMp2GoFDreakRd3g/qH1JJzeB2o1jnXa4dK0G9oyXvnKrLFzxHvAh9wNnUP09sWkJ9yjTKt+2Z6hCFFcSdEQRcqP4Zf4YctZGtXy4p3BAei02d/IHhxYkxOXopi/5g8WvNkWF8fMz0yoVCqcAzphW7kuUZv+x931n3H/QChpd6+i0lrj3Kgzzo2CzDLzoFprjWfvd4je+hX39/+IIeE+ZTuNyPfNeCGKIikaRdz3m89w8fr9nFd8DJUKerbz45nqRbdbqKIoLNt2jrW7L9GqfjnG9X8GK83jr57qtBreHNCAN+b9woKQ40wc2ij7ew9uPvi8OJ37B0JJOLMPlxa9cG7YGY2dk1mPQ6XWULbza2gcynD/wDoMSQ/wCB4nDwGKEkPuaRRh1+7Ese7ny9xPSMWoKPn+73pkPF+uO4E+3VjYh5Qlo1Fh0fpTrN19iQ5NKvLGCw1yLBiPVPJ24sXOtThy9g7bf7322HVVag1lWvbG95X/4dq6v9kLhmk/KhWubV7Arf0wki4e5fbKqRiS4y2yLyEKmpxpFGFb9v+F1krNjNea4+yQ/2+qR89FMuWbX/npyDUCm1U2Y8InZzAY+V/IccKP3iC4dRWGBj2d5/sAQS2e4ui5SL7ZeBr/Kk9+mclcnBsGonFw4e7G+UQsnYh3/0lYOZUt7FhCPBE50yiiEpL1hB+7Qev65Z+oYAA0qOHB00+5sXrnBVJS03PeoIDo0w3MWn6U8KM3GNCxRr4KBoBarWJsv/pYa9XMWfk7BmPRmW/DoWYzvPtNJD0+llvfv0da1I3CjiTEE5GiUUTt/u06qWkGOrd48jMDlUrF4MCa3ItPJWz/FTOke3Ipael8tOQIB0/eZni32vR7vvoT9TRyc7ZlVO96XL5xnz2n4syY9MnZVvLHZ9A0MBqIWDqRlBvnCzuSEPkmRaMIMhoVthz4i5qVXKla3sUsbdaq7EbDWp6s+/kyCUlpZmkzvxKT9Xy4+FeOX7zL6D716NqqilnabVbHh+cbVWDfmXjOXIkxS5vmYu1ZCZ8hM9DYOXF75RQSL/5W2JGEyBcpGkXQ7xfucjs6kc7NzXv/YVCnmiSl6Fn382WztpsXDxJSmfjVAc5fjeWtgQE839i84zUND/anjIOGz1YeIzFZb9a2n5TWxQOfwR+h86hI5I+zsP7rV/T3I2X6WlGsSNEogrYc+IsyjtY0q+Nj1nYr+zjTun55Nu27Qmxcilnbzo2YB8m8+8UBrt+JZ+LQxrSsV87s+7C1tqJHM1eiH6Tw1fqTZm//SWnsnfEe8CG2T9XF7kI4Nxa+xrV5Q7mz5mPu7VtL0p9/SE8rUaRJ76ls7P3jJrFxKQS3rlqg+42ITuDY+Uj6PV8drZX5a/qAjjXYd/wWq3+6wGs965q9/ew8SEhlwsL9PEhI5cMRTfGvYrleRL5lren3XDVW7rxAw5qetKpf3mL7yg+1zgavvu9x4udtPOVs9fc86JdIuvw7/0xO5f33xFQPZy/UeVZCbaUr3OBCIEUjW9cj4wnZdZF61Tyo5G2Z/vxZ2XrgKmqVig5NLDPMtpebPR2aVGTHr9cIbl0Fn7IOFtnPvymKwv/WHCfmQQozXmtO9YquFt9nn+eq8fuFu3zx4wlqVHLFo0zRmg5WpVJjcPbCqUEDnBp0AHg4De6dK6RGXCLl1iWSr54i4fTehxuorbD2rPjPDIc+VdG6+WQYdVeIgmDRohEWFsaXX35Jeno6L774IgMGDDC9d+7cOSZMmGBajo2NxdnZmc2bN7N+/XrmzJmDm9vDPvdt2rRh3LhxloyaSbdWVdi87wrLt51j4tDGBbLP5NR0dh25RvM6Prg521psP32fr87uozdYsf084wcGWGw/j2z/9RpHzt7h5W61C6RgAGg0at54oQFjPvuZuat+56NXmqNRF+1xoNQ29thW8se2kr/ptfS4mIdFJOISqRGXiT+1xzQgotraDp1HRTSOrlg5uv39pytWTn//7FAGlebxU+cKkVcWKxqRkZHMnTuX0NBQdDod/fr1o3HjxlSt+vByT82aNdm4cSMAycnJ9O7dmw8//BCA06dPM2HCBLp06WKpeDlytNPRvW1Vlm87z7m/YqlZ2fK/7Pb8fpPElHSzdLN9HFcnG7q2fIq1uy/Rs60fT5Vztti+bt6N55uNp6lXzZ2gFk9ZbD9Z8S5rz4hgf+avOc6GPZfp2c6vQPdvDlZOblg5uWFfowkAitGAPuYWqRGXSbl1CX3MTVJv/0nSxd9Q0jP3itPYO6NxeFhMNI4P23r48z+vqa3tZGBFkWsWKxoHDx6kSZMmuLg87DLaoUMHtm/fzqhRozKt+/XXX9OwYUMCAh5+6z116hRXr17l66+/pnr16kyaNAlnZ8v9YstO15ZV2Lz/L37YepYZrzW36P9YiqKwef8VnirnTM1Kli9QPdr6se3gVZZtO8fkl5tYZB/pBiNzVv6OtVbD2H71URfCN/1nG1bgt3ORLN9+jrrV3M3WhbmwqNQadO4V0LlXwLFuO9PriqJgTEkgPS4GQ3ws6fGxf/8ZQ3p8LOlx0aTcuogxi5vsajsnrL2rYuPjh3U5P6y9q8q85yJbKsVC/f2+/vprkpKSTJeV1q5dy8mTJ5k2bVqG9eLj4+nQoQNhYWGmy1Gvv/46Q4cO5ZlnnuGzzz4jIiKCOXPm5DlDamoqp0+ffqLjOHwhgW3H7jOgTVn8fGxy3iCf/opM4Yfd0XRtXIZnqthbbD//tv9sHLuOx/HSc+5U9DD/gHq7Tzxg35l4+rR0o5av5S635SQp1cCXWyOx1qoZ0dEDnQU6GBQbhnTUqfGoU+JR/f2nJiEaqwcRqBOieVTWDXZlSHf2weDsTbpLOQyOnqCRW6ClTe3atbG2zvi7wWL/CoxGY4Zv5oqiZPlNfdOmTTz33HOmggGwcOFC088vv/wyzz///BNlyerAc6tOXSPH/trNoUt6+nRuZvZvy8eOHaNBgwbs/OEIjnZaBndvjvVjhgM3p6f90/n9yi5+vWyge8dncjyTepQ1N85ciWH/2f0836gCg4LrmyNurmWV07HsXSZ9fYjjN3W8WoC9xh4nL59nQTCmJpN6+/LDS19/9+gy3P57Clu1Bp1HJWzK/dOjq6jdiE+LusHpS1d4plnrwo6So6L2d/9fj/vCbbGi4eXlxdGjR03LUVFReHhkHpp7165djBw50rQcHx/PunXrGDJkCPCw2Gg0hTcfgdZKzcCONfhs5e8cOBFBy/rmf7Yg6l4yv56+Q/fWVQqsYADY6Kzo174GX/x4gqPnImlYK38TEP1XYrKez1Yew8vVnuHB/jlvUADqVftn0qaGtbyynLSptFNb22Z5I/7s/h2UtzWSEnGZ+FO/mG7Eq6ztsPGugrWPH/bVG2PtU7Dd0x8xJD4gZtf3JJzei7NKw92o4zgFdMr1zIsibyxWNJo1a8aCBQuIjY3F1taWnTt3Zro0pSgKZ86coX79f76J2tnZ8c0331C/fn3q1q3L8uXLn/hM40m1ql+edeGXWLb9HE3reOd62O7c2nboL1AUOhXCCLTPN6rA+j2XWbr1HA1qeJrlTOqr9SeJfpDCzFEtspx1r7CYJm1a/Qez/q8l3mUL5jJgcWbl5Ibeszquf38rVhQj+uhbpP7dmyvl1kViD27g/sFQzlvV5Fddc5LU+fhcVdCleWXaNPDN9SaKopBw6hdidn2P8upy3QAAIABJREFUMTUZl2Y9uHPzOuqLv5Fwei/W3lVxatgJh5rNUVlJLzJzsdi5paenJ+PGjWPw4MEEBwfTpUsX6tSpw/Dhwzl16hTwsJutVqvNcOlIo9Ewb948PvzwQzp16sSZM2cYP368pWLmikatYnBgLW5HJ7LryHWztq03KOz49RoNa3nh6VrwzxJYaR6eSV29Hcfe47eeuL29f9xkz7Gb9HuuGjUKqHttbum0Gt4a2ACD0ciEhfu4fqdoDWxYHKhUanTuvjjWbYfz88NYatWHCbF9OG7TEL/0iwxI/oFGyh842qixt9Xm+r/EZD3z1xznr4gHucqhv3eHO6umERW2AK2bD+Vf/hTXtgNIrtWeiqMX49bhZYxpyURtWsC1BSOI3bOS9LiiNR5ZcWXRr4FBQUEEBQVleG3x4sWmn93c3Dhw4ECm7QICAli/fr0lo+VZw1qe1KhYhlU7L9A2wNdsl5HOXEsiLjGtwLuj/luLuuVYF36ZFdvP0byOT76fRL97L+nhw3QVy9DnuaJ5aaCilxMzXmvBpK8PMmHhAaaOaEpV3+Ldo6owpKSm8/H3R/jjYhQjghsQ1LI3+tjbxOz6noBLe2lqfQm3517Czi931+0fJKTyf7N/ZvaKY3w2tnW2/38pRgMPDodxb+8aUGtw6zAcpwbtM9xbUVvb4hzQCacGHUm+epK437Zx/0Ao9w+ux756Y5wadsLGt5Z0M86nonMXq4hTqVS82LkWsXEpbDHT8OKKonDkYgLlPRyo41d4k/Oo1SoGBdbkTkwSOw8/fva77BiMCnNX/Y5RUXhzQAM0Zr6EZ04VvZ34ZFQLbK01vPflgSI3Im5Rl5Cs54NFhzhxKYox/9/enYdFWa4PHP8O+w4ioIC4oKDkBuKGouaOAuJ63HIttbKT2aKWp8ylzWzTrGOnflpqKkrupinuO+CCmgoICgqCArEzjMzz+8OYQlBHZIbRns91dV3NvIs3D6/e7/K89z3cj9Aud094TB1dqfuvt6k74j+gUHAz/EPS1n5ASWbqQ/dpb2POayPakHwzjx+3/17pOsq0K9z4v5lk7V2JpWdrPKZ8hX3boPs+jFcoFFg1ak3df83CY+pS7DuEUnT1HGkr3+PG92+Qe3o3apWy6gPxD2W4f7MNUIvGTvg3c2F9ZDz51VBBNS45m9QsFSGdG9X4WU9Zo6Z1u6vWqGnT/gTOX8lk8sBW1K1t+M8K3Jxs+OSVLjjaWfDed8eIuZRe0yE9EXLylcz+9gjxKdnMGNOOXu3rV1jHqrEf9SZ9jmOvcRSnXOT6d9PJjPwJtbLwgftu08yF0C6ebD2UyKlLGZrv1SXFZO75kRvLZ1Gan43LkDepM3QmJnbad2k0dahD7Z5jqf/qdzgFvwQouL3jvyQvnkxm5I+osm9qva9/Opk0HtGYfj7kF6nYuP/xy4tvO5yEmYmC7m21f/inK4/TqCnh+h+s2nmRTq1c6dmu5n8WbTk5WPLx1EDqOduw4P9OcCT24WfE/2SZOUXMWnqY6+l5zJ7Qgc6t71+FWWFsikOHAXi89DW2LbuSc3wzKd/+m7yzexHi/r3qxwU/Q/26tny59hQ5+UoKr5zm+nfTyTmxBVvfntR7cTE2zQKqfJJlZGqOnW8v3F9YhNvYBVg2akXOiW2kfPMKN8M/ojDxDEJdWqV9/1PIpPGIGtdzoKuvO5sPXiH7McqLZ+cVc/jsDXw9rbGyMIyZHVVp1FRccofPVsdgZ23O1KG+NX7F9KgcbM354OXOeHnUYuFPUURGVe9Eh6fFzcwCZn59mMycYuZODtB6yrKJjQPOIVNxm/AJJg4u3Nq2lNQV71B8I67S9c1NjXlztD/qojxivlvAzbULUJiY4DpmHs79X8TYonquYhUKBRYePtQZ/Ab1X/kvDoFDUKbGc3PNfK59MZH0iE/JjdmFKitV7/1O1MpClOlXDTZ5Gc58yCfI6KBmHI5NJXxPHFMGt6rSPnYdv8adUkF7b8O6lTOmnw/TPt/Phr3xjA9p/tD1l2+9wPWMfOZPCcDO+sks3W1jacq8yQF8sPwkX649TZHyDiE1ODHB0GTkqFj89SFUd9R88FInvDxqPfI+LNya4DbuA/LPHyRr7ypSV7yNTatncXz2OUxs/9qfEAKn26d5z3ELFBaT2ag3/sMn6rQsvIldbRy7jaRW56EUxEdRdOUMRUlnKbh0/M/lTlg2aoVlo1ZYNGiJiU31TZwQpXcoyUj+syhlAsrUOFS3bwACE4c62PkHYdu6B8aWuq9GrS2ZNKrAzdmGPh0asPP4VcK6NX7ke/h3StX8evQqft7OONkZxlVGmbJGTVsPJxHaxfOB1Xajfr/JjqNXGditMb7eFV/cfJJYmJvw7vMdWLgymmUbz1GkvMOwnoY5A0yfElL+YPmeW1iYmfLRy4E0eIw2AQqFEbYtn8XauwPZRzaQc2IbBZeOUytwGPbtg7mTm8ntX7+jKOks1u7erMnvyPHzxizuU4Kbs+5PSBQmptj4dMLGpxNCCO5k36QoKZaiq7EUXD5J3tm9AJi51Mey4Z9JpP4zGJnd/Ttyp1TNwdPXOXj6Bq29nOnbsUG5uwhCCO78kY4yNQHLi4e5cT6CkptJmkKTZTXAbHw6Y2zrSP65/WRF/kj2gTXYtOiKfbv+mLk8vGVCYbGKnceuEZeSzRuj/Ku9L49MGlU0orc3e6OSWb3rEm+MerRyAMfOpZGVW8zUYa2h6PHfjahuZY2a1u2O4+WhlZfc+CNPyeJ1Z2joaseYfj56jlA3zEyNmTWuHV+tPc1POy5SUKRiXPA/d2rmhcRM5n5/HHMTBZ+8Un0vQxqZW1K7xxjsfHuSuXsFWXtXkntqF6X5f5SbRjs+R0nMon189nMMn7zSpdpfqn0QhUKBqaMrpo6u2Pn3RahLKbmZRNHVWIqSYsmN2UXOyW13y6u4eXHduD6/XrXkTLYt9raWxFzKYOueWAa3NMa/dgHcTkKZloC68O67QeZGJuDWGLs2fTT9UUwc6pQ71uz8eqG8mURuzE7yzx8k78weLOo3x65tP6ybtkdhVH5ack7+3eeR2w8nkV+kot0zddDFoSuTRhXVtrcktIsnv+xPYEh3r0dq1LT9SBJ1HK3wb1aHM6cNL2nUrW1NUEBDdh67ysBnKzZqEkKwOPw0BcUqFrzYCTM9lj7RNRNjI6aPbIOluQkR+xIoVN7hxUGtaqRCb02KuZTOhyuicKllybBONjp5e97U0Y26w9+h8Mppsvb+hFljP5z6PK+ZFeXkYMnUYa355Kdo1u6+zHNBNXdyojAy/rPmVhMcOg1GrVLyR+IFLh45jDr5Aq6KS4xTwBgXc6zcvSjKTEeRfwsSoCAeCi2ccWjki2PDZpi7e3E+5Tb+7do/9M81r9sI5+CXcOzxHHlnIsmN2UXGL4swtq2NXZs+2Pn1JrPElE0HrrDr+DVKVKUEtHRlaA8vvOs/+m1Ebcik8RiG9PBi57GrrNxxkXef165RU1JqDhcSM5kY2tygmwIN7+XNnqjkShs17Tx2lajf05kU1uKxblcYKiMjBS8NaYWVxd3EUay8w7Thfgb97kl1OhKbyqJV0dSvY8fcyQFciXu8StEPY9XYD6vGlRe1DGztTlTbdNbviaNNUxeeaaT9NFtdyc4tZvPBK+w4mkaRsgH+zdoxLNCdBoobFCXForwRj7W7JxZuffnDwo3tF9XsOXMLowx4VuXCEA9nMMp+pD/T2NIWh4CB2HcIpTDhFLnRO8g+sIbbB8I5VdKAc0ofAlv7MrSHFx51dFvWXiaNx2BrZcbg7l6s/PWi1o2ath1OwszUuNL57Yak1n0aNaWk5/H9lgv4ejs/1Q+Ly17mtLIwZeWvFylS3mHGmLaYmjw9V1WViYxKZvG60zRt4Mh7L3TExrLmn7lNGdSSC4mZfPbzKZa88WyNzTa8mVnAL/sS2BOVTGmpms6t3Rna4+9NzOpj0yyg3DYOwL/bwPB+hWzcn8BvJ64RGZ1Ms3qW2Lv88cjVCBRGxtywaMKGkn4k5TSkq2UcHSwSaWeWiHlxHHYZ/RC1O+m01pbx+2Xt8p5CpaWlZGRk4OLigomJbvJjY3d7dp9MJjE1h57tPB54/zuvsIQv156mu389uvjerZablpaGm9v957vXpMb1HNh17Cqptwt4tk09Uq6n8t2OayhLSpk3OQBrA/gHpTLVNaYKhYLmnrWxszZj88FELidn06mlKybV9GDR0H732w4nsnTDWVp7OTPnhY6af5xrOk5TE2O8PGqx5eAVMnOKCWjpet91dRHr1bRcvt98nqUbzpCUmkvPdh68NaYtQQENqWWnXY8da0tT2vrUoW/HhpiYGHH8Qgbbj17lYlIWte0tqOP44O6JQghi42/z9foz/LTjItl5Svp0bcGAkQNxDQzF2MaR4uTfyTuzh7wzu1EXF2Lq6IaRedXq2T3o3055pfGYLMxNGNG7Kf/9JZZTlzPwb3b/+eu7TyRToioluLP+q9lWhY2lKUN7eLFi++9cSMxk/7lcrlzP453x7XTaw9zQhAR6YmluwuJ1p3nvu2MGcwZeXYQQrI+MZ+WvF+nQvC4zxrQ1uOdUPo0cGdbLm3W742j3TB0CW1d/i4J7/Z6UyfrIeKIvpmNpbkxYtyaEdX3wjMKHcbA1Z0w/Hzxr5XOz0IFNB6/wn/8exbu+A0N7eNOhed1yz8/UasGJC2msj4wnPuUPatmaMyHkGYICGpa74rJv1x+7tkF3H9JH7eCPIxHkRO+gwav/w8isepvHyaRRDfp0aHC3vPj2i/h5u1T60LRULdh+NInmnrVp5Kb/1rVVFRzYiC2HrvDVutOk3S6gd/v6BLQ0nLNjfenZrj4W5iYsWhXN7G+OMG9KAPY21d/tUN+EEPy4/Xci9iXwbJt6TBvhp9dZSo9iRO+mnL6cwdL1Z2nWwBEnh+o/cRFCEHMpgw1747mQmImtlRmjg5oR3LkRtlbVN+3XwtSIIT28CO3iSWRUMhH7EvhwxUk86tgytEcTOrVy48jZVCL2xZOSno9rbWumDm1Nj7Ye903oCoURVp6+WHn6osq+SUnGtWpPGCCTRrUoa9T02QMaNcVcTCcjq5AJIc/UQIRV9/dGTbVsjA2mqVJN6NzKDYuJHfhwRRRvLTnEmH4+dGrlZtATGh7kWlouq3dd4ti5NPoFNOTFwYY9S8zE2Ig3Rvsz7bP9fLHmFPOnVF8nzVK14OjZVDbsjScxNQcnB0smDWxBn/YNsNBhTxgzU2P6dWpEnw4NOHQ2lYi98Xyx5jRLws9wp1TQ0NWOt57zp3Mrt0eaiGFaqy6mtaqnqdq9ZNKoJl396hGxL+G+jZq2HU6ktr0FHVvc/36soerdvj63sgtxMs81qKZKNcG/WR3mTQ5gSfgZFq6MxtXJmiHdm9CjrccT85D8YlIW6/fGEfV7OhZmxjzXrxn/6un9RLyP4uZkw6SBLVkSfoZNB64wuPvjdQtU3SklMiqFX/YlkJZZgLuzDdOG+9GtTb1qfynuQYyNjXi2TT26+bkTfTGdExdu0rGFK/7NXAzu9/LP/hegGpWVF5//wwn2nEwmKKChZtn1jDxOx93iuaBmBnvp/yAmxkaM7f8MMTExNR2KQWjuWZulM3pw/HwaGyLj+Hr9WX7edZmB3RoTFNDQIBOrEIJTlzNYH/nXbZdRfZsREli9t130oXf7+kT9fpOVv/6OX1PnKt3uLXtrevPBBLJylTTxcODtkHZ0bOFao1dbCoWCds/UrbbWy7pgeEf3E6ydTx18Gjqy5rfLPOtfDwuzu8O7/UgSJsZG9On48BIA0pPB2EhB51ZudGrpytn4W6yPjOf/tl4gfE8cIYGehAQ2MohnHqVqwdHYP2+73MjByd6CSWEt6NNBt7dddEmhUPDKMF9e/Wwfn66K4Yvp92/adK9735pu7eXE9JFtaO3lbHBn9IbqyTxqDFTZ3P5ZSw+z/XASQ3p4UVisIjIqhUBfN2rZVv9DKalmKRQKfL1d8PV24fK1LDbsjWft7stsPJBA3w4NGNitCc619D/TTHWnlL3RKUTsSyDtdtltF1+6tfHQ620XXbG3MWfaiDbM+e4YK7ZdYMqgBxcOzcgu1Otb008zmTSqWXPP2rT1qcOGvfH0DWjIgZiUu1VTn5BptlLVNW3gyOwJHUi+mUvEvgS2H0lix9Eknm3jwZAeTajnots3deHubZddx6+x6cAVsnKLaVLPnlnj7t52eVIf2N9Pm6YuDOjiyZZDibT1qVPpdPeU9Dwi9sWzP+Y6AN3a1NPLW9NPM5k0dKCsvPgv++I5di4NLw8HmjZ4+Nvi0tOhfl07po9sw+i+zdh4IIHfTiQTGZ1MQEtXhvXw1klP8px8JdsOJ7HtcCL5RSpaNXFi+ki/p/62y9jgZzgTf4uv1p5myZvdNd/HJWezYW88x8+nYWpiTP/OjRjYrTEutar2spv0F5k0dMDT3Z6ufu5E7I1HLWD6yMrr6khPNxdHK6YMasWI3k3ZciiR7YcTORqbhq+XM0N7elVLc59b2UVsOpDArhN339Tv2KIuw3p6/2Nuu5Q1bXr9y4MsCT9D0zp32PjfI5yNv421pSn/6ulNaBdPg3i+9LSQSUNHRgc148jZVOytTfXy9qpkuOxt7r4FPKR7E349epXNf74F7GBtjO3evY+xZ0Ha7QKEuHvbZUj3JtSv+/QVkHyYRm72jAv24YctFzhxgfu+NS1VD5k0dMTNyYaXh7bG2tLU4EoySDXDysL0r7eAo1PYfzKOWg6Pd2/dv1kdQgM9cXH8Z992GdClMflFKgr+yGDCkED5d06HZNLQoT4d5BRbqSIzU2P6BTTExSwTf/9Ha+AlVc7ISMFzQT7ExBTKhKFjT/7cO0mSJElvZNKQJEmStCaThiRJkqQ1nT7T2Lp1K99++y137txh3LhxjB49WrPs4sWLzJo1S/M5KysLe3t7tm3bRmpqKm+99RaZmZk0atSIRYsWYW1d/T2KJUmSpEejsyuN9PR0vvjiC37++Wc2bdrEunXrSEhI0Cz38fFh8+bNbN68mbVr12Jvb09ZE8G5c+cyatQodu7cSYsWLfjmm290FaYkSZL0CHSWNI4ePUrHjh1xcHDAysqKvn37snPnzkrXXbZsGe3ataNt27aoVCqioqLo27cvAIMHD77vdpIkSZJ+6ez2VEZGBs7OzprPLi4uxMbGVlgvLy+P8PBwtm7dCkB2djY2NjaavrTOzs6kp6c/Viznz59/rO117UkqOf6kxCrjrF5PSpzw5MT6pMR5L50lDbVaXa7mjRCi0ho4W7ZsoVevXtSuXfu+61W1dk5ZmQZvb2/MzAyzZ8D58+dp0aJFTYehlSclVhln9XpS4oQnJ1ZDj7OkpIS4uLhKS93oLGnUrVuX6Ohozedbt27h4uJSYb09e/YwZcoUzWdHR0fy8vIoLS3F2Nj4vttpQ6VSARAXF1el7fXF0K+E/u5JiVXGWb2elDjhyYn1SYhTpVJhYVG+pYPOkkanTp1YsmQJWVlZWFpa8ttvvzF//vxy6wghuHDhAn5+fxX0MzU1pW3btuzYsYPQ0FA2bdpE165dqxSDtbU13t7emJqaPtWVPiVJkqqTEAKVSlXprFWFqI5Sm/exdetWli1bhkqlYujQoUyaNIlJkybx6quv0rJlSzIzMxkwYABHjhwpt92NGzeYNWsWmZmZuLq68vnnn2Nv/+gtHSVJkqTqpdOkIUmSJD1d5BvhkiRJktZk0pAkSZK0JpOGJEmSpDWZNCRJkiStyaQhSZIkaU0mDUmSJElrMmlIkiRJWpNJQ5IkSdKaTBqSJEmS1mTSkCRJkrQmk4aefP311wQHBxMcHMzChQsrXd69e3fCwsIICwtj9erVNRAljBkzhuDgYE0cZ8+eLbf86NGjhIaG0qdPH7744osaiRFg/fr1mhjDwsLw9/dn3rx55dap6THNz88nJCSE69evA9qNXWpqKqNHjyYoKIiXXnqJgoICvce5bt06QkJCCA0N5e2336akpKTCNhs3biQwMFAztvo4Fu6N8+2336ZPnz6aGHbv3l1hm4sXLzJ48GD69u3L7NmzuXPnjs7jvDfWAwcOlDtWO3bsWK6yd5maGNMqEZLOHTlyRAwfPlwolUpRUlIixo4dK3777bdy60yZMkWcOnWqhiK8S61Wi8DAQKFSqSpdXlRUJLp16yaSk5OFSqUSEydOFPv379dzlBXFxcWJ3r17i8zMzHLf1+SYnjlzRoSEhIjmzZuLlJQUrcdu8uTJYtu2bUIIIb7++muxcOFCvcaZmJgoevfuLfLy8oRarRYzZswQy5cvr7DdvHnzxNatW3Ua24PiFEKIkJAQkZ6e/sDtgoODxenTp4UQQrz99tti9erVNRJrmYyMDNGzZ0+RlJRUYTt9j2lVySsNPXB2dmbWrFmYmZlhampK48aNSU1NLbfO+fPnWbZsGaGhocybNw+lUqn3OBMTEwGYOHEiAwYMYNWqVeWWx8bG0qBBAzw8PDAxMSE0NNQgWvG+//77TJ8+HUdHx3Lf1+SYhoeHM2fOHE0vGG3GriZaHd8bp5mZGXPmzMHGxgaFQoG3t3eFYxXg3LlzbNy4kdDQUN58801ycnL0GmdRURGpqam88847hIaGsnjxYtRqdbltbty4QXFxMb6+voD+WkffG+vfLVy4kBEjRtCwYcMKy/Q9plUlk4YeeHl5aQ7cq1ev8uuvv9KtWzfN8oKCAnx8fHjrrbfYuHEjubm5fPPNN3qPMzc3l4CAAJYuXcqKFStYu3ZtubL1lbXwfdxWvI/r6NGjFBcX069fv3Lf1/SYfvDBB7Rt21bzWZux00Wr40eN093dnc6dOwOQlZXF6tWr6dmzZ4XtnJ2defnll9myZQuurq4Vbg3qOs7bt2/TsWNHPvzwQ8LDw4mOjmbDhg3ltrl3zPUxnpXFWubq1aucPHmSsWPHVrqdvse0qmTS0KP4+HgmTpzIjBkzyp1pWFtb87///Y/GjRtjYmLCxIkTOXDggN7j8/PzY+HChdja2uLo6MjQoUPLxaFtC199Wrt2LRMmTKjwvaGMaRltxq6y72pqfNPT0xk3bhxDhgyhQ4cOFZYvXboUf39/FAoFL7zwAocOHdJrfB4eHixduhQXFxcsLS0ZM2ZMhd+voR2v69atY9SoUfdtPV3TY6otmTT0JCYmhvHjx/PGG28waNCgcstSU1PLnSUJITRnm/oUHR3NsWPH7htH3bp1uXXrlubz47TirQ4lJSVERUXRo0ePCssMZUzLaDN2f291fL919OHKlSuMGDGCQYMGMXXq1ArL8/LyWLFiheazEAJjY2M9RgiXL19m165d5WK49/d775jfvn27Ro/XyMhI+vfvX+kyQxhTbcmkoQdpaWlMnTqVRYsWERwcXGG5hYUFn376KSkpKQghWL16Nb1799Z7nHl5eSxcuBClUkl+fj4bN24sF0fr1q1JSkri2rVrlJaWsm3btiq34q0Oly9fpmHDhlhZWVVYZihjWkabsft7q2PgsVodV1V+fj7PP/8806ZNY+LEiZWuY2Vlxffff6+ZWbdq1Sq9j60Qgg8//JCcnBxUKhXr1q2rEIO7uzvm5ubExMQAsHnz5ho7XrOysiguLsbDw6PS5YYwptqSSUMPfvjhB5RKJR9//LFmOt2aNWuYNGkS586dw9HRkXnz5vHSSy8RFBSEEKLSWy661r17d7p168bAgQMZMmQIQ4YMwc/Pj7CwMNLT0zE3N+fjjz/m3//+N/3798fT05OgoCC9x1kmJSWFunXrlvvO0Ma0zIPGbvbs2URGRgIwZ84cwsPD6d+/P9HR0bz22mt6jXPDhg3cvn2b5cuXa47Vr776qlycxsbGfPnll7z//vv069ePCxcu8NZbb+k1zmbNmjF58mRGjhxJcHAwPj4+hISEAH8dAwCLFi3io48+IigoiMLCwvs+T9C169evVzhWwbDGVFuy3askSZKkNXmlIUmSJGlNJg1JkiRJazJpSJIkSVqTSUOSJEnSmkwakiRJktZk0pCeGtevX6dp06asX7++3Pc//PADs2bN0smfmZaWRkhICGFhYZw+ffqx97dmzRq+++67B65z4sQJzfTSe82aNYsffvjhseOQpPupuVdkJUkHjIyM+OSTT/D398fT01Pnf96JEydwcnIq9zbv4xg5cmS17EeSdEUmDempYmFhwYQJE3jzzTdZu3ZthTo/eXl5zJ07l0uXLqFQKOjSpQuvv/76Q0uMrFu3jpUrV2JkZISTkxPvvvsu6enpfPnll+Tl5TFmzBhWrlxZbpsePXowaNAgjh07RlpaGmFhYZqX9fbu3cu3336LSqXCwsKCmTNn4ufnx5IlS8jOzua9994jNjaW999/H5VKRf369UlNTdVcMRUWFjJ9+nQSExNRKpUsWLBAUyQvJiaGXbt2kZ+fT+fOnZk5cyYmJiZER0ezcOFCioqKMDU15bXXXqNr16788ssvbNiwgaKiImxsbPj888+ZOXMm2dnZAHTr1k3vLxlKBkzvxdglSUdSUlKEr6+vKC0tFaNHjxYff/yxEEKI77//XsycOVMIIcSMGTPE/PnzhVqtFkqlUkycOFEsW7bsgfs9evSo6NWrl6ZfR0REhOjXr59Qq9UiIiJCTJ48udLtunfvronh5s2bomXLliI5OVkkJSWJkJAQkZWVJYS42w+kc+fOoqCgQCxevFjMnTtXqFQq0bVrV03PjWPHjommTZuK48ePi+PHjwsfHx9x5swZIYQQy5cvF2PHjhVCCDFz5kwxaNAgUVBQIJRKpXjuuefE6tWrRVZWlggICNBsExcXJ9q3by+Sk5NFRESEaNeuncjLyxNC3O3j8e677wohhCgoKBCvvfaayM3NrcJvRHoaySsN6aljZGTEp59+ysCBAwkMDCy37ODBg6xZswaFQoGZmRnMAlmGAAADAklEQVQjRozgxx9/ZPLkyffd36FDh+jfv7+mX8fgwYP54IMPNB3kHqSsrHidOnWoXbs2OTk5nD17loyMDMaPH69ZT6FQkJycrPkcFxcHoCmh37FjR7y8vDTLPTw8aN26NXC3pEZERIRmWVhYmKYe14ABAzhw4ADu7u7Ur19fs42Xlxdt2rTh5MmTKBQKmjZtio2NDQBdunRh8uTJpKWl0alTJ9544w1sbW0f+rNK/wzyQbj0VHJ1dWXu3LnlbrNAxXLZarX6oS1A723uA3cL5mnTOtTc3Fzz/wqFAiEEarWagIAANm/erPkvPDy8XFIwNjZG3FPh5+9VT01NTSvst7L1xJ/VX0tLSystxV72M/y96GOrVq2IjIxk+PDh3Lhxg2HDhnH+/PmH/qzSP4NMGtJTKygoiK5du/Ljjz9qvgsMDGTVqlUIISgpKSE8PJxOnTo9cD9dunRhx44dZGVlARAREYGDgwMNGjSoUlwBAQEcOXKEK1euAHDgwAEGDBhAcXGxZp3GjRtjZmbGwYMHgbud/+Li4rTqB7F9+3ZKSkpQKpVs3LiRrl274uvrS2JiIrGxscDd3i5RUVG0b9++wvaLFi3im2++oVevXsyePZsmTZoQHx9fpZ9VevrI21PSU+0///mPpjR22ecFCxYQGhqKSqWiS5cuvPjiiwCaaq7Tpk0rt4/OnTszfvx4xo0bh1qtxtHRkWXLlmFkVLVzriZNmjBv3jxef/11zZXAt99+i7W1tWYdExMTlixZwpw5c/j8889p2LAhTk5OWFhYUFRU9MD916tXj1GjRlFQUEDv3r0ZNGgQCoWCr776ivnz51NcXIxCoeCjjz6iUaNGFaYKjxs3jlmzZhESEoKZmRlNmzattKS/9M8kq9xKkoH65JNPeP7553FyctLMvtqzZw92dnY1HZr0DyavNCTJQLm7uzN+/HhMTEwQQrBgwQKZMKQaJ680JEmSJK3JB+GSJEmS1mTSkCRJkrQmk4YkSZKkNZk0JEmSJK3JpCFJkiRp7f8B8qdKEFbAk34AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.title('K-NN varying number of neighbors')\n", "plt.plot(K_NearestNeighbour, test_accuracy, label = 'Testing Accuracy')\n", "plt.plot(K_NearestNeighbour, train_accuracy, label = 'Training Accuracy')\n", "plt.legend()\n", "plt.xlabel('No. of neighbors')\n", "plt.ylabel('Accuracy')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the above graph, I will re-run the test, however I will limit it down to below 9" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "K_NearestNeighbour_run2 = np.arange(1,9)\n", "train_accuracy = np.empty(len(K_NearestNeighbour_run2))\n", "test_accuracy = np.empty(len(K_NearestNeighbour_run2))\n", "#Loop over the different values of K\n", "for i,k in enumerate(K_NearestNeighbour_run2):\n", " #Setup K-NN classifier\n", " knn_classifier = KNeighborsClassifier(n_neighbors = k)\n", " #train the model\n", " knn_classifier.fit(X_train, y_train)\n", " #Compute accuracy of training set\n", " train_accuracy[i] = knn_classifier.score(X_train, y_train)\n", " #Compute accuracy of test set\n", " test_accuracy[i] = knn_classifier.score(X_test, y_test)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.title('K-NN varying number of neighbors')\n", "plt.plot(K_NearestNeighbour_run2 , test_accuracy, label = 'Testing Accuracy')\n", "plt.plot(K_NearestNeighbour_run2 , train_accuracy, label = 'Training Accuracy')\n", "plt.legend()\n", "plt.xlabel('No. of neighbors')\n", "plt.ylabel('Accuracy')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It seems like we have a good accuracy with 2 so I will take that as my K value" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "K_NearestNeighbour_Model = KNeighborsClassifier(n_neighbors = 2)\n", "K_NearestNeighbour_Model.fit(X_train, y_train)\n", "Y_prediction = K_NearestNeighbour_Model.predict(X_test)\n", "K_NearestNeighbour_Model.score(X_train, y_train)\n", "acc_KNN = round(K_NearestNeighbour_Model.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train Model with Algorithm: Naive Bayes" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "from sklearn import metrics\n", "from sklearn.naive_bayes import GaussianNB\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.metrics import classification_report\n", "from sklearn.metrics import roc_curve\n", "from sklearn.metrics import roc_auc_score\n", "NaiveBayes_Model = GaussianNB()\n", "NaiveBayes_Model.fit(X_train, y_train)\n", "Y_prediction = NaiveBayes_Model.predict(X_test)\n", "NaiveBayes_Model.score(X_train, y_train)\n", "acc_NB = round(NaiveBayes_Model.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train Model with Algorithm: Stochastic Gradient Descent" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import SGDClassifier\n", "SGD_Model = SGDClassifier()\n", "SGD_Model.fit(X_train, y_train)\n", "Y_prediction = SGD_Model.predict(X_test)\n", "SGD_Model.score(X_train, y_train)\n", "acc_SGD = round(SGD_Model.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train Model with Algorithm: Gradient Boosting Classifier" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Learning rate: 0.1\n", "Accuracy score (training): 0.905\n", "Accuracy score (validation): 0.811\n", "\n", "Learning rate: 0.2\n", "Accuracy score (training): 0.933\n", "Accuracy score (validation): 0.811\n", "\n", "Learning rate: 0.3\n", "Accuracy score (training): 0.950\n", "Accuracy score (validation): 0.811\n", "\n", "Learning rate: 0.4\n", "Accuracy score (training): 0.964\n", "Accuracy score (validation): 0.811\n", "\n", "Learning rate: 0.45\n", "Accuracy score (training): 0.970\n", "Accuracy score (validation): 0.756\n", "\n", "Learning rate: 0.5\n", "Accuracy score (training): 0.969\n", "Accuracy score (validation): 0.778\n", "\n", "Learning rate: 0.6\n", "Accuracy score (training): 0.975\n", "Accuracy score (validation): 0.756\n", "\n", "Learning rate: 0.75\n", "Accuracy score (training): 0.981\n", "Accuracy score (validation): 0.789\n", "\n", "Learning rate: 0.8\n", "Accuracy score (training): 0.978\n", "Accuracy score (validation): 0.811\n", "\n", "Learning rate: 1\n", "Accuracy score (training): 0.954\n", "Accuracy score (validation): 0.822\n", "\n" ] } ], "source": [ "from sklearn.ensemble import GradientBoostingClassifier\n", "from sklearn.metrics import classification_report, confusion_matrix, roc_curve, auc\n", "learning_rates = [0.1, 0.2, 0.3, 0.4, 0.45, 0.5, 0.6, 0.75, 0.8, 1]\n", "for learning_rate in learning_rates:\n", " gb = GradientBoostingClassifier(n_estimators=63, learning_rate = learning_rate, max_features=2, max_depth = 5, random_state = 0)\n", " gb.fit(X_train, y_train)\n", " print(\"Learning rate: \", learning_rate)\n", " print(\"Accuracy score (training): {0:.3f}\".format(gb.score(X_train, y_train)))\n", " print(\"Accuracy score (validation): {0:.3f}\".format(gb.score(X_test, y_test)))\n", " print()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, the learning rate at 0.5 gave the best score so I will use that to train" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "GB_Model = GradientBoostingClassifier(n_estimators=63, learning_rate = 0.5, max_features=2, max_depth = 5, random_state = 0)\n", "GB_Model.fit(X_train, y_train)\n", "Y_prediction = GB_Model.predict(X_test)\n", "GB_Model.score(X_train, y_train)\n", "acc_GBC = round(GB_Model.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train Model with Algorithm: Random Forest" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "random_forest = RandomForestClassifier(n_estimators=100)\n", "random_forest.fit(X_train, y_train)\n", "Y_prediction = random_forest.predict(X_test)\n", "random_forest.score(X_train, y_train)\n", "acc_random_forest = round(random_forest.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train model with Algorithm: Perceptron" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import Perceptron\n", "perceptron = Perceptron(max_iter=5)\n", "perceptron.fit(X_train, y_train)\n", "\n", "Y_pred = perceptron.predict(X_test)\n", "\n", "acc_perceptron = round(perceptron.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train model with Algorithm: Linear Support Vector Machine" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "from sklearn.svm import LinearSVC\n", "linear_svc = LinearSVC()\n", "linear_svc.fit(X_train, y_train)\n", "\n", "Y_pred = linear_svc.predict(X_test)\n", "\n", "acc_linear_svc = round(linear_svc.score(X_train, y_train) * 100, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Score and Evaluate Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with: Logistics Regression" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Model
Score
98.63CART
98.63Random Forest
96.88GBC
88.51SVM
84.64KNN
79.15Linear Regression
77.28Naive Bayes
76.78LSVM
75.66SGD
71.16Perceptron
\n", "
" ], "text/plain": [ " Model\n", "Score \n", "98.63 CART\n", "98.63 Random Forest\n", "96.88 GBC\n", "88.51 SVM\n", "84.64 KNN\n", "79.15 Linear Regression\n", "77.28 Naive Bayes\n", "76.78 LSVM\n", "75.66 SGD\n", "71.16 Perceptron" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results = pd.DataFrame({\n", " 'Model': ['Linear Regression', 'CART','SVM', 'KNN', 'Naive Bayes','SGD','GBC', 'Random Forest','Perceptron','LSVM'],\n", " 'Score': [acc_LR,acc_CART,acc_SVM,acc_KNN,acc_NB,acc_SGD, acc_GBC, acc_random_forest, acc_perceptron, acc_linear_svc]})\n", "result_df = results.sort_values(by='Score', ascending=False)\n", "result_df = result_df.set_index('Score')\n", "result_df.head(10)\n" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "# score model for test set\n", "y_hat_LogisticRegression_Model = LogisticRegression_Model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import confusion_matrix\n", "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_LogisticRegression_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1.4)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with Logistics Regression=86.67%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_LogisticRegression_Model)\n", "print(\"Accuracy score for the test set with Logistics Regression={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with: CART" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "# score model for test set\n", "y_hat_CART_Model = CART_Model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_CART_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with CART=80.00%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_CART_Model)\n", "print(\"Accuracy score for the test set with CART={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with: SVM" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "# score model for test set\n", "y_hat_SVM_Model = SVM_Model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_SVM_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with SVM=77.78%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_SVM_Model)\n", "print(\"Accuracy score for the test set with SVM={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with: K-Nearest Neighbour" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "y_hat_KNN_Model = K_NearestNeighbour_Model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_KNN_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with KNN=71.11%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_KNN_Model)\n", "print(\"Accuracy score for the test set with KNN={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with: Naive Bayes" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "y_hat_NB_Model = NaiveBayes_Model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_NB_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with NB=83.33%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_NB_Model)\n", "print(\"Accuracy score for the test set with NB={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with: Stochastic Gradient Descent" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "y_hat_SGD_Model = SGD_Model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_SGD_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with SGD=78.89%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_SGD_Model)\n", "print(\"Accuracy score for the test set with SGD={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with: Gradient Boosting Classifier" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "y_hat_GB_Model = GB_Model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_GB_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with GB=77.78%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_GB_Model)\n", "print(\"Accuracy score for the test set with GB={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with: Random Forest" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "y_hat_RF_Model = random_forest.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_RF_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with RF=76.67%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_RF_Model)\n", "print(\"Accuracy score for the test set with RF={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with: Perceptron" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "y_hat_Per_Model = perceptron.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_Per_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with Per=75.56%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_Per_Model)\n", "print(\"Accuracy score for the test set with Per={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Score Model and Evaluate Model with:LinearSVM" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [], "source": [ "y_hat_LSVM_Model = linear_svc.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate model for test set\n", "class_names=[\"Survived\",\"Died\"]\n", "cm = confusion_matrix(y_test, y_hat_LSVM_Model, labels=[1,0])\n", "df_cm = pd.DataFrame(cm, columns=class_names, index = class_names)\n", "df_cm.index.name = 'Actual'\n", "df_cm.columns.name = 'Predicted'\n", "plt.figure(figsize = (6,5))\n", "sns.set(font_scale=1)#for label size\n", "sns.heatmap(df_cm, cmap=\"Blues\", annot=True,annot_kws={\"size\": 16})# font size" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy score for the test set with LSVM=80.00%\n" ] } ], "source": [ "# Accuracy score for test set\n", "from sklearn.metrics import accuracy_score\n", "score = accuracy_score(y_test, y_hat_LSVM_Model)\n", "print(\"Accuracy score for the test set with LSVM={:.2f}%\".format(score*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Submitting to Kaggle" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stupid Baseline (Everyone Dies)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The stupid baseline is based on the majority of *Survived* status. In which case, we will have a rule which states that everybody died in the Titanic. " ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28940
38950
48960
\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 0\n", "3 895 0\n", "4 896 0" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = 0\n", "dfout[:5]\n" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"stupidbaseline.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Preparation for the test.csv" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PassengerId int64\n", "Pclass int64\n", "Name object\n", "Sex object\n", "Age float64\n", "SibSp int64\n", "Parch int64\n", "Ticket object\n", "Fare float64\n", "Cabin object\n", "Embarked object\n", "dtype: object" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "titanictest.dtypes" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PassengerId int64\n", "Survived int64\n", "dtype: object" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kaggle_testset.dtypes" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PclassSexAgeSibSpParchFareCabinEmbarked
03male34.5007.8292NaNQ
13female47.0107.0000NaNS
\n", "
" ], "text/plain": [ " Pclass Sex Age SibSp Parch Fare Cabin Embarked\n", "0 3 male 34.5 0 0 7.8292 NaN Q\n", "1 3 female 47.0 1 0 7.0000 NaN S" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "titanictestdf = titanictest.drop([\"PassengerId\",\"Name\",\"Ticket\"],axis=1)\n", "titanictestdf.head(2)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18931
\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 1" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kaggle_testset.head(2)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Pclass 0\n", "Sex 0\n", "Age 86\n", "SibSp 0\n", "Parch 0\n", "Fare 1\n", "Cabin 327\n", "Embarked 0\n", "dtype: int64" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List out all variables with nulls/missing values\n", "titanictestdf.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [], "source": [ "# fill in the missing age\n", "titanictestdf['Age'].fillna(titanic['Age'].mean(), inplace=True)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PclassSexAgeSibSpParchFareCabinEmbarked
03male34.5007.8292NoQ
13female47.0107.0000NoS
\n", "
" ], "text/plain": [ " Pclass Sex Age SibSp Parch Fare Cabin Embarked\n", "0 3 male 34.5 0 0 7.8292 No Q\n", "1 3 female 47.0 1 0 7.0000 No S" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# fill in the missing cabins\n", "# We will replace the Cabin value with No if missing and Yes if there is a cabin number\n", "titanictestdf['Cabin'].fillna('No', inplace=True)\n", "titanictestdf['Cabin'].replace(regex=r'^((?!No).)*$',value='Yes',inplace=True)\n", "titanictestdf.head(2)" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [], "source": [ "# fill in the missing fare with the mean fare\n", "titanictestdf['Fare'].fillna(titanic['Fare'].mean(), inplace=True)" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Pclass 0\n", "Sex 0\n", "Age 0\n", "SibSp 0\n", "Parch 0\n", "Fare 0\n", "Cabin 0\n", "Embarked 0\n", "dtype: int64" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List out all variables with nulls/missing values\n", "titanictestdf.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PclassAgeSibSpParchFareSex_femaleSex_maleCabin_NoCabin_YesEmbarked_CEmbarked_QEmbarked_S
0334.5007.82920110010
1347.0107.00001010001
\n", "
" ], "text/plain": [ " Pclass Age SibSp Parch Fare Sex_female Sex_male Cabin_No \\\n", "0 3 34.5 0 0 7.8292 0 1 1 \n", "1 3 47.0 1 0 7.0000 1 0 1 \n", "\n", " Cabin_Yes Embarked_C Embarked_Q Embarked_S \n", "0 0 0 1 0 \n", "1 0 0 0 1 " ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Encode all the categorical variables\n", "predictdf = pd.get_dummies(titanictestdf,columns=nonnumfeats)\n", "predictdf.head(2)" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 3. , 34.5 , 0. , 0. , 7.8292, 0. , 1. ,\n", " 1. , 0. , 0. , 1. , 0. ],\n", " [ 3. , 47. , 1. , 0. , 7. , 1. , 0. ,\n", " 1. , 0. , 0. , 0. , 1. ]])" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Xp = predictdf.values\n", "Xp[:2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prediction with Logistics Regression Trained Model" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [], "source": [ "yp_hat_LGR = LogisticRegression_Model.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28940
38950
48961
.........
41313050
41413061
41513070
41613080
41713090
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 0\n", "3 895 0\n", "4 896 1\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 0\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_LGR\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_LogisticRegression.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prediction with CART Trained Model" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [], "source": [ "yp_hat_CART = CART_Model.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28941
38951
48961
.........
41313050
41413061
41513070
41613080
41713091
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 1\n", "3 895 1\n", "4 896 1\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 1\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_CART\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_CART.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prediction with SVM Trained Model" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [], "source": [ "yp_hat_SVM = SVM_Model.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28940
38950
48960
.........
41313050
41413061
41513070
41613080
41713090
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 0\n", "3 895 0\n", "4 896 0\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 0\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_SVM\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_SVM.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prediction with K-Nearest Neighbour Regression Trained Model" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [], "source": [ "yp_hat_KNN = K_NearestNeighbour_Model.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28940
38950
48960
.........
41313050
41413061
41513070
41613080
41713090
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 0\n", "3 895 0\n", "4 896 0\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 0\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_KNN\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_KNN.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prediction with Naive Bayes Trained Model" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "yp_hat_NB = NaiveBayes_Model.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18931
28940
38950
48961
.........
41313050
41413061
41513070
41613080
41713090
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 1\n", "2 894 0\n", "3 895 0\n", "4 896 1\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 0\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_NB\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_NB.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prediction with Stochastic Gradient Descent Trained Model" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [], "source": [ "yp_hat_SGD = SGD_Model.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28940
38950
48961
.........
41313050
41413061
41513070
41613080
41713090
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 0\n", "3 895 0\n", "4 896 1\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 0\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_SGD\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_SGD.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Predicting with Gradient Boosting Classifier" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [], "source": [ "yp_hat_GBC = GB_Model.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28940
38950
48960
.........
41313050
41413061
41513070
41613080
41713091
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 0\n", "3 895 0\n", "4 896 0\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 1\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_GBC\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_GBC.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Predicting with Random Forest" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [], "source": [ "yp_hat_RF = random_forest.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28940
38951
48960
.........
41313050
41413061
41513070
41613080
41713091
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 0\n", "3 895 1\n", "4 896 0\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 1\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_RF\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_RF.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Predicting with Perceptron" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [], "source": [ "yp_hat_Per = perceptron.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 107, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28940
38950
48960
.........
41313050
41413061
41513070
41613080
41713090
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 0\n", "3 895 0\n", "4 896 0\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 0\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_Per\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_Perceptron.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Predicting with Linear SVM" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [], "source": [ "yp_hat_LSVM = linear_svc.predict(Xp)" ] }, { "cell_type": "code", "execution_count": 110, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvived
08920
18930
28940
38950
48960
.........
41313050
41413061
41513070
41613080
41713090
\n", "

418 rows × 2 columns

\n", "
" ], "text/plain": [ " PassengerId Survived\n", "0 892 0\n", "1 893 0\n", "2 894 0\n", "3 895 0\n", "4 896 0\n", ".. ... ...\n", "413 1305 0\n", "414 1306 1\n", "415 1307 0\n", "416 1308 0\n", "417 1309 0\n", "\n", "[418 rows x 2 columns]" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfout = pd.DataFrame() \n", "dfout[[\"PassengerId\"]] = titanictest[[\"PassengerId\"]]\n", "dfout[\"Survived\"] = yp_hat_LSVM\n", "dfout[:418]" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [], "source": [ "dfout.to_csv(\"Prediction_LSVM.csv\",index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Conclusions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This project is to predict the who would survive in the titanic, as the ouput is either survived or died, it is a classification task. A regression task would be if the output is scalable, like prices or percentage, where data is on a scale rather than like a yes or no. So unless this task is changed in such a way to predict the chances of survivalbility then, it would be a regression task. Otherwise, it is a classification task.\n", "\n", "After running different models, the better performing ones are Linear Regression and Gradient Boosting Classifier\n", "On Kaggle, my highest score was a 0.77 which means my prediction are 77% correct.\n", "\n", "For the data, I removed the names, id and ticket when training as they should not be the factors of survivability. I did not do any special modifications to the features as I did not see a point in doing so.\n", "\n", "For learning algorithms, I felt that the best way to go about it was to use as many as possible and then sifting out the better ones to use. So for example, in my tests, Gradient Boosting Classifier and Logistic Regression were among the top when it come's to accuracy of prediction and hence, these were my choices if I needed to make a prediction. However, I trained so many models is to ensure that I can see which are more accurate.\n", "\n", "As for hyperparameters, I did not go into very specific tuning, so for example, I only tuned the K value of the K-NN model, as well as changing the learning rate for the Gradient Boosting Classifier.\n", "\n", "I check my results against kaggle for accuracy as the accuracy check I've implemented in Jupyter notebook is not as accurate as the one on Kaggle. When compared to a baseline assumption that everyone died, it was about 15% more accurate. The baseline got a score of 0.62 whereas mine was 0.77.\n" ] } ], "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.4" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "202px" }, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 1 }