diff --git a/.ipynb_checkpoints/data_exploration-checkpoint.ipynb b/.ipynb_checkpoints/data_exploration-checkpoint.ipynb new file mode 100644 index 0000000..8b54d59 --- /dev/null +++ b/.ipynb_checkpoints/data_exploration-checkpoint.ipynb @@ -0,0 +1,737 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exploring the Kaggle Titanic Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this exploration, I will explore various attributes of the titanic dataset provided by kaggle. The \"codebook\" for this dataset can be found [here](https://www.kaggle.com/c/titanic/data?train.csv)." + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data from the Titanic CSV\n", + "\n", + "Int64Index: 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: 90.5+ KB\n", + "----------------------\n", + "Data from the Test CSV\n", + "\n", + "Int64Index: 418 entries, 0 to 417\n", + "Data columns (total 11 columns):\n", + "PassengerId 418 non-null int64\n", + "Pclass 418 non-null int64\n", + "Name 418 non-null object\n", + "Sex 418 non-null object\n", + "Age 332 non-null float64\n", + "SibSp 418 non-null int64\n", + "Parch 418 non-null int64\n", + "Ticket 418 non-null object\n", + "Fare 417 non-null float64\n", + "Cabin 91 non-null object\n", + "Embarked 418 non-null object\n", + "dtypes: float64(2), int64(4), object(5)\n", + "memory usage: 39.2+ KB\n" + ] + } + ], + "source": [ + "#getting setup for the exploration\n", + "\n", + "import pandas as pd\n", + "from pandas import Series,DataFrame\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "titanic_data = pd.read_csv('data/train.csv', dtype={'Age':np.float64})\n", + "test_data = pd.read_csv('data/test.csv', dtype={'Age':np.float64})\n", + "\n", + "# titanic_data.head()\n", + "# test_data.head()\n", + "\n", + "print 'Data from the Titanic CSV'\n", + "titanic_data.info()\n", + "print '----------------------'\n", + "print 'Data from the Test CSV'\n", + "test_data.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The train (titanic) data set includes information about whether an individual survived. The test data set does not (this is the data set that we should be running prediction models on later). For the purposes of this exercise, I will focus primarily on analyzing the titanic data set to best compare survivability with a variety of factors." + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#for now, let's drop the two unknown embarkees in the dataset just \n", + "#so that we only look at people that there is a clear boarding record of\n", + "titanic_data = titanic_data.dropna(subset=['Embarked'])\n", + "\n", + "#now I'm going to create a dataset primarily for folks we know the\n", + "#cabin status of\n", + "cabin_data = titanic_data.dropna(subset=['Cabin'])\n", + "\n", + "#and now just a dataset primarily for folks we know the age of\n", + "age_data = titanic_data.dropna(subset=['Age'])\n", + "\n", + "#and for cabin and age\n", + "completely_known_persons = titanic_data.dropna(subset=['Age','Cabin'])\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's explore! First I want to just look at the breakdown of numbers in each of the variables. Simple table outputs will suffice for this step. PassengerID, Name, and Ticket will not be looked over because\n", + "these are non-determinant of surviving (unless a bigger conspiracy is going down with people with the letter c in their names...)." + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PClass\n", + "Class Total\n", + "First | 214\n", + "Second | 184\n", + "Third | 491\n", + "Total | 889\n", + "-----------\n", + "Sex\n", + "Sex Total\n", + "Female | 312\n", + "Male | 577\n", + "Total | 889\n", + "-----------\n", + "Age\n", + "Years Total\n", + "Youth 0-10 | 64\n", + "Teens 11-20 | 115\n", + "Young Adults 21-30 | 230\n", + "Adults 31-60 | 282\n", + "Seniors 61-100 | 21\n", + "Total | 712\n", + "-----------\n", + "SibSp\n", + "Number Frequency\n", + "0 | 606\n", + "1 | 209\n", + "2 or more | 74\n", + "Total | 889\n", + "-----------\n", + "Parch\n", + "Number Frequency\n", + "0 | 676\n", + "1 | 118\n", + "2 | 80\n", + "3 or more | 15\n", + "Total | 889\n", + "-----------\n", + "Fare\n", + "Price Frequency\n", + "0-15 | 458\n", + "16-35 | 235\n", + "greater than 35 | 196\n", + "Total | 889\n", + "-----------\n", + "Cabin\n", + "Location Frequency\n", + "A | 15\n", + "B | 45\n", + "C | 59\n", + "D | 33\n", + "E | 32\n", + "F | 13\n", + "G | 4\n", + "T | 1\n", + "Total | 202\n", + "-----------\n", + "Embarked From\n", + "Location Frequency\n", + "Cherbourg | 168\n", + "Queenstown | 77\n", + "Southampton | 644\n", + "Total | 889\n" + ] + } + ], + "source": [ + "#I'll use the base dataset for this, titanic_data, to capture the most\n", + "#number of folks represented in the dataset\n", + "\n", + "#pclass, where 1 = first class, 2 = second class, and 3 = third class\n", + "print 'PClass'\n", + "print 'Class','Total'\n", + "print 'First |', len(titanic_data[titanic_data.Pclass == 1])\n", + "print 'Second |', len(titanic_data[titanic_data.Pclass == 2])\n", + "print 'Third |', len(titanic_data[titanic_data.Pclass == 3])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#sex, where they are noted in strings 'male' and 'female'\n", + "print 'Sex'\n", + "print 'Sex', 'Total'\n", + "print 'Female |', len(titanic_data[titanic_data.Sex == 'female'])\n", + "print 'Male |', len(titanic_data[titanic_data.Sex == 'male'])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#age, where they are noted in years, fractional ages imply \n", + "#estimation, fractional if less than one year old\n", + "print 'Age'\n", + "print 'Years', 'Total'\n", + "print 'Youth 0-10 |', len(age_data[(age_data.Age > 0) & (age_data.Age <= 10)])\n", + "print 'Teens 11-20 |', len(age_data[(age_data.Age > 10) & (age_data.Age <= 20)])\n", + "print 'Young Adults 21-30 |', len(age_data[(age_data.Age > 20) & (age_data.Age <= 30)])\n", + "print 'Adults 31-60 |', len(age_data[(age_data.Age > 30) & (age_data.Age <= 60)])\n", + "print 'Seniors 61-100 |', len(age_data[(age_data.Age > 60)])\n", + "print 'Total |', len(age_data)\n", + "print '-----------'\n", + "\n", + "#sibsp the number of sblings or spouses aboard\n", + "print 'SibSp'\n", + "print 'Number', 'Frequency'\n", + "print '0 |', len(titanic_data[(titanic_data.SibSp == 0)])\n", + "print '1 |', len(titanic_data[(titanic_data.SibSp == 1)])\n", + "print '2 or more |', len(titanic_data[(titanic_data.SibSp > 1)])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#parch the number of parents or children aboard\n", + "print 'Parch'\n", + "print 'Number', 'Frequency'\n", + "print '0 |', len(titanic_data[(titanic_data.Parch == 0)])\n", + "print '1 |', len(titanic_data[(titanic_data.Parch == 1)])\n", + "print '2 |', len(titanic_data[(titanic_data.Parch == 2)])\n", + "print '3 or more |', len(titanic_data[(titanic_data.Parch > 2)])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#fare\n", + "print 'Fare'\n", + "print 'Price', 'Frequency'\n", + "print '0-15 |', len(titanic_data[(titanic_data.Fare >= 0) & (titanic_data.Fare <= 15)])\n", + "print '16-35 |', len(titanic_data[(titanic_data.Fare > 15) & (titanic_data.Fare <= 35)])\n", + "print 'greater than 35 |', len(titanic_data[(titanic_data.Fare > 35)])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#cabin, these will be sorted by letter section\n", + "print 'Cabin'\n", + "print 'Location', 'Frequency'\n", + "cabin = []\n", + "for element in cabin_data.Cabin:\n", + " cabin.append(element[0])\n", + "print 'A |', cabin.count('A')\n", + "print 'B |', cabin.count('B')\n", + "print 'C |', cabin.count('C')\n", + "print 'D |', cabin.count('D')\n", + "print 'E |', cabin.count('E')\n", + "print 'F |', cabin.count('F')\n", + "print 'G |', cabin.count('G')\n", + "print 'T |', cabin.count('T')\n", + "print 'Total |', len(cabin)\n", + "print '-----------'\n", + "\n", + "#embarkation from one of three places Cherbourg, Queenstown, and Southampton\n", + "print 'Embarked From'\n", + "print 'Location', 'Frequency'\n", + "print 'Cherbourg |', len(titanic_data[(titanic_data.Embarked == 'C')])\n", + "print 'Queenstown |', len(titanic_data[(titanic_data.Embarked == 'Q')])\n", + "print 'Southampton |', len(titanic_data[(titanic_data.Embarked == 'S')])\n", + "print 'Total |', len(titanic_data)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This gave me a good sense of the typical passenger: most were traveling alone, were in a lower class, male, embarked from Southampton, and were aged between 20 and 40 years. Now, let's compare these factors with those who survived. " + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Female: 231 Male: 109\n", + "First class: 134 Second class: 87 Third class: 119\n", + "Youth: 38 Teens: 44 Young Adult: 84 Adult: 118 Senior: 4\n", + "No SibSp: 208 1 SibSp 112 2 SibSp 13 More than 2 SibSp 7\n", + "No Parch: 231 1 Parch 65 2 Parch 40 More than 2 Parch 4\n", + "CabinA: 7 CabinB: 33 CabinC: 35 CabinD: 25 CabinE: 24 CabinF: 8 CabinG: 2 CabinT: 0\n", + "Cherbourg: 93 Queenstown: 30 Southampton: 217\n", + "0-15 fare: 114 16-35 fare: 105 Greater than 35 fare: 121\n" + ] + } + ], + "source": [ + "#I create variables for those that survived and those that did not\n", + "survivors = titanic_data[(titanic_data.Survived == 1)]\n", + "others = titanic_data[(titanic_data.Survived == 0)]\n", + "\n", + "surv_cabin = []\n", + "survive_cabin = survivors.dropna(subset=['Cabin'])\n", + "for element in survive_cabin.Cabin:\n", + " surv_cabin.append(element[0])\n", + "\n", + "#now, let's see who survived based on single features\n", + "print 'Female:', len(survivors[survivors.Sex == 'female']), 'Male:', len(survivors[survivors.Sex == 'male'])\n", + "print 'First class:', len(survivors[survivors.Pclass == 1]), 'Second class:', len(survivors[survivors.Pclass == 2]), 'Third class:', len(survivors[survivors.Pclass == 3])\n", + "print 'Youth:', len(survivors[(survivors.Age <= 10)]), 'Teens:', len(survivors[(survivors.Age > 10) & (survivors.Age <= 20)]), 'Young Adult:', len(survivors[(survivors.Age > 20) & (survivors.Age <= 30)]), 'Adult:', len(survivors[(survivors.Age > 30) & (survivors.Age <= 60)]), 'Senior:', len(survivors[(survivors.Age > 60)])\n", + "print 'No SibSp:', len(survivors[(survivors.SibSp == 0)]), '1 SibSp', len(survivors[survivors.SibSp == 1]), '2 SibSp', len(survivors[survivors.SibSp == 2]), 'More than 2 SibSp', len(survivors[survivors.SibSp >= 3])\n", + "print 'No Parch:', len(survivors[(survivors.Parch == 0)]), '1 Parch', len(survivors[survivors.Parch == 1]), '2 Parch', len(survivors[survivors.Parch == 2]), 'More than 2 Parch', len(survivors[survivors.Parch >= 3])\n", + "print 'CabinA:', surv_cabin.count('A'), 'CabinB:', surv_cabin.count('B'), 'CabinC:', surv_cabin.count('C'), 'CabinD:', surv_cabin.count('D'), 'CabinE:', surv_cabin.count('E'), 'CabinF:', surv_cabin.count('F'), 'CabinG:', surv_cabin.count('G'), 'CabinT:', surv_cabin.count('T')\n", + "print 'Cherbourg:', len(survivors[(survivors.Embarked == 'C')]), 'Queenstown:', len(survivors[survivors.Embarked == 'Q']), 'Southampton:', len(survivors[survivors.Embarked == 'S'])\n", + "print '0-15 fare:', len(survivors[(survivors.Fare >= 0) & (survivors.Fare <= 15)]), '16-35 fare:', len(survivors[(survivors.Fare > 15) & (survivors.Fare <= 35)]), 'Greater than 35 fare:', len(survivors[(survivors.Fare > 35)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This form is ok, but it doesn't tell us a lot about the proportions of people. To get a better sense of these who survived based on a single factor, I display them graphically." + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nYP8foYGkHOv8wOsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\ndgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "\n", + "#for sex,embark place,class\n", + "fig, (axis1, axis2,axis3) = plt.subplots(1,3,figsize =(15,5))\n", + "\n", + "sex_perc = titanic_data[['Survived', 'Sex']].groupby(['Sex'],as_index=False).mean()\n", + "sns.barplot(x='Sex',y='Survived', data = sex_perc, order=['female','male'],ax=axis1)\n", + "\n", + "embark_perc = titanic_data[['Embarked', 'Survived']].groupby(['Embarked'],as_index=False).mean()\n", + "sns.barplot(x='Embarked',y='Survived', data = embark_perc,ax=axis2)\n", + "\n", + "class_perc = titanic_data[['Pclass', 'Survived']].groupby(['Pclass'],as_index=False).mean()\n", + "sns.barplot(x='Pclass',y='Survived', data = class_perc,ax=axis3)\n", + "\n", + "#for cabins\n", + "a_survived = surv_cabin.count('A') / float(cabin.count('A')) \n", + "b_survived = surv_cabin.count('B') / float(cabin.count('B')) \n", + "c_survived = surv_cabin.count('C') / float(cabin.count('C'))\n", + "d_survived = surv_cabin.count('D') / float(cabin.count('D')) \n", + "e_survived = surv_cabin.count('E') / float(cabin.count('E')) \n", + "f_survived = surv_cabin.count('F') / float(cabin.count('F')) \n", + "g_survived = surv_cabin.count('G') / float(cabin.count('G')) \n", + "t_survived = surv_cabin.count('T') / float(cabin.count('T')) \n", + "\n", + "loc_perc = (a_survived, b_survived, c_survived, d_survived, e_survived, f_survived, g_survived, t_survived)\n", + "N=8\n", + "ind=np.arange(N)\n", + "width=0.35\n", + "fig,ax = plt.subplots()\n", + "ax.set_xticks(ind)\n", + "ax.set_xticklabels(('A','B','C','D','E','F','G','T'))\n", + "rects = ax.bar(ind, loc_perc, width,align='center')\n", + "plt.xlabel('Cabin Location')\n", + "plt.ylabel('Percentage Survived')\n", + "plt.title('Cabin and Survival')\n", + "plt.ylim([0, 1])\n", + "plt.show()\n", + "\n", + "#and now for age\n", + "plt.hist(survivors.Age,bins=np.arange(0,100,5),alpha=0.5)\n", + "plt.hist(titanic_data.Age, bins=np.arange(0,100,5),alpha=0.5)\n", + "plt.xlabel('Age (years)')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Age and Survival')\n", + "plt.legend('Survivors','All')\n", + "plt.show()\n", + "\n", + "#for those that didn't travel alone\n", + "plt.hist(survivors.SibSp,bins=np.arange(0,10,1),alpha=0.5)\n", + "plt.hist(titanic_data.SibSp, bins=np.arange(0,10,1),alpha=0.5)\n", + "plt.xlabel('Number Spouses/Siblings Traveled With')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Spouse/Sibling Travel and Survival')\n", + "plt.legend(['Survivors','All'])\n", + "plt.show()\n", + "\n", + "plt.hist(survivors.Parch,bins=np.arange(0,10,1),alpha=0.5)\n", + "plt.hist(titanic_data.Parch, bins=np.arange(0,10,1),alpha=0.5)\n", + "plt.xlabel('Number Parents/Children Traveled With')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Parent/Child Travel and Survival')\n", + "plt.legend(['Survivors','All'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's try using grouby to simply look at the survival rates between a combination of different groups." + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:27: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:28: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n" + ] + } + ], + "source": [ + "#first, I might as well create a recode that associates someone as young, old and inbetween since this seems to be useful\n", + "def parse_age(num):\n", + " \"\"\" convert a given age into a string indicator of relative age \"\"\"\n", + " if num <= 10:\n", + " return 'Youth'\n", + " elif num > 10 and num <= 20:\n", + " return 'Teen'\n", + " elif num > 20 and num <= 30:\n", + " return 'Young Adult'\n", + " elif num > 30 and num <= 60:\n", + " return 'Adult'\n", + " else:\n", + " return 'Senior'\n", + "\n", + "#let's apply that and add a column\n", + "rel_age_ind = []\n", + "for age in titanic_data.Age:\n", + " rel_age = parse_age(age)\n", + " rel_age_ind.append(rel_age)\n", + "titanic_data['Relage'] = rel_age_ind\n", + "\n", + "#something I've also been doing a workaround on is relative cabin location on the boat, so recode time!\n", + "rel_age_ind_cabin = []\n", + "for age in cabin_data.Age:\n", + " rel_age = parse_age(age)\n", + " rel_age_ind_cabin.append(rel_age)\n", + "cabin_data['Relage'] = rel_age_ind_cabin\n", + "cabin_data['Relloc'] = cabin" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Survived\n", + "Sex Pclass \n", + "female 1 0.967391\n", + " 2 0.921053\n", + " 3 0.500000\n", + "male 1 0.368852\n", + " 2 0.157407\n", + " 3 0.135447\n", + "--------------\n", + " Survived\n", + "Sex Relage \n", + "female Adult 0.797980\n", + " Senior 0.690909\n", + " Teen 0.739130\n", + " Young Adult 0.753086\n", + " Youth 0.612903\n", + "male Adult 0.213115\n", + " Senior 0.125874\n", + " Teen 0.144928\n", + " Young Adult 0.154362\n", + " Youth 0.575758\n", + "--------------\n", + " Survived\n", + "Pclass Relage \n", + "1 Adult 0.654545\n", + " Senior 0.372093\n", + " Teen 0.833333\n", + " Young Adult 0.725000\n", + " Youth 0.666667\n", + "2 Adult 0.418919\n", + " Senior 0.357143\n", + " Teen 0.500000\n", + " Young Adult 0.409836\n", + " Youth 1.000000\n", + "3 Adult 0.153061\n", + " Senior 0.248227\n", + " Teen 0.253165\n", + " Young Adult 0.232558\n", + " Youth 0.431818\n", + "--------------\n", + " Survived\n", + "Sex Relloc \n", + "female A 1.000000\n", + " B 1.000000\n", + " C 0.888889\n", + " D 1.000000\n", + " E 0.933333\n", + " F 1.000000\n", + " G 0.500000\n", + "male A 0.428571\n", + " B 0.400000\n", + " C 0.343750\n", + " D 0.466667\n", + " E 0.588235\n", + " F 0.375000\n", + " T 0.000000\n", + "--------------\n", + " Survived\n", + "Sex SibSp \n", + "female 0 0.784884\n", + " 1 0.754717\n", + " 2 0.769231\n", + " 3 0.363636\n", + " 4 0.333333\n", + " 5 0.000000\n", + " 8 0.000000\n", + "male 0 0.168203\n", + " 1 0.310680\n", + " 2 0.200000\n", + " 3 0.000000\n", + " 4 0.083333\n", + " 5 0.000000\n", + " 8 0.000000\n", + "--------------\n", + " Survived\n", + "Sex Parch \n", + "female 0 0.786458\n", + " 1 0.766667\n", + " 2 0.612245\n", + " 3 0.750000\n", + " 4 0.000000\n", + " 5 0.250000\n", + " 6 0.000000\n", + "male 0 0.165289\n", + " 1 0.327586\n", + " 2 0.322581\n", + " 3 0.000000\n", + " 4 0.000000\n", + " 5 0.000000\n", + "--------------\n" + ] + } + ], + "source": [ + "#let's start with looking at wealth and sex\n", + "print titanic_data[['Survived', 'Sex','Pclass']].groupby(['Sex','Pclass'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#that last one was pretty telling, now, what about age and sex?\n", + "print titanic_data[['Survived', 'Sex','Relage']].groupby(['Sex','Relage'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#interesting...what about age and wealth?\n", + "print titanic_data[['Survived', 'Pclass','Relage']].groupby(['Pclass','Relage'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#perhaps sex and location might have impacted whether they survived?\n", + "print cabin_data[['Survived', 'Sex','Relloc']].groupby(['Sex','Relloc'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#did women traveling with a sibling or spouse survive?\n", + "print titanic_data[['Survived', 'Sex','SibSp']].groupby(['Sex','SibSp'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#did men traveling with a parent or child survive?\n", + "print titanic_data[['Survived', 'Sex','Parch']].groupby(['Sex','Parch'],as_index=True).mean()\n", + "\n", + "print '--------------'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These are some pretty interesting comparisons here. Its clear that women and children had the best chances of surviving, especially if they were wealthy. Males traveling with someone seemed to have faired better than those traveling alone or with a large group. All of these check out with the anecdotes one here's about how things went down on that fateful night. \n", + "\n", + "Just to start getting a sense of some correlations I'll make a few scatter plots (as prompted by the warm-up assignment)." + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nRK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#here is one which looks at age and average survival\n", + "# age_surv = titanic_data[['Survived', 'Age']].groupby(['Age'],as_index=True).mean()\n", + "\n", + "ax = sns.regplot(x='Survived',y='Age',data=survivors, x_jitter=0.1)\n", + "#I feel like scatterplots are not the best way to view any of the data provided, but as prompted by the warmup \n", + "#assignment, here we go. It's a little silly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/.ipynb_checkpoints/model_iteration_1-checkpoint.ipynb b/.ipynb_checkpoints/model_iteration_1-checkpoint.ipynb new file mode 100644 index 0000000..de4f8f2 --- /dev/null +++ b/.ipynb_checkpoints/model_iteration_1-checkpoint.ipynb @@ -0,0 +1,640 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook, I begin with a model that is dervied from experience using [DataQuest](https://www.dataquest.io/mission/74/getting-started-with-kaggle), and then annotate a variety of revisions tried since. Accuracies are also reported." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data from the Titanic CSV\n", + "\n", + "Int64Index: 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: 90.5+ KB\n", + "----------------------\n", + "Data from the Test CSV\n", + "\n", + "Int64Index: 418 entries, 0 to 417\n", + "Data columns (total 11 columns):\n", + "PassengerId 418 non-null int64\n", + "Pclass 418 non-null int64\n", + "Name 418 non-null object\n", + "Sex 418 non-null object\n", + "Age 332 non-null float64\n", + "SibSp 418 non-null int64\n", + "Parch 418 non-null int64\n", + "Ticket 418 non-null object\n", + "Fare 417 non-null float64\n", + "Cabin 91 non-null object\n", + "Embarked 418 non-null object\n", + "dtypes: float64(2), int64(4), object(5)\n", + "memory usage: 39.2+ KB\n" + ] + } + ], + "source": [ + "#importing and setting up my dataframes\n", + "import pandas as pd\n", + "from pandas import Series,DataFrame\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "titanic_data = pd.read_csv('data/train.csv', dtype={'Age':np.float64})\n", + "test_data = pd.read_csv('data/test.csv', dtype={'Age':np.float64})\n", + "\n", + "# titanic_data.head()\n", + "# test_data.head()\n", + "\n", + "print 'Data from the Titanic CSV'\n", + "titanic_data.info()\n", + "print '----------------------'\n", + "print 'Data from the Test CSV'\n", + "test_data.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we want to start with our titanic_data set and clean it up, filling in the missing values with either the mean or median values. In the event of categories, we'll fill in the mode of the data. For this example, I'll fill it in with the median values (in the event that some of these distributions are skewed or huge outliers are present)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 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 891 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 891 non-null object\n", + "dtypes: float64(2), int64(5), object(5)\n", + "memory usage: 90.5+ KB\n", + "None\n" + ] + } + ], + "source": [ + "for name in titanic_data.describe():\n", + " titanic_data[name] = titanic_data[name].fillna(titanic_data[name].median()) #this works for numeric columns\n", + "\n", + "#now for categories that we care about like embarked\n", + "\n", + "titanic_data['Embarked'] = titanic_data['Embarked'].fillna('S') #this is the most frequent value\n", + " \n", + "print titanic_data.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Further, we'll make all our categories into numeric entities (sex, embarked)..." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "titanic_data.loc[titanic_data['Sex'] == 'male', 'Sex'] = 0\n", + "titanic_data.loc[titanic_data['Sex'] == 'female', 'Sex'] = 1\n", + "\n", + "titanic_data.loc[titanic_data['Embarked'] == 'S', 'Embarked'] = 0\n", + "titanic_data.loc[titanic_data['Embarked'] == 'C', 'Embarked'] = 1\n", + "titanic_data.loc[titanic_data['Embarked'] == 'Q', 'Embarked'] = 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's predict some things! We'll try out a linear regression first." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.783389450056\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:25: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.cross_validation import KFold\n", + "\n", + "predictors = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked'] #the only things we care about for this one\n", + "\n", + "#initialize algorithm type\n", + "algorith = LinearRegression()\n", + "\n", + "#let's generate some cross validation folds \n", + "kf = KFold(titanic_data.shape[0], n_folds=3, random_state=1)\n", + "\n", + "#generate a list of predictions\n", + "pred = []\n", + "for train, test in kf:\n", + " train_predictors = (titanic_data[predictors].iloc[train,:])\n", + " train_target = titanic_data['Survived'].iloc[train]\n", + " algorith.fit(train_predictors, train_target)\n", + " test_predictions = algorith.predict(titanic_data[predictors].iloc[test,:])\n", + " pred.append(test_predictions)\n", + " \n", + "#assess our training\n", + "pred = np.concatenate(pred, axis=0)\n", + "pred[pred > 0.5] = 1\n", + "pred[pred <= 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic_data['Survived']] / len(pred))\n", + "print accuracy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In an attempt to be better than this, I will give a logistic regression a shot." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.787878787879\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn import cross_validation\n", + "\n", + "log_alg = LogisticRegression(random_state=1)\n", + "scores = cross_validation.cross_val_score(log_alg, titanic_data[predictors], titanic_data['Survived'], cv=3)\n", + "print scores.mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At this point, I will now perform some analysis on the test data provided by kaggle directly, then make my first submission." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1\n", + " 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 1\n", + " 1 1 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0\n", + " 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0\n", + " 0 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1\n", + " 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0\n", + " 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1\n", + " 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0\n", + " 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0\n", + " 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0\n", + " 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0\n", + " 0 1 1 1 1 1 0 1 0 0 0]\n" + ] + } + ], + "source": [ + "#I've already imported this data earlier, so that's nice.\n", + "test_data['Age'] = test_data['Age'].fillna(titanic_data['Age'].median())\n", + "test_data['Fare'] = test_data['Fare'].fillna(test_data['Fare'].median())\n", + "\n", + "test_data.loc[test_data['Sex'] == 'male', 'Sex'] = 0\n", + "test_data.loc[test_data['Sex'] == 'female', 'Sex'] = 1\n", + "\n", + "test_data['Embarked'] = test_data['Embarked'].fillna('S')\n", + "test_data.loc[test_data['Embarked'] == 'S', 'Embarked'] = 0\n", + "test_data.loc[test_data['Embarked'] == 'C', 'Embarked'] = 1\n", + "test_data.loc[test_data['Embarked'] == 'Q', 'Embarked'] = 2\n", + "\n", + "#apply an algorithm\n", + "algo = LogisticRegression(random_state=1)\n", + "algo.fit(titanic_data[predictors], titanic_data['Survived'])\n", + "predicts = algo.predict(test_data[predictors])\n", + "\n", + "print predicts\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':predicts})\n", + "submission.to_csv('kaggle.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After submitting, I was told the accuracy of the above model was: 0.75120 (along with my other classmates - what fun!)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, I would like to start making revisions to this model. From my exploration earlier, I have some assumptions about the relationships between a variety of variables. I want to use these assumed relationships to add robust predicting to my model. I start with a fresh set of training folds:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.421738\n", + " Iterations 7\n", + "0.824915824916\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:36: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.cross_validation import KFold\n", + "import statsmodels.formula.api as smf\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "titanic = pd.read_csv('data/train.csv', dtype={'Age':np.float64})\n", + "test = pd.read_csv('data/test.csv', dtype={'Age':np.float64})\n", + "\n", + "for name in titanic.describe():\n", + " titanic[name] = titanic[name].fillna(titanic[name].median()) #this works for numeric columns\n", + "#now for categories that we care about like embarked\n", + "titanic['Embarked'] = titanic['Embarked'].fillna('S') #this is the most frequent value\n", + "titanic.loc[titanic['Sex'] == 'male', 'Sex'] = 0\n", + "titanic.loc[titanic['Sex'] == 'female', 'Sex'] = 1\n", + "titanic.loc[titanic['Embarked'] == 'S', 'Embarked'] = 0\n", + "titanic.loc[titanic['Embarked'] == 'C', 'Embarked'] = 1\n", + "titanic.loc[titanic['Embarked'] == 'Q', 'Embarked'] = 2 \n", + "\n", + "#now, I'm going to create a few factors which weigh some of these elements more than others (like being a young rich woman)\n", + "\n", + "predictors = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked'] #the only things we care about for this one\n", + "\n", + "#initialize algorithm type\n", + "# formula = 'Survived ~ C(Sex) + Age + C(Pclass) + Fare' #80%\n", + "# formula = 'Survived ~ C(Sex) + SibSp + C(Pclass)' #80%\n", + "# formula = 'Survived ~ Embarked * Fare + Sex * Pclass + Age * Sex + Pclass * Sex + Sex * SibSp' #82% \n", + "formula = 'Survived ~ Sex * Pclass + Sex * Age + SibSp * Sex + Parch * Age + Pclass * Age' #83%\n", + "model = smf.logit(formula, data=titanic)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred >= 0.5] = 1\n", + "pred[pred < 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "#well...let's try it on the test data and submit to kaggle!\n", + "test['Age'] = test['Age'].fillna(titanic['Age'].median())\n", + "test['Fare'] = test['Fare'].fillna(titanic['Fare'].median())\n", + "\n", + "test.loc[test['Sex'] == 'male', 'Sex'] = 0\n", + "test.loc[test['Sex'] == 'female', 'Sex'] = 1\n", + "\n", + "test['Embarked'] = test['Embarked'].fillna('S')\n", + "test.loc[test['Embarked'] == 'S', 'Embarked'] = 0\n", + "test.loc[test['Embarked'] == 'C', 'Embarked'] = 1\n", + "test.loc[test['Embarked'] == 'Q', 'Embarked'] = 2\n", + "\n", + "new = test\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_rev1.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This first revision scored me a 0.78469 on the scoreboard (it informs me this is an improvement of 0.03349 and launched me 1,357 positions on the leaderboard sitting my comfy at 2,003). For this next revision, I'll push a little harder on the sibling/spouse and parch relationship which I thought was powerful in my exploration but didn't maximize here." + ] + }, + { + "cell_type": "code", + "execution_count": 301, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.395759\n", + " Iterations 8\n", + "0.83950617284\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:13: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "formula = 'Survived ~ (Pclass + SibSp + Parch + Embarked + Fare) * (Sex + Age + Pclass + SibSp + Fare)' #84% with score only of 0.77512\n", + "\n", + "model = smf.logit(formula, data=titanic)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred > 0.5] = 1\n", + "pred[pred <= 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "#let's give it a shot\n", + "new = test\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts >= 0.5] = int(1)\n", + "predicts[predicts < 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_rev2.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This revision did not perform better than the original (0.77512, which is close), however I believe this implies there is something interesting going on in the data. The test data is a little bit different than the training data, so the more specific the training formula, the less useful it is for the test data. I look forward to learning more on how to build intuition about data manipulation. I wonder if creating a recode metric might be interesting." + ] + }, + { + "cell_type": "code", + "execution_count": 302, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.432147\n", + " Iterations 7\n", + "0.813692480359\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:13: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "test['Age_Recode'] = np.log10(test.Age)\n", + "titanic['Age_Recode'] = np.log10(titanic.Age)\n", + "\n", + "formula = 'Survived ~ Sex * Pclass + Sex * Age + Parch * Sex' #82%\n", + "\n", + "model = smf.logit(formula, data=titanic)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred > 0.5] = 1\n", + "pred[pred <= 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "#let's give it a shot\n", + "new = test\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_rev3.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The recode didn't work, and neither did trying to up the current function value (this script scored a 0.76077) so clearly this is a balance between function value and accuracy measure. " + ] + }, + { + "cell_type": "code", + "execution_count": 303, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.407647\n", + " Iterations 7\n", + "0.828282828283\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:13: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "test['Age_Recode'] = np.log10(test.Age)\n", + "titanic['Age_Recode'] = np.log10(titanic.Age)\n", + "\n", + "formula = 'Survived ~ Sex * Pclass + Sex * Age_Recode + Parch * Sex + Age_Recode * Embarked + Age_Recode * SibSp' #82%\n", + "\n", + "model = smf.logit(formula, data=titanic)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred > 0.5] = 1\n", + "pred[pred <= 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "#let's give it a shot\n", + "new = test\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_rev4.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This was my last first revision model with score of 0.77512, not bad, but not an improvement. I'm excited to learn about more data mapping techniques to improve my current model!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/.ipynb_checkpoints/model_iteration_2-checkpoint.ipynb b/.ipynb_checkpoints/model_iteration_2-checkpoint.ipynb new file mode 100644 index 0000000..51c46dd --- /dev/null +++ b/.ipynb_checkpoints/model_iteration_2-checkpoint.ipynb @@ -0,0 +1,724 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model Iteration 2\n", + "In this notebook I explore several model types as inspired by resources which will be cited throughout." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In my first iteration, I was able to achieve a score of just over 78%. In this first run of trying different model types, I complete the DataQuest tutorial on random forests. " + ] + }, + { + "cell_type": "code", + "execution_count": 342, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#First, let's upload everything, get the data sets to \n", + "#some level of functionality\n", + "\n", + "import pandas as pd\n", + "from pandas import Series,DataFrame\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn import cross_validation\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.feature_selection import SelectKBest, f_classif\n", + "from sklearn.ensemble import GradientBoostingClassifier\n", + "from sklearn.linear_model import LogisticRegression\n", + "import re\n", + "import operator\n", + "%matplotlib inline\n", + "\n", + "titanic_master = pd.read_csv('data/train.csv', dtype={'Age':np.float64})\n", + "test_data = pd.read_csv('data/test.csv', dtype={'Age':np.float64})\n", + "\n", + "#now for filling in the missing data in the two datasets\n", + "titanic_master['Age'] = titanic_master['Age'].fillna(titanic_master['Age'].median())\n", + "titanic_master['Fare'] = titanic_master['Fare'].fillna(titanic_master['Fare'].median())\n", + "titanic_master.loc[titanic_master['Sex'] == 'male', 'Sex'] = 0\n", + "titanic_master.loc[titanic_master['Sex'] == 'female', 'Sex'] = 1\n", + "titanic_master['Embarked'] = titanic_master['Embarked'].fillna('S')\n", + "titanic_master.loc[titanic_master['Embarked'] == 'S', 'Embarked'] = 0\n", + "titanic_master.loc[titanic_master['Embarked'] == 'C', 'Embarked'] = 1\n", + "titanic_master.loc[titanic_master['Embarked'] == 'Q', 'Embarked'] = 2\n", + "\n", + "test_data['Age'] = test_data['Age'].fillna(titanic_master['Age'].median())\n", + "test_data['Fare'] = test_data['Fare'].fillna(titanic_master['Fare'].median())\n", + "test_data.loc[test_data['Sex'] == 'male', 'Sex'] = 0\n", + "test_data.loc[test_data['Sex'] == 'female', 'Sex'] = 1\n", + "test_data['Embarked'] = test_data['Embarked'].fillna('S')\n", + "test_data.loc[test_data['Embarked'] == 'S', 'Embarked'] = 0\n", + "test_data.loc[test_data['Embarked'] == 'C', 'Embarked'] = 1\n", + "test_data.loc[test_data['Embarked'] == 'Q', 'Embarked'] = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 343, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.820426487093\n" + ] + } + ], + "source": [ + "#now, to get into the suggestions from Dataquest...\n", + "predictors = ['Pclass','Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']\n", + "alg = RandomForestClassifier(random_state=1, n_estimators=150, min_samples_split=4, min_samples_leaf=2)\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "scores = cross_validation.cross_val_score(alg,titanic_master[predictors],titanic_master['Survived'],cv=3)\n", + "print scores.mean() " + ] + }, + { + "cell_type": "code", + "execution_count": 344, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#I'm going to pause here and actually just apply this to the test data and submit this.\n", + "alg.fit(titanic_master[predictors], titanic_master['Survived'])\n", + "predictions = alg.predict_proba(test_data[predictors].astype(float))[:,1]\n", + "\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "submission.to_csv('kaggle_v2_randforest.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This random forest implementation achieves a score of 0.76077, which is not as compelling as I was able to achieve in my first model iteration. Thinking further ahead (and as suggested by the Dataquest tutorial as well as [this blog](http://elenacuoco.altervista.org/blog/archives/1195) I create different data types to explore." + ] + }, + { + "cell_type": "code", + "execution_count": 345, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#family size\n", + "titanic_master['Famsize'] = titanic_master['SibSp'] + titanic_master['Parch']\n", + "test_data['Famsize'] = test_data['SibSp'] + test_data['Parch']\n", + "\n", + "#family size, including the individual\n", + "titanic_master['Count_Individ'] = titanic_master['Famsize'] + 1\n", + "test_data['Count_Individ'] = test_data['Famsize'] + 1\n", + "\n", + "#name length \n", + "titanic_master['Namelen'] = titanic_master['Name'].apply(lambda x: len(x))\n", + "test_data['Namelen'] = test_data['Name'].apply(lambda x: len(x))\n", + "\n", + "#age groups\n", + "titanic_master['Agecat']= titanic_master['Age']\n", + "titanic_master.loc[(titanic_master.Age <= 10), 'Agecat'] = 1 #child\n", + "titanic_master.loc[(titanic_master.Age > 60), 'Agecat'] = 4 #senior\n", + "titanic_master.loc[(titanic_master.Age > 10) & (titanic_master.Age <= 30), 'Agecat'] = 2 #young adult\n", + "titanic_master.loc[(titanic_master.Age > 30) & (titanic_master.Age <= 60), 'Agecat'] = 3 #adult\n", + "test_data['Agecat']= test_data['Age']\n", + "test_data.loc[(test_data.Age <= 10), 'Agecat'] = 1\n", + "test_data.loc[(test_data.Age > 60), 'Agecat'] = 4\n", + "test_data.loc[(test_data.Age > 10) & (test_data.Age <= 30), 'Agecat'] = 2\n", + "test_data.loc[(test_data.Age > 30) & (test_data.Age <= 60), 'Agecat'] = 3\n", + "\n", + "#cabin indicator (as seen in blog post)\n", + "titanic_master.loc[titanic_master.Cabin.isnull()==True,'Cabin'] = 0.5\n", + "titanic_master.loc[titanic_master.Cabin.isnull()==False,'Cabin'] = 1.\n", + "test_data.loc[test_data.Cabin.isnull()==True,'Cabin'] = 0.5\n", + "test_data.loc[test_data.Cabin.isnull()==False,'Cabin'] = 1.\n", + "\n", + "#wealth and sex\n", + "titanic_master['ClassSex'] = titanic_master['Sex'] * titanic_master['Pclass']\n", + "test_data['ClassSex'] = test_data['Sex'] * titanic_master['Pclass']\n", + "\n", + "#age and sex\n", + "titanic_master['AgeSex'] = titanic_master['Age'] * titanic_master['Sex']\n", + "test_data['AgeSex'] = test_data['Age'] * test_data['Sex']" + ] + }, + { + "cell_type": "code", + "execution_count": 346, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#title\n", + "def get_title(name):\n", + " title_search = re.search('([A-Za-z]+)\\.', name)\n", + " if title_search:\n", + " return title_search.group(1)\n", + " return \"\"\n", + "\n", + "def replace_titles(x):\n", + " title = x['Title']\n", + " if title in ['Mr', 'don', 'Major', 'Capt', 'Jonkheer', 'Rev', 'Col']:\n", + " return 'Mr'\n", + " elif title in ['Master']:\n", + " return 'Master'\n", + " elif title in ['Mlle', 'Ms', 'Miss', 'Lady']:\n", + " return 'Miss'\n", + " elif title in ['Countess', 'Mme', 'Mrs', 'Dona']:\n", + " return 'Mrs'\n", + " elif title == 'Dr':\n", + " if x['Sex'] == 0:\n", + " return 'Mr'\n", + " else:\n", + " return 'Mrs'\n", + " elif title == '':\n", + " if x['Sex'] == 0:\n", + " return 'Master'\n", + " else:\n", + " return 'Miss'\n", + " else:\n", + " return title\n", + "\n", + "\n", + "titles = titanic_master['Name'].apply(get_title)\n", + "title_mapping = {'Mr': 1, 'Miss': 2, 'Mrs': 3, 'Master': 4, 'Dr': 5, 'Rev': 6, 'Major': 7, 'Col': 7, 'Mlle': 8, 'Mme': 8, 'Don': 9, 'Lady': 10, 'Countess': 10, 'Jonkheer': 10, 'Sir': 9, 'Capt': 7, 'Ms': 2, 'Dona':10}\n", + "for k,v in title_mapping.items():\n", + " titles[titles == k] = v\n", + "titanic_master['Title'] = titles \n", + "titanic_master['Title'] = titanic_master.apply(replace_titles, axis=1)\n", + "\n", + "test_titles = test_data['Name'].apply(get_title)\n", + "title_mapping = {'Mr': 1, 'Miss': 2, 'Mrs': 3, 'Master': 4, 'Dr': 5, 'Rev': 6, 'Major': 7, 'Col': 7, 'Mlle': 8, 'Mme': 8, 'Don': 9, 'Lady': 10, 'Countess': 10, 'Jonkheer': 10, 'Sir': 9, 'Capt': 7, 'Ms': 2, 'Dona':10}\n", + "for k,v in title_mapping.items():\n", + " test_titles[test_titles == k] = v\n", + "test_data['Title'] = test_titles\n", + "test_data['Title'] = test_data.apply(replace_titles, axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 347, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "#family id\n", + "family_id_mapping = {}\n", + "def get_family_id(row):\n", + " last_name = row['Name'].split(',')[0]\n", + " family_id = '{0}{1}'.format(last_name, row['Famsize'])\n", + " if family_id not in family_id_mapping:\n", + " if len(family_id_mapping) == 0:\n", + " current_id = 1\n", + " else:\n", + " current_id = (max(family_id_mapping.items(), key=operator.itemgetter(1))[1] + 1)\n", + " family_id_mapping[family_id]=current_id\n", + " return family_id_mapping[family_id]\n", + "\n", + "family_ids = titanic_master.apply(get_family_id, axis=1)\n", + "family_ids[titanic_master['Famsize'] < 3] = -1\n", + "titanic_master['Familyid'] = family_ids\n", + "\n", + "family_ids = test_data.apply(get_family_id, axis=1)\n", + "family_ids[test_data['Famsize'] < 3] = -1\n", + "test_data['Familyid'] = family_ids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that a bunch of indicators have been added, I want to look over the signal coming from these indicators, and start thinking about the relationships between the strong indicators. I use the approach described in the Dataquest tutorial in order to achieve this. I then apply the model to the testing data in order to see whether there was improvement using this method." + ] + }, + { + "cell_type": "code", + "execution_count": 348, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAE6CAYAAAALL9kIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuYZFV97vHvCyiiwDCiTBsFBjAiGkEJXskxrXiLUUEN\nGLwEVDQnmoDx0QRMlAk50cSYKGISYyBkjFeIIogXkAwtUYPIfeQWFSF4ZJqAglyCQHjzx9o1U9N0\nV1d3rd3de+b9PE89XXt31W+vrq761dprr4tsExER3bXFYhcgIiJGk0QeEdFxSeQRER2XRB4R0XFJ\n5BERHZdEHhHRcbMmckmPk3SJpIubn7dJOlLScklnS7pG0lmSli1EgSMiYmOaSz9ySVsAPwKeDvwu\ncIvt90v6Q2C57aPbKWZERMxkrk0rzwN+YPsG4EBgdbN/NXBQzYJFRMRw5prIXwV8qrm/wvYkgO11\nwE41CxYREcMZumlF0oOAHwN72b5Z0k9sP7zv97fY3nGa52UOgIiIebCtYR43lxr5rwEX2b652Z6U\ntAJA0hhw04DCtHY79thjE38Tjd/lsid+4o96m4u5JPJDgU/3bZ8BHN7cPww4fU5HjoiIKoZK5JIe\nSrnQ+fm+3X8BPF/SNcABwJ/XL15ERMxmqERu+y7bj7R9e9++n9h+nu09bb/A9q3tFXNmH/7wR5FU\n5TY2tvIB8cfHx1stf+IvTuzET/ylHn8u5tSPfF4HkNzmMSQBteJrzm1TERFtkIRbuNgZERFLUBJ5\nRETHJZFHRHRcEnlERMclkUdEdFwSeURExyWRR0R0XBJ5RETHJZFHRHRcEnlERMclkUdEdFwSeURE\nxyWRR0R0XBJ5RETHJZFHRHRcEnlERMclkUdEdFwSeURExyWRR0R0XBJ5RETHJZFHRHRcEnlERMcN\nlcglLZN0qqSrJF0h6emSlks6W9I1ks6StKztwkZExAMNWyM/Hviy7b2AfYCrgaOBc2zvCawBjmmn\niBERMYhsD36AtD1wie09puy/GvhV25OSxoAJ24+f5vme7RijkATUii/aLGtExLAkYVvDPHaYGvlu\nwM2STpZ0saSPSXoosML2JIDtdcBO8y9yRETM11ZDPmZf4K22L5T0QUqzytSq64xV2VWrVq2/Pz4+\nzvj4+JwLGhGxKZuYmGBiYmJezx2maWUF8O+2d2+2f4WSyPcAxvuaVs5t2tCnPj9NKxERc1S1aaVp\nPrlB0uOaXQcAVwBnAIc3+w4DTp97USMiYlSz1sgBJO0DnAg8CLgWeD2wJXAKsDNwPXCI7VuneW5q\n5BERczSXGvlQiXzEwiSRR0TMUe1eKxERsYQlkUdEdFwSeURExyWRR0R0XBJ5RETHJZFHRHRcEnlE\nLIqxsZVIqnIbG1u52H/Ooko/8o2jpR95xALJZ3ew9COPiNiMJJFHRHRcEnlERMclkUdEdFwSeURE\nxyWRR0R0XBJ5RETHJZFHRHRcEnlERMclkUdEdFwSeURExyWRR0R0XBJ5RETHJZFHRHRcEnlERMdt\nNcyDJF0H3AbcD9xr+2mSlgOfBXYFrgMOsX1bS+WMiIgZDFsjvx8Yt/0U209r9h0NnGN7T2ANcEwb\nBYyIiMGGTeSa5rEHAqub+6uBg2oVKiIihjdsIjfwNUnfkXREs2+F7UkA2+uAndooYEREDDZUGzmw\nv+0bJT0SOFvSNTxwsb0ZF8xbtWrV+vvj4+OMj4/PsZgREZu2iYkJJiYm5vXcOS++LOlY4A7gCEq7\n+aSkMeBc23tN8/gsvhwRD5DP7mBVF1+W9FBJ2zb3Hwa8AFgLnAEc3jzsMOD0eZU2IiJGMkzTygrg\nNEluHv9J22dLuhA4RdIbgOuBQ1osZ0REzGDOTStzPkCaViJiGvnsDla1aSUiIpa2JPKIiI5LIo+I\n6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4\nJPKIiI5LIo+I6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouKET\nuaQtJF0s6Yxme7mksyVdI+ksScvaK2ZERMxkLjXyo4Ar+7aPBs6xvSewBjimZsEiImI4QyVySY8B\nXgyc2Lf7QGB1c381cFDdokVExDCGrZF/EHgn4L59K2xPAtheB+xUuWwRETGErWZ7gKRfByZtXypp\nfMBDPdMvVq1atf7++Pg44+ODwkREbH4mJiaYmJiY13Nlz5h/ywOk9wKvBe4DtgG2A04D9gPGbU9K\nGgPOtb3XNM/3bMcYhSQGfIfMNRptljUiNshndzBJ2NYwj521acX2u2zvYnt34DeBNbZfB3wROLx5\n2GHA6fMsb0REjGCUfuR/Djxf0jXAAc12REQssFmbVkY+QJpWImIa+ewOVrVpJSIilrYk8oiIjksi\nj4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I\n6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4\nWRO5pK0lfVvSJZLWSjq22b9c0tmSrpF0lqRl7Rc3IiKmku3ZHyQ91PZdkrYEvgkcCbwSuMX2+yX9\nIbDc9tHTPNfDHGO+JAG14os2yxoRG+SzO5gkbGuYxw7VtGL7rubu1sBWlFf/QGB1s381cNAcyxkR\nERUMlcglbSHpEmAd8DXb3wFW2J4EsL0O2Km9YkZEzM3Y2EokVbmNja1c7D9noK2GeZDt+4GnSNoe\nOE3SE3ngOdGM5zWrVq1af398fJzx8fE5FzQiYi4mJ6+nVtPN5ORQLRwjmZiYYGJiYl7PHaqNfKMn\nSO8G7gKOAMZtT0oaA861vdc0j08beUQ8QNuf3a7nhqpt5JIe0euRImkb4PnAVcAZwOHNww4DTp9X\naSMiYiTDNK08ClgtaQtK4v+s7S9LOh84RdIbgOuBQ1osZ0REzGDOTStzPkCaViJiGmlameWItbsf\nRkTE0pVEHhHRcUnkEREdl0QeEdFxSeQRER2XRB7Rks1piHgsrnQ/3Dhauh9GNXlvDpbuh7McMd0P\nIyI2H0nkEREdl0QeEdFxSeQRER2XRB4R0XELksjTBSsioj1DrRA0uu6s0hER0TVpWomI6Lgk8oiI\njksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouFkTuaTHSFoj6QpJayUd2exf\nLulsSddIOkvSsvaLGxERUw1TI78PeLvtJwLPBN4q6fHA0cA5tvcE1gDHtFfMiIiYyayJ3PY625c2\n9+8ArgIeAxwIrG4etho4qK1CRkTEzObURi5pJfBk4Hxghe1JKMke2Kl24SIiYnZDz34oaVvgX4Cj\nbN8haeqUhgOmOFzVd3+8uUVERM/ExAQTExPzeq6GWRla0lbAmcBXbB/f7LsKGLc9KWkMONf2XtM8\n11kpOzZHeW8O1vbr0/XXXxK2h5q7e9imlX8Eruwl8cYZwOHN/cOA04cuYUREVDNrjVzS/sB5wFrK\n15uBdwEXAKcAOwPXA4fYvnWa56dGHpulvDcHS418liPOoUY+VNPKiIVJIo/NUt6bgyWRz3LEFppW\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.81593714927\n" + ] + } + ], + "source": [ + "predictors = ['Pclass','Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked','Famsize', 'Title', 'Familyid', 'Count_Individ', 'AgeSex', 'ClassSex', 'Agecat', 'Cabin']\n", + "selector = SelectKBest(f_classif, k=5)\n", + "selector.fit(titanic_master[predictors], titanic_master['Survived'])\n", + "scores = -np.log10(selector.pvalues_)\n", + "\n", + "plt.bar(range(len(predictors)), scores)\n", + "plt.xticks(range(len(predictors)), predictors, rotation='vertical')\n", + "plt.show()\n", + "\n", + "best_predictors = ['Pclass', 'Sex', 'Fare', 'Title', 'AgeSex', 'ClassSex']\n", + "alg = RandomForestClassifier(random_state=1, n_estimators=150, min_samples_split=8, min_samples_leaf=4)\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "scores = cross_validation.cross_val_score(alg,titanic_master[best_predictors],titanic_master['Survived'],cv=3)\n", + "print scores.mean() \n", + "\n", + "#apply to testing data, use best_predictors\n", + "alg.fit(titanic_master[best_predictors], titanic_master['Survived'])\n", + "predictions = alg.predict_proba(test_data[best_predictors].astype(float))[:,1]\n", + "\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "submission.to_csv('kaggle_v2_randforestimproved.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Even with this improved random forest, my score still sits at 0.76077. This implies to me that I've distilled some of the fundamental signal using this method, but there is a chance that this method has overfit the data by some amount. Taking a cue from the Dataquest model, I next explore ensembling and gradient boosting in order to pull together different methodologies in order to get a stronger correlation." + ] + }, + { + "cell_type": "code", + "execution_count": 349, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.817059483726\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:19: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "#I'll try gradient boosting and a logistic regression in this first pass, with all of the predictors\n", + "algos = [[GradientBoostingClassifier(random_state=1, n_estimators=25, max_depth=3), predictors],[LogisticRegression(random_state=1), predictors]]\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "\n", + "preds = []\n", + "for train, test in kf:\n", + " train_tar = titanic_master['Survived'].iloc[train]\n", + " full_test_pred = []\n", + " for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors].iloc[train,:], train_tar)\n", + " test_preds = alg.predict_proba(titanic_master[predictors].iloc[test,:].astype(float))[:,1]\n", + " full_test_pred.append(test_preds)\n", + " test_preds = (full_test_pred[0]*2 + full_test_pred[1])/3 #this weighs gradient heavily equally\n", + " test_preds[test_preds <= 0.5] = 0\n", + " test_preds[test_preds >0.5] = 1\n", + " preds.append(test_preds)\n", + "\n", + "predictions = np.concatenate(preds, axis=0)\n", + "accuracy = sum(predictions[predictions == titanic_master['Survived']])/len(predictions)\n", + "print accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": 350, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#for a final submission\n", + "final_predictions = []\n", + "for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors], titanic_master['Survived'])\n", + " predictions = alg.predict_proba(test_data[predictors].astype(float))[:,1]\n", + " final_predictions.append(predictions)\n", + "\n", + "predictions = (final_predictions[0] * 2 + final_predictions[1]) / 3\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "submission.to_csv('kaggle_v2_ensemble1.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This ensemble brought my score up to 0.78947, which is only a small amount better than my first iteration model score using a simple formula. I now explore improvements to this model, starting with the predictors (namely, narrowing them down to known quantities with signal)." + ] + }, + { + "cell_type": "code", + "execution_count": 351, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.822671156004\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:21: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "grad_pred = ['Pclass','Sex', 'Age', 'Fare', 'Embarked', 'Title', 'Familyid', 'Famsize', 'ClassSex', 'AgeSex']\n", + "log_pred = ['Pclass', 'Sex', 'Fare', 'Title', 'Famsize', 'Age', 'Embarked', 'ClassSex', 'AgeSex']\n", + "\n", + "algos = [[GradientBoostingClassifier(random_state=1, n_estimators=25, max_depth=3), grad_pred],[LogisticRegression(random_state=1), log_pred]]\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "\n", + "preds = []\n", + "for train, test in kf:\n", + " train_tar = titanic_master['Survived'].iloc[train]\n", + " full_test_pred = []\n", + " for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors].iloc[train,:], train_tar)\n", + " test_preds = alg.predict_proba(titanic_master[predictors].iloc[test,:].astype(float))[:,1]\n", + " full_test_pred.append(test_preds)\n", + " test_preds = (full_test_pred[0] * 3 + full_test_pred[1]) / 4\n", + " test_preds[test_preds <= 0.5] = 0\n", + " test_preds[test_preds >0.5] = 1\n", + " preds.append(test_preds)\n", + "\n", + "predictions = np.concatenate(preds, axis=0)\n", + "accuracy = sum(predictions[predictions == titanic_master['Survived']])/len(predictions)\n", + "print accuracy\n", + "\n", + "#for test data\n", + "final_predictions = []\n", + "for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors], titanic_master['Survived'])\n", + " predictions = alg.predict_proba(test_data[predictors].astype(float))[:,1]\n", + " final_predictions.append(predictions)\n", + "\n", + "predictions = (final_predictions[0] * 3 + final_predictions[1]) / 4\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "submission.to_csv('kaggle_v2_ensembleimproved.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This indicator adjustment actually got me to the \"advertised\" accuracy of 0.79904 from the Dataquest experience. Now, I want to explore the relationships I had begun to explore in my first exploration, but now with more advanced categories of data. I draw upon inspiration from the blog post mentioned earlier, however the formula is my own and is based upon the data mining technique covered in ThinkStats." + ] + }, + { + "cell_type": "code", + "execution_count": 352, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.409502\n", + " Iterations 8\n", + "0.83164983165\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:11: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "import statsmodels.formula.api as smf\n", + "\n", + "formula = 'Survived~ClassSex*Age+Fare+Title+Famsize*Pclass+Embarked*Agecat'\n", + "model = smf.logit(formula, data=titanic_master)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred >= 0.5] = 1\n", + "pred[pred < 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic_master['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "new = test_data\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_v2_formula.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This self-defined model achieved me a score just slightly less than that of the dataquest version, 0.79900. I'm excited that I've seemed to hone in on some of the most powerful relationships using intuition and the \"goodness\" of the predictors score as achieved earlier. I'm going to define new categories based on some of these powerful relationships and then apply them to an ensembled approach which has given me my best scores yet. I'm also going to make some fare and family relationship joint indicators, as inspired by the blog I've mentioned, as well as try out some decision tree work inspired by [this](https://www.kaggle.com/c/titanic/forums/t/6821/titanic-getting-started-with-r-full-guide-to-0-81340) resource Paul cited in the class." + ] + }, + { + "cell_type": "code", + "execution_count": 353, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.811447811448\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:18: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "\n", + "predictors = best_predictors\n", + "\n", + "regr = DecisionTreeRegressor(max_depth=len(predictors))\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "\n", + "preds = []\n", + "for train, test in kf:\n", + " train_tar = titanic_master['Survived'].iloc[train]\n", + " regr.fit(titanic_master[predictors].iloc[train,:], train_tar)\n", + " test_preds = regr.predict(titanic_master[predictors].iloc[test,:].astype(float))\n", + " test_preds[test_preds >= 0.5] = 1\n", + " test_preds[test_preds < 0.5] = 0\n", + " preds.append(test_preds[0:])\n", + "\n", + "predictions = np.concatenate(preds,axis=0)\n", + "accuracy = sum(predictions[predictions == titanic_master['Survived']])/len(predictions)\n", + "print accuracy\n", + "\n", + "#on test data\n", + "regr.fit(titanic_master[predictors], titanic_master['Survived'])\n", + "predicts = regr.predict(test_data[predictors])\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "\n", + "# print submission\n", + "submission.to_csv('kaggle_v2_decisiontree.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "This decision tree implementation recieved a scores of 0.77512. Not bad, but also not an improvement over the Dataquest model. The blog further suggests applying a random forest to the decision trees. Instead, I'm going to try an ensemble of a gradient, logistic, and decision tree in my last attempt at betterng the Dataquest model. This is largely driven by the idea that the decision tree gives some flexibility in a model which performs relatively well." + ] + }, + { + "cell_type": "code", + "execution_count": 354, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.827160493827\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:21: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "dtr_pred = best_predictors\n", + "grad_pred = ['Pclass','Sex', 'Age', 'Fare', 'Embarked', 'Title', 'Familyid', 'Famsize', 'ClassSex', 'AgeSex']\n", + "log_pred = ['Pclass', 'Sex', 'Fare', 'Title', 'Famsize', 'Age', 'Embarked', 'ClassSex', 'AgeSex']\n", + "algos = [[DecisionTreeRegressor(max_depth=3),dtr_pred], [GradientBoostingClassifier(random_state=1, n_estimators=25, max_depth=3), grad_pred],[LogisticRegression(random_state=1), log_pred]]\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "\n", + "preds = []\n", + "for train, test in kf:\n", + " train_tar = titanic_master['Survived'].iloc[train]\n", + " full_test_pred = []\n", + " for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors].iloc[train,:], train_tar)\n", + " test_preds = alg.predict(titanic_master[predictors].iloc[test,:].astype(float))\n", + " full_test_pred.append(test_preds)\n", + " test_preds = (full_test_pred[0]*2 + full_test_pred[1] + full_test_pred[2]) / 4\n", + " test_preds[test_preds <= 0.5] = 0\n", + " test_preds[test_preds >0.5] = 1\n", + " preds.append(test_preds)\n", + "\n", + "predictions = np.concatenate(preds,axis=0)\n", + "accuracy = sum(predictions[predictions == titanic_master['Survived']])/len(predictions)\n", + "print accuracy\n", + "\n", + "#on test data\n", + "final_predictions = []\n", + "for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors], titanic_master['Survived'])\n", + " predictions = alg.predict(test_data[predictors].astype(float))\n", + " final_predictions.append(predictions)\n", + "\n", + "predictions = (final_predictions[0] * 2 + final_predictions[1] + final_predictions[2]) / 4\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "\n", + "# print submission\n", + "submission.to_csv('kaggle_v2_decisiontreeensemble.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This final submission bought me a score of 0.80383. This implies to me that the addition of the decision tree to my previous ensemble was valuable. My theory on this matter is that the decision tree offers some amount of implicit weighting to individuals based upon the factors given. This both allows for more variance in the accuracy (which I consider to be good in this case because at about 0.799 it is really only a few values which need to be flipped) and also means that overfitting to the data can be easy. To avoid the overfitting data, I aimed to keep my fold accuracy at about the point which seems to yield the best results on the testing data (just over 80%). More than this number seems to get me data that matches well with the training but poorly with the testing, whereas less gets me...less. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At the conclusion of this warmup project, I feel that I've had a chance to practice and read more on data cleaning, data mining, formulaic approaches to fitting data, and built-in data fitting packages in scikitlearn. I am also left with a few questions: how does one detext overfitting? is there a way to predict testing accuracy without crossreferncing the answers? what ethodical approach to data scientists typically take to finding and fitting a model to data? how much of data science is being clever (not necessarily being analytical)? " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I enjoyed in this last iteration the ability to explore the concept of ensembles more, and to apply a new technique listed in a class resource on decision trees. The resource expounded on the concept using a programming language R which I abstracted using scikitlearn. I would be curious to see how similar the underlying algorithms are for these two fitting techniques. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/README.md b/README.md index 9e38c9e..94783f8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,11 @@ # DataScience16WarmupProject -This is the base repo for the warmup project for Data Science at Olin College, Spring 2016. +This is the warm-up project for Olin College's Data Science course. In this project, students were tasked with looking at kaggle's [Titanic competition](https://www.kaggle.com/c/titanic/leaderboard?submissionId=2507145) data. In three stages, student's explored the dataset, developed a first pass model for making survival predictions, and then iterated on their models. + +This repo contains three ipython notebooks which described each of these steps, as well as the generated data files which were ultimately submitted to kaggle. + +## To Run +If you are interesting in running any of the notebooks, do be sure that you have Anaconda installed. You can open any notebook by typing in the command line ipython notebook with the filename. + +## Results +The final model in the iteration two notebook achieved a score of 0.80383, an improvement from a [Dataquest tutorial](https://www.dataquest.io/mission/75/improving-your-submission) on this matter (achieves a score of 0.79904), but not surpassing other sources which were referenced in the making of this including a [blog post](http://elenacuoco.altervista.org/blog/archives/1195) and [R tutorial](http://trevorstephens.com/post/72916401642/titanic-getting-started-with-r). At the end of the second iteration notebook I have included a reflection on the project. + diff --git a/data/genderclassmodel.csv b/data/genderclassmodel.csv new file mode 100644 index 0000000..15552be --- /dev/null +++ b/data/genderclassmodel.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,0 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,0 +925,0 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,0 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,0 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,0 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,0 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,0 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,0 +1087,0 +1088,0 +1089,1 +1090,0 +1091,1 +1092,1 +1093,0 +1094,0 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,1 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,0 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,0 +1200,0 +1201,1 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,0 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,1 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/data/gendermodel.csv b/data/gendermodel.csv new file mode 100644 index 0000000..7594506 --- /dev/null +++ b/data/gendermodel.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,0 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,1 +925,1 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,0 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,0 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,0 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,1 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,1 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,0 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,1 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,0 +1087,0 +1088,0 +1089,1 +1090,0 +1091,1 +1092,1 +1093,0 +1094,0 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,1 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,0 +1200,0 +1201,1 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,1 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,1 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/data/test.csv b/data/test.csv new file mode 100644 index 0000000..f705412 --- /dev/null +++ b/data/test.csv @@ -0,0 +1,419 @@ +PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q +893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S +894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q +895,3,"Wirz, Mr. Albert",male,27,0,0,315154,8.6625,,S +896,3,"Hirvonen, Mrs. Alexander (Helga E Lindqvist)",female,22,1,1,3101298,12.2875,,S +897,3,"Svensson, Mr. Johan Cervin",male,14,0,0,7538,9.225,,S +898,3,"Connolly, Miss. Kate",female,30,0,0,330972,7.6292,,Q +899,2,"Caldwell, Mr. Albert Francis",male,26,1,1,248738,29,,S +900,3,"Abrahim, Mrs. Joseph (Sophie Halaut Easu)",female,18,0,0,2657,7.2292,,C +901,3,"Davies, Mr. John Samuel",male,21,2,0,A/4 48871,24.15,,S +902,3,"Ilieff, Mr. Ylio",male,,0,0,349220,7.8958,,S +903,1,"Jones, Mr. Charles Cresson",male,46,0,0,694,26,,S +904,1,"Snyder, Mrs. John Pillsbury (Nelle Stevenson)",female,23,1,0,21228,82.2667,B45,S +905,2,"Howard, Mr. Benjamin",male,63,1,0,24065,26,,S +906,1,"Chaffee, Mrs. Herbert Fuller (Carrie Constance Toogood)",female,47,1,0,W.E.P. 5734,61.175,E31,S +907,2,"del Carlo, Mrs. Sebastiano (Argenia Genovesi)",female,24,1,0,SC/PARIS 2167,27.7208,,C +908,2,"Keane, Mr. Daniel",male,35,0,0,233734,12.35,,Q +909,3,"Assaf, Mr. Gerios",male,21,0,0,2692,7.225,,C +910,3,"Ilmakangas, Miss. Ida Livija",female,27,1,0,STON/O2. 3101270,7.925,,S +911,3,"Assaf Khalil, Mrs. Mariana (Miriam"")""",female,45,0,0,2696,7.225,,C +912,1,"Rothschild, Mr. Martin",male,55,1,0,PC 17603,59.4,,C +913,3,"Olsen, Master. Artur Karl",male,9,0,1,C 17368,3.1708,,S +914,1,"Flegenheim, Mrs. Alfred (Antoinette)",female,,0,0,PC 17598,31.6833,,S +915,1,"Williams, Mr. Richard Norris II",male,21,0,1,PC 17597,61.3792,,C +916,1,"Ryerson, Mrs. Arthur Larned (Emily Maria Borie)",female,48,1,3,PC 17608,262.375,B57 B59 B63 B66,C +917,3,"Robins, Mr. Alexander A",male,50,1,0,A/5. 3337,14.5,,S +918,1,"Ostby, Miss. Helene Ragnhild",female,22,0,1,113509,61.9792,B36,C +919,3,"Daher, Mr. Shedid",male,22.5,0,0,2698,7.225,,C +920,1,"Brady, Mr. John Bertram",male,41,0,0,113054,30.5,A21,S +921,3,"Samaan, Mr. Elias",male,,2,0,2662,21.6792,,C +922,2,"Louch, Mr. Charles Alexander",male,50,1,0,SC/AH 3085,26,,S +923,2,"Jefferys, Mr. Clifford Thomas",male,24,2,0,C.A. 31029,31.5,,S +924,3,"Dean, Mrs. Bertram (Eva Georgetta Light)",female,33,1,2,C.A. 2315,20.575,,S +925,3,"Johnston, Mrs. Andrew G (Elizabeth Lily"" Watson)""",female,,1,2,W./C. 6607,23.45,,S +926,1,"Mock, Mr. Philipp Edmund",male,30,1,0,13236,57.75,C78,C +927,3,"Katavelas, Mr. Vassilios (Catavelas Vassilios"")""",male,18.5,0,0,2682,7.2292,,C +928,3,"Roth, Miss. Sarah A",female,,0,0,342712,8.05,,S +929,3,"Cacic, Miss. Manda",female,21,0,0,315087,8.6625,,S +930,3,"Sap, Mr. Julius",male,25,0,0,345768,9.5,,S +931,3,"Hee, Mr. Ling",male,,0,0,1601,56.4958,,S +932,3,"Karun, Mr. Franz",male,39,0,1,349256,13.4167,,C +933,1,"Franklin, Mr. Thomas Parham",male,,0,0,113778,26.55,D34,S +934,3,"Goldsmith, Mr. Nathan",male,41,0,0,SOTON/O.Q. 3101263,7.85,,S +935,2,"Corbett, Mrs. Walter H (Irene Colvin)",female,30,0,0,237249,13,,S +936,1,"Kimball, Mrs. Edwin Nelson Jr (Gertrude Parsons)",female,45,1,0,11753,52.5542,D19,S +937,3,"Peltomaki, Mr. Nikolai Johannes",male,25,0,0,STON/O 2. 3101291,7.925,,S +938,1,"Chevre, Mr. Paul Romaine",male,45,0,0,PC 17594,29.7,A9,C +939,3,"Shaughnessy, Mr. Patrick",male,,0,0,370374,7.75,,Q +940,1,"Bucknell, Mrs. William Robert (Emma Eliza Ward)",female,60,0,0,11813,76.2917,D15,C +941,3,"Coutts, Mrs. William (Winnie Minnie"" Treanor)""",female,36,0,2,C.A. 37671,15.9,,S +942,1,"Smith, Mr. Lucien Philip",male,24,1,0,13695,60,C31,S +943,2,"Pulbaum, Mr. Franz",male,27,0,0,SC/PARIS 2168,15.0333,,C +944,2,"Hocking, Miss. Ellen Nellie""""",female,20,2,1,29105,23,,S +945,1,"Fortune, Miss. Ethel Flora",female,28,3,2,19950,263,C23 C25 C27,S +946,2,"Mangiavacchi, Mr. Serafino Emilio",male,,0,0,SC/A.3 2861,15.5792,,C +947,3,"Rice, Master. Albert",male,10,4,1,382652,29.125,,Q +948,3,"Cor, Mr. Bartol",male,35,0,0,349230,7.8958,,S +949,3,"Abelseth, Mr. Olaus Jorgensen",male,25,0,0,348122,7.65,F G63,S +950,3,"Davison, Mr. Thomas Henry",male,,1,0,386525,16.1,,S +951,1,"Chaudanson, Miss. Victorine",female,36,0,0,PC 17608,262.375,B61,C +952,3,"Dika, Mr. Mirko",male,17,0,0,349232,7.8958,,S +953,2,"McCrae, Mr. Arthur Gordon",male,32,0,0,237216,13.5,,S +954,3,"Bjorklund, Mr. Ernst Herbert",male,18,0,0,347090,7.75,,S +955,3,"Bradley, Miss. Bridget Delia",female,22,0,0,334914,7.725,,Q +956,1,"Ryerson, Master. John Borie",male,13,2,2,PC 17608,262.375,B57 B59 B63 B66,C +957,2,"Corey, Mrs. Percy C (Mary Phyllis Elizabeth Miller)",female,,0,0,F.C.C. 13534,21,,S +958,3,"Burns, Miss. Mary Delia",female,18,0,0,330963,7.8792,,Q +959,1,"Moore, Mr. Clarence Bloomfield",male,47,0,0,113796,42.4,,S +960,1,"Tucker, Mr. Gilbert Milligan Jr",male,31,0,0,2543,28.5375,C53,C +961,1,"Fortune, Mrs. Mark (Mary McDougald)",female,60,1,4,19950,263,C23 C25 C27,S +962,3,"Mulvihill, Miss. Bertha E",female,24,0,0,382653,7.75,,Q +963,3,"Minkoff, Mr. Lazar",male,21,0,0,349211,7.8958,,S +964,3,"Nieminen, Miss. Manta Josefina",female,29,0,0,3101297,7.925,,S +965,1,"Ovies y Rodriguez, Mr. Servando",male,28.5,0,0,PC 17562,27.7208,D43,C +966,1,"Geiger, Miss. Amalie",female,35,0,0,113503,211.5,C130,C +967,1,"Keeping, Mr. Edwin",male,32.5,0,0,113503,211.5,C132,C +968,3,"Miles, Mr. Frank",male,,0,0,359306,8.05,,S +969,1,"Cornell, Mrs. Robert Clifford (Malvina Helen Lamson)",female,55,2,0,11770,25.7,C101,S +970,2,"Aldworth, Mr. Charles Augustus",male,30,0,0,248744,13,,S +971,3,"Doyle, Miss. Elizabeth",female,24,0,0,368702,7.75,,Q +972,3,"Boulos, Master. Akar",male,6,1,1,2678,15.2458,,C +973,1,"Straus, Mr. Isidor",male,67,1,0,PC 17483,221.7792,C55 C57,S +974,1,"Case, Mr. Howard Brown",male,49,0,0,19924,26,,S +975,3,"Demetri, Mr. Marinko",male,,0,0,349238,7.8958,,S +976,2,"Lamb, Mr. John Joseph",male,,0,0,240261,10.7083,,Q +977,3,"Khalil, Mr. Betros",male,,1,0,2660,14.4542,,C +978,3,"Barry, Miss. Julia",female,27,0,0,330844,7.8792,,Q +979,3,"Badman, Miss. Emily Louisa",female,18,0,0,A/4 31416,8.05,,S +980,3,"O'Donoghue, Ms. Bridget",female,,0,0,364856,7.75,,Q +981,2,"Wells, Master. Ralph Lester",male,2,1,1,29103,23,,S +982,3,"Dyker, Mrs. Adolf Fredrik (Anna Elisabeth Judith Andersson)",female,22,1,0,347072,13.9,,S +983,3,"Pedersen, Mr. Olaf",male,,0,0,345498,7.775,,S +984,1,"Davidson, Mrs. Thornton (Orian Hays)",female,27,1,2,F.C. 12750,52,B71,S +985,3,"Guest, Mr. Robert",male,,0,0,376563,8.05,,S +986,1,"Birnbaum, Mr. Jakob",male,25,0,0,13905,26,,C +987,3,"Tenglin, Mr. Gunnar Isidor",male,25,0,0,350033,7.7958,,S +988,1,"Cavendish, Mrs. Tyrell William (Julia Florence Siegel)",female,76,1,0,19877,78.85,C46,S +989,3,"Makinen, Mr. Kalle Edvard",male,29,0,0,STON/O 2. 3101268,7.925,,S +990,3,"Braf, Miss. Elin Ester Maria",female,20,0,0,347471,7.8542,,S +991,3,"Nancarrow, Mr. William Henry",male,33,0,0,A./5. 3338,8.05,,S +992,1,"Stengel, Mrs. Charles Emil Henry (Annie May Morris)",female,43,1,0,11778,55.4417,C116,C +993,2,"Weisz, Mr. Leopold",male,27,1,0,228414,26,,S +994,3,"Foley, Mr. William",male,,0,0,365235,7.75,,Q +995,3,"Johansson Palmquist, Mr. Oskar Leander",male,26,0,0,347070,7.775,,S +996,3,"Thomas, Mrs. Alexander (Thamine Thelma"")""",female,16,1,1,2625,8.5167,,C +997,3,"Holthen, Mr. Johan Martin",male,28,0,0,C 4001,22.525,,S +998,3,"Buckley, Mr. Daniel",male,21,0,0,330920,7.8208,,Q +999,3,"Ryan, Mr. Edward",male,,0,0,383162,7.75,,Q +1000,3,"Willer, Mr. Aaron (Abi Weller"")""",male,,0,0,3410,8.7125,,S +1001,2,"Swane, Mr. George",male,18.5,0,0,248734,13,F,S +1002,2,"Stanton, Mr. Samuel Ward",male,41,0,0,237734,15.0458,,C +1003,3,"Shine, Miss. Ellen Natalia",female,,0,0,330968,7.7792,,Q +1004,1,"Evans, Miss. Edith Corse",female,36,0,0,PC 17531,31.6792,A29,C +1005,3,"Buckley, Miss. Katherine",female,18.5,0,0,329944,7.2833,,Q +1006,1,"Straus, Mrs. Isidor (Rosalie Ida Blun)",female,63,1,0,PC 17483,221.7792,C55 C57,S +1007,3,"Chronopoulos, Mr. Demetrios",male,18,1,0,2680,14.4542,,C +1008,3,"Thomas, Mr. John",male,,0,0,2681,6.4375,,C +1009,3,"Sandstrom, Miss. Beatrice Irene",female,1,1,1,PP 9549,16.7,G6,S +1010,1,"Beattie, Mr. Thomson",male,36,0,0,13050,75.2417,C6,C +1011,2,"Chapman, Mrs. John Henry (Sara Elizabeth Lawry)",female,29,1,0,SC/AH 29037,26,,S +1012,2,"Watt, Miss. Bertha J",female,12,0,0,C.A. 33595,15.75,,S +1013,3,"Kiernan, Mr. John",male,,1,0,367227,7.75,,Q +1014,1,"Schabert, Mrs. Paul (Emma Mock)",female,35,1,0,13236,57.75,C28,C +1015,3,"Carver, Mr. Alfred John",male,28,0,0,392095,7.25,,S +1016,3,"Kennedy, Mr. John",male,,0,0,368783,7.75,,Q +1017,3,"Cribb, Miss. Laura Alice",female,17,0,1,371362,16.1,,S +1018,3,"Brobeck, Mr. Karl Rudolf",male,22,0,0,350045,7.7958,,S +1019,3,"McCoy, Miss. Alicia",female,,2,0,367226,23.25,,Q +1020,2,"Bowenur, Mr. Solomon",male,42,0,0,211535,13,,S +1021,3,"Petersen, Mr. Marius",male,24,0,0,342441,8.05,,S +1022,3,"Spinner, Mr. Henry John",male,32,0,0,STON/OQ. 369943,8.05,,S +1023,1,"Gracie, Col. Archibald IV",male,53,0,0,113780,28.5,C51,C +1024,3,"Lefebre, Mrs. Frank (Frances)",female,,0,4,4133,25.4667,,S +1025,3,"Thomas, Mr. Charles P",male,,1,0,2621,6.4375,,C +1026,3,"Dintcheff, Mr. Valtcho",male,43,0,0,349226,7.8958,,S +1027,3,"Carlsson, Mr. Carl Robert",male,24,0,0,350409,7.8542,,S +1028,3,"Zakarian, Mr. Mapriededer",male,26.5,0,0,2656,7.225,,C +1029,2,"Schmidt, Mr. August",male,26,0,0,248659,13,,S +1030,3,"Drapkin, Miss. Jennie",female,23,0,0,SOTON/OQ 392083,8.05,,S +1031,3,"Goodwin, Mr. Charles Frederick",male,40,1,6,CA 2144,46.9,,S +1032,3,"Goodwin, Miss. Jessie Allis",female,10,5,2,CA 2144,46.9,,S +1033,1,"Daniels, Miss. Sarah",female,33,0,0,113781,151.55,,S +1034,1,"Ryerson, Mr. Arthur Larned",male,61,1,3,PC 17608,262.375,B57 B59 B63 B66,C +1035,2,"Beauchamp, Mr. Henry James",male,28,0,0,244358,26,,S +1036,1,"Lindeberg-Lind, Mr. Erik Gustaf (Mr Edward Lingrey"")""",male,42,0,0,17475,26.55,,S +1037,3,"Vander Planke, Mr. Julius",male,31,3,0,345763,18,,S +1038,1,"Hilliard, Mr. Herbert Henry",male,,0,0,17463,51.8625,E46,S +1039,3,"Davies, Mr. Evan",male,22,0,0,SC/A4 23568,8.05,,S +1040,1,"Crafton, Mr. John Bertram",male,,0,0,113791,26.55,,S +1041,2,"Lahtinen, Rev. William",male,30,1,1,250651,26,,S +1042,1,"Earnshaw, Mrs. Boulton (Olive Potter)",female,23,0,1,11767,83.1583,C54,C +1043,3,"Matinoff, Mr. Nicola",male,,0,0,349255,7.8958,,C +1044,3,"Storey, Mr. Thomas",male,60.5,0,0,3701,,,S +1045,3,"Klasen, Mrs. (Hulda Kristina Eugenia Lofqvist)",female,36,0,2,350405,12.1833,,S +1046,3,"Asplund, Master. Filip Oscar",male,13,4,2,347077,31.3875,,S +1047,3,"Duquemin, Mr. Joseph",male,24,0,0,S.O./P.P. 752,7.55,,S +1048,1,"Bird, Miss. Ellen",female,29,0,0,PC 17483,221.7792,C97,S +1049,3,"Lundin, Miss. Olga Elida",female,23,0,0,347469,7.8542,,S +1050,1,"Borebank, Mr. John James",male,42,0,0,110489,26.55,D22,S +1051,3,"Peacock, Mrs. Benjamin (Edith Nile)",female,26,0,2,SOTON/O.Q. 3101315,13.775,,S +1052,3,"Smyth, Miss. Julia",female,,0,0,335432,7.7333,,Q +1053,3,"Touma, Master. Georges Youssef",male,7,1,1,2650,15.2458,,C +1054,2,"Wright, Miss. Marion",female,26,0,0,220844,13.5,,S +1055,3,"Pearce, Mr. Ernest",male,,0,0,343271,7,,S +1056,2,"Peruschitz, Rev. Joseph Maria",male,41,0,0,237393,13,,S +1057,3,"Kink-Heilmann, Mrs. Anton (Luise Heilmann)",female,26,1,1,315153,22.025,,S +1058,1,"Brandeis, Mr. Emil",male,48,0,0,PC 17591,50.4958,B10,C +1059,3,"Ford, Mr. Edward Watson",male,18,2,2,W./C. 6608,34.375,,S +1060,1,"Cassebeer, Mrs. Henry Arthur Jr (Eleanor Genevieve Fosdick)",female,,0,0,17770,27.7208,,C +1061,3,"Hellstrom, Miss. Hilda Maria",female,22,0,0,7548,8.9625,,S +1062,3,"Lithman, Mr. Simon",male,,0,0,S.O./P.P. 251,7.55,,S +1063,3,"Zakarian, Mr. Ortin",male,27,0,0,2670,7.225,,C +1064,3,"Dyker, Mr. Adolf Fredrik",male,23,1,0,347072,13.9,,S +1065,3,"Torfa, Mr. Assad",male,,0,0,2673,7.2292,,C +1066,3,"Asplund, Mr. Carl Oscar Vilhelm Gustafsson",male,40,1,5,347077,31.3875,,S +1067,2,"Brown, Miss. Edith Eileen",female,15,0,2,29750,39,,S +1068,2,"Sincock, Miss. Maude",female,20,0,0,C.A. 33112,36.75,,S +1069,1,"Stengel, Mr. Charles Emil Henry",male,54,1,0,11778,55.4417,C116,C +1070,2,"Becker, Mrs. Allen Oliver (Nellie E Baumgardner)",female,36,0,3,230136,39,F4,S +1071,1,"Compton, Mrs. Alexander Taylor (Mary Eliza Ingersoll)",female,64,0,2,PC 17756,83.1583,E45,C +1072,2,"McCrie, Mr. James Matthew",male,30,0,0,233478,13,,S +1073,1,"Compton, Mr. Alexander Taylor Jr",male,37,1,1,PC 17756,83.1583,E52,C +1074,1,"Marvin, Mrs. Daniel Warner (Mary Graham Carmichael Farquarson)",female,18,1,0,113773,53.1,D30,S +1075,3,"Lane, Mr. Patrick",male,,0,0,7935,7.75,,Q +1076,1,"Douglas, Mrs. Frederick Charles (Mary Helene Baxter)",female,27,1,1,PC 17558,247.5208,B58 B60,C +1077,2,"Maybery, Mr. Frank Hubert",male,40,0,0,239059,16,,S +1078,2,"Phillips, Miss. Alice Frances Louisa",female,21,0,1,S.O./P.P. 2,21,,S +1079,3,"Davies, Mr. Joseph",male,17,2,0,A/4 48873,8.05,,S +1080,3,"Sage, Miss. Ada",female,,8,2,CA. 2343,69.55,,S +1081,2,"Veal, Mr. James",male,40,0,0,28221,13,,S +1082,2,"Angle, Mr. William A",male,34,1,0,226875,26,,S +1083,1,"Salomon, Mr. Abraham L",male,,0,0,111163,26,,S +1084,3,"van Billiard, Master. Walter John",male,11.5,1,1,A/5. 851,14.5,,S +1085,2,"Lingane, Mr. John",male,61,0,0,235509,12.35,,Q +1086,2,"Drew, Master. Marshall Brines",male,8,0,2,28220,32.5,,S +1087,3,"Karlsson, Mr. Julius Konrad Eugen",male,33,0,0,347465,7.8542,,S +1088,1,"Spedden, Master. Robert Douglas",male,6,0,2,16966,134.5,E34,C +1089,3,"Nilsson, Miss. Berta Olivia",female,18,0,0,347066,7.775,,S +1090,2,"Baimbrigge, Mr. Charles Robert",male,23,0,0,C.A. 31030,10.5,,S +1091,3,"Rasmussen, Mrs. (Lena Jacobsen Solvang)",female,,0,0,65305,8.1125,,S +1092,3,"Murphy, Miss. Nora",female,,0,0,36568,15.5,,Q +1093,3,"Danbom, Master. Gilbert Sigvard Emanuel",male,0.33,0,2,347080,14.4,,S +1094,1,"Astor, Col. John Jacob",male,47,1,0,PC 17757,227.525,C62 C64,C +1095,2,"Quick, Miss. Winifred Vera",female,8,1,1,26360,26,,S +1096,2,"Andrew, Mr. Frank Thomas",male,25,0,0,C.A. 34050,10.5,,S +1097,1,"Omont, Mr. Alfred Fernand",male,,0,0,F.C. 12998,25.7417,,C +1098,3,"McGowan, Miss. Katherine",female,35,0,0,9232,7.75,,Q +1099,2,"Collett, Mr. Sidney C Stuart",male,24,0,0,28034,10.5,,S +1100,1,"Rosenbaum, Miss. Edith Louise",female,33,0,0,PC 17613,27.7208,A11,C +1101,3,"Delalic, Mr. Redjo",male,25,0,0,349250,7.8958,,S +1102,3,"Andersen, Mr. Albert Karvin",male,32,0,0,C 4001,22.525,,S +1103,3,"Finoli, Mr. Luigi",male,,0,0,SOTON/O.Q. 3101308,7.05,,S +1104,2,"Deacon, Mr. Percy William",male,17,0,0,S.O.C. 14879,73.5,,S +1105,2,"Howard, Mrs. Benjamin (Ellen Truelove Arman)",female,60,1,0,24065,26,,S +1106,3,"Andersson, Miss. Ida Augusta Margareta",female,38,4,2,347091,7.775,,S +1107,1,"Head, Mr. Christopher",male,42,0,0,113038,42.5,B11,S +1108,3,"Mahon, Miss. Bridget Delia",female,,0,0,330924,7.8792,,Q +1109,1,"Wick, Mr. George Dennick",male,57,1,1,36928,164.8667,,S +1110,1,"Widener, Mrs. George Dunton (Eleanor Elkins)",female,50,1,1,113503,211.5,C80,C +1111,3,"Thomson, Mr. Alexander Morrison",male,,0,0,32302,8.05,,S +1112,2,"Duran y More, Miss. Florentina",female,30,1,0,SC/PARIS 2148,13.8583,,C +1113,3,"Reynolds, Mr. Harold J",male,21,0,0,342684,8.05,,S +1114,2,"Cook, Mrs. (Selena Rogers)",female,22,0,0,W./C. 14266,10.5,F33,S +1115,3,"Karlsson, Mr. Einar Gervasius",male,21,0,0,350053,7.7958,,S +1116,1,"Candee, Mrs. Edward (Helen Churchill Hungerford)",female,53,0,0,PC 17606,27.4458,,C +1117,3,"Moubarek, Mrs. George (Omine Amenia"" Alexander)""",female,,0,2,2661,15.2458,,C +1118,3,"Asplund, Mr. Johan Charles",male,23,0,0,350054,7.7958,,S +1119,3,"McNeill, Miss. Bridget",female,,0,0,370368,7.75,,Q +1120,3,"Everett, Mr. Thomas James",male,40.5,0,0,C.A. 6212,15.1,,S +1121,2,"Hocking, Mr. Samuel James Metcalfe",male,36,0,0,242963,13,,S +1122,2,"Sweet, Mr. George Frederick",male,14,0,0,220845,65,,S +1123,1,"Willard, Miss. Constance",female,21,0,0,113795,26.55,,S +1124,3,"Wiklund, Mr. Karl Johan",male,21,1,0,3101266,6.4958,,S +1125,3,"Linehan, Mr. Michael",male,,0,0,330971,7.8792,,Q +1126,1,"Cumings, Mr. John Bradley",male,39,1,0,PC 17599,71.2833,C85,C +1127,3,"Vendel, Mr. Olof Edvin",male,20,0,0,350416,7.8542,,S +1128,1,"Warren, Mr. Frank Manley",male,64,1,0,110813,75.25,D37,C +1129,3,"Baccos, Mr. Raffull",male,20,0,0,2679,7.225,,C +1130,2,"Hiltunen, Miss. Marta",female,18,1,1,250650,13,,S +1131,1,"Douglas, Mrs. Walter Donald (Mahala Dutton)",female,48,1,0,PC 17761,106.425,C86,C +1132,1,"Lindstrom, Mrs. Carl Johan (Sigrid Posse)",female,55,0,0,112377,27.7208,,C +1133,2,"Christy, Mrs. (Alice Frances)",female,45,0,2,237789,30,,S +1134,1,"Spedden, Mr. Frederic Oakley",male,45,1,1,16966,134.5,E34,C +1135,3,"Hyman, Mr. Abraham",male,,0,0,3470,7.8875,,S +1136,3,"Johnston, Master. William Arthur Willie""""",male,,1,2,W./C. 6607,23.45,,S +1137,1,"Kenyon, Mr. Frederick R",male,41,1,0,17464,51.8625,D21,S +1138,2,"Karnes, Mrs. J Frank (Claire Bennett)",female,22,0,0,F.C.C. 13534,21,,S +1139,2,"Drew, Mr. James Vivian",male,42,1,1,28220,32.5,,S +1140,2,"Hold, Mrs. Stephen (Annie Margaret Hill)",female,29,1,0,26707,26,,S +1141,3,"Khalil, Mrs. Betros (Zahie Maria"" Elias)""",female,,1,0,2660,14.4542,,C +1142,2,"West, Miss. Barbara J",female,0.92,1,2,C.A. 34651,27.75,,S +1143,3,"Abrahamsson, Mr. Abraham August Johannes",male,20,0,0,SOTON/O2 3101284,7.925,,S +1144,1,"Clark, Mr. Walter Miller",male,27,1,0,13508,136.7792,C89,C +1145,3,"Salander, Mr. Karl Johan",male,24,0,0,7266,9.325,,S +1146,3,"Wenzel, Mr. Linhart",male,32.5,0,0,345775,9.5,,S +1147,3,"MacKay, Mr. George William",male,,0,0,C.A. 42795,7.55,,S +1148,3,"Mahon, Mr. John",male,,0,0,AQ/4 3130,7.75,,Q +1149,3,"Niklasson, Mr. Samuel",male,28,0,0,363611,8.05,,S +1150,2,"Bentham, Miss. Lilian W",female,19,0,0,28404,13,,S +1151,3,"Midtsjo, Mr. Karl Albert",male,21,0,0,345501,7.775,,S +1152,3,"de Messemaeker, Mr. Guillaume Joseph",male,36.5,1,0,345572,17.4,,S +1153,3,"Nilsson, Mr. August Ferdinand",male,21,0,0,350410,7.8542,,S +1154,2,"Wells, Mrs. Arthur Henry (Addie"" Dart Trevaskis)""",female,29,0,2,29103,23,,S +1155,3,"Klasen, Miss. Gertrud Emilia",female,1,1,1,350405,12.1833,,S +1156,2,"Portaluppi, Mr. Emilio Ilario Giuseppe",male,30,0,0,C.A. 34644,12.7375,,C +1157,3,"Lyntakoff, Mr. Stanko",male,,0,0,349235,7.8958,,S +1158,1,"Chisholm, Mr. Roderick Robert Crispin",male,,0,0,112051,0,,S +1159,3,"Warren, Mr. Charles William",male,,0,0,C.A. 49867,7.55,,S +1160,3,"Howard, Miss. May Elizabeth",female,,0,0,A. 2. 39186,8.05,,S +1161,3,"Pokrnic, Mr. Mate",male,17,0,0,315095,8.6625,,S +1162,1,"McCaffry, Mr. Thomas Francis",male,46,0,0,13050,75.2417,C6,C +1163,3,"Fox, Mr. Patrick",male,,0,0,368573,7.75,,Q +1164,1,"Clark, Mrs. Walter Miller (Virginia McDowell)",female,26,1,0,13508,136.7792,C89,C +1165,3,"Lennon, Miss. Mary",female,,1,0,370371,15.5,,Q +1166,3,"Saade, Mr. Jean Nassr",male,,0,0,2676,7.225,,C +1167,2,"Bryhl, Miss. Dagmar Jenny Ingeborg ",female,20,1,0,236853,26,,S +1168,2,"Parker, Mr. Clifford Richard",male,28,0,0,SC 14888,10.5,,S +1169,2,"Faunthorpe, Mr. Harry",male,40,1,0,2926,26,,S +1170,2,"Ware, Mr. John James",male,30,1,0,CA 31352,21,,S +1171,2,"Oxenham, Mr. Percy Thomas",male,22,0,0,W./C. 14260,10.5,,S +1172,3,"Oreskovic, Miss. Jelka",female,23,0,0,315085,8.6625,,S +1173,3,"Peacock, Master. Alfred Edward",male,0.75,1,1,SOTON/O.Q. 3101315,13.775,,S +1174,3,"Fleming, Miss. Honora",female,,0,0,364859,7.75,,Q +1175,3,"Touma, Miss. Maria Youssef",female,9,1,1,2650,15.2458,,C +1176,3,"Rosblom, Miss. Salli Helena",female,2,1,1,370129,20.2125,,S +1177,3,"Dennis, Mr. William",male,36,0,0,A/5 21175,7.25,,S +1178,3,"Franklin, Mr. Charles (Charles Fardon)",male,,0,0,SOTON/O.Q. 3101314,7.25,,S +1179,1,"Snyder, Mr. John Pillsbury",male,24,1,0,21228,82.2667,B45,S +1180,3,"Mardirosian, Mr. Sarkis",male,,0,0,2655,7.2292,F E46,C +1181,3,"Ford, Mr. Arthur",male,,0,0,A/5 1478,8.05,,S +1182,1,"Rheims, Mr. George Alexander Lucien",male,,0,0,PC 17607,39.6,,S +1183,3,"Daly, Miss. Margaret Marcella Maggie""""",female,30,0,0,382650,6.95,,Q +1184,3,"Nasr, Mr. Mustafa",male,,0,0,2652,7.2292,,C +1185,1,"Dodge, Dr. Washington",male,53,1,1,33638,81.8583,A34,S +1186,3,"Wittevrongel, Mr. Camille",male,36,0,0,345771,9.5,,S +1187,3,"Angheloff, Mr. Minko",male,26,0,0,349202,7.8958,,S +1188,2,"Laroche, Miss. Louise",female,1,1,2,SC/Paris 2123,41.5792,,C +1189,3,"Samaan, Mr. Hanna",male,,2,0,2662,21.6792,,C +1190,1,"Loring, Mr. Joseph Holland",male,30,0,0,113801,45.5,,S +1191,3,"Johansson, Mr. Nils",male,29,0,0,347467,7.8542,,S +1192,3,"Olsson, Mr. Oscar Wilhelm",male,32,0,0,347079,7.775,,S +1193,2,"Malachard, Mr. Noel",male,,0,0,237735,15.0458,D,C +1194,2,"Phillips, Mr. Escott Robert",male,43,0,1,S.O./P.P. 2,21,,S +1195,3,"Pokrnic, Mr. Tome",male,24,0,0,315092,8.6625,,S +1196,3,"McCarthy, Miss. Catherine Katie""""",female,,0,0,383123,7.75,,Q +1197,1,"Crosby, Mrs. Edward Gifford (Catherine Elizabeth Halstead)",female,64,1,1,112901,26.55,B26,S +1198,1,"Allison, Mr. Hudson Joshua Creighton",male,30,1,2,113781,151.55,C22 C26,S +1199,3,"Aks, Master. Philip Frank",male,0.83,0,1,392091,9.35,,S +1200,1,"Hays, Mr. Charles Melville",male,55,1,1,12749,93.5,B69,S +1201,3,"Hansen, Mrs. Claus Peter (Jennie L Howard)",female,45,1,0,350026,14.1083,,S +1202,3,"Cacic, Mr. Jego Grga",male,18,0,0,315091,8.6625,,S +1203,3,"Vartanian, Mr. David",male,22,0,0,2658,7.225,,C +1204,3,"Sadowitz, Mr. Harry",male,,0,0,LP 1588,7.575,,S +1205,3,"Carr, Miss. Jeannie",female,37,0,0,368364,7.75,,Q +1206,1,"White, Mrs. John Stuart (Ella Holmes)",female,55,0,0,PC 17760,135.6333,C32,C +1207,3,"Hagardon, Miss. Kate",female,17,0,0,AQ/3. 30631,7.7333,,Q +1208,1,"Spencer, Mr. William Augustus",male,57,1,0,PC 17569,146.5208,B78,C +1209,2,"Rogers, Mr. Reginald Harry",male,19,0,0,28004,10.5,,S +1210,3,"Jonsson, Mr. Nils Hilding",male,27,0,0,350408,7.8542,,S +1211,2,"Jefferys, Mr. Ernest Wilfred",male,22,2,0,C.A. 31029,31.5,,S +1212,3,"Andersson, Mr. Johan Samuel",male,26,0,0,347075,7.775,,S +1213,3,"Krekorian, Mr. Neshan",male,25,0,0,2654,7.2292,F E57,C +1214,2,"Nesson, Mr. Israel",male,26,0,0,244368,13,F2,S +1215,1,"Rowe, Mr. Alfred G",male,33,0,0,113790,26.55,,S +1216,1,"Kreuchen, Miss. Emilie",female,39,0,0,24160,211.3375,,S +1217,3,"Assam, Mr. Ali",male,23,0,0,SOTON/O.Q. 3101309,7.05,,S +1218,2,"Becker, Miss. Ruth Elizabeth",female,12,2,1,230136,39,F4,S +1219,1,"Rosenshine, Mr. George (Mr George Thorne"")""",male,46,0,0,PC 17585,79.2,,C +1220,2,"Clarke, Mr. Charles Valentine",male,29,1,0,2003,26,,S +1221,2,"Enander, Mr. Ingvar",male,21,0,0,236854,13,,S +1222,2,"Davies, Mrs. John Morgan (Elizabeth Agnes Mary White) ",female,48,0,2,C.A. 33112,36.75,,S +1223,1,"Dulles, Mr. William Crothers",male,39,0,0,PC 17580,29.7,A18,C +1224,3,"Thomas, Mr. Tannous",male,,0,0,2684,7.225,,C +1225,3,"Nakid, Mrs. Said (Waika Mary"" Mowad)""",female,19,1,1,2653,15.7417,,C +1226,3,"Cor, Mr. Ivan",male,27,0,0,349229,7.8958,,S +1227,1,"Maguire, Mr. John Edward",male,30,0,0,110469,26,C106,S +1228,2,"de Brito, Mr. Jose Joaquim",male,32,0,0,244360,13,,S +1229,3,"Elias, Mr. Joseph",male,39,0,2,2675,7.2292,,C +1230,2,"Denbury, Mr. Herbert",male,25,0,0,C.A. 31029,31.5,,S +1231,3,"Betros, Master. Seman",male,,0,0,2622,7.2292,,C +1232,2,"Fillbrook, Mr. Joseph Charles",male,18,0,0,C.A. 15185,10.5,,S +1233,3,"Lundstrom, Mr. Thure Edvin",male,32,0,0,350403,7.5792,,S +1234,3,"Sage, Mr. John George",male,,1,9,CA. 2343,69.55,,S +1235,1,"Cardeza, Mrs. James Warburton Martinez (Charlotte Wardle Drake)",female,58,0,1,PC 17755,512.3292,B51 B53 B55,C +1236,3,"van Billiard, Master. James William",male,,1,1,A/5. 851,14.5,,S +1237,3,"Abelseth, Miss. Karen Marie",female,16,0,0,348125,7.65,,S +1238,2,"Botsford, Mr. William Hull",male,26,0,0,237670,13,,S +1239,3,"Whabee, Mrs. George Joseph (Shawneene Abi-Saab)",female,38,0,0,2688,7.2292,,C +1240,2,"Giles, Mr. Ralph",male,24,0,0,248726,13.5,,S +1241,2,"Walcroft, Miss. Nellie",female,31,0,0,F.C.C. 13528,21,,S +1242,1,"Greenfield, Mrs. Leo David (Blanche Strouse)",female,45,0,1,PC 17759,63.3583,D10 D12,C +1243,2,"Stokes, Mr. Philip Joseph",male,25,0,0,F.C.C. 13540,10.5,,S +1244,2,"Dibden, Mr. William",male,18,0,0,S.O.C. 14879,73.5,,S +1245,2,"Herman, Mr. Samuel",male,49,1,2,220845,65,,S +1246,3,"Dean, Miss. Elizabeth Gladys Millvina""""",female,0.17,1,2,C.A. 2315,20.575,,S +1247,1,"Julian, Mr. Henry Forbes",male,50,0,0,113044,26,E60,S +1248,1,"Brown, Mrs. John Murray (Caroline Lane Lamson)",female,59,2,0,11769,51.4792,C101,S +1249,3,"Lockyer, Mr. Edward",male,,0,0,1222,7.8792,,S +1250,3,"O'Keefe, Mr. Patrick",male,,0,0,368402,7.75,,Q +1251,3,"Lindell, Mrs. Edvard Bengtsson (Elin Gerda Persson)",female,30,1,0,349910,15.55,,S +1252,3,"Sage, Master. William Henry",male,14.5,8,2,CA. 2343,69.55,,S +1253,2,"Mallet, Mrs. Albert (Antoinette Magnin)",female,24,1,1,S.C./PARIS 2079,37.0042,,C +1254,2,"Ware, Mrs. John James (Florence Louise Long)",female,31,0,0,CA 31352,21,,S +1255,3,"Strilic, Mr. Ivan",male,27,0,0,315083,8.6625,,S +1256,1,"Harder, Mrs. George Achilles (Dorothy Annan)",female,25,1,0,11765,55.4417,E50,C +1257,3,"Sage, Mrs. John (Annie Bullen)",female,,1,9,CA. 2343,69.55,,S +1258,3,"Caram, Mr. Joseph",male,,1,0,2689,14.4583,,C +1259,3,"Riihivouri, Miss. Susanna Juhantytar Sanni""""",female,22,0,0,3101295,39.6875,,S +1260,1,"Gibson, Mrs. Leonard (Pauline C Boeson)",female,45,0,1,112378,59.4,,C +1261,2,"Pallas y Castello, Mr. Emilio",male,29,0,0,SC/PARIS 2147,13.8583,,C +1262,2,"Giles, Mr. Edgar",male,21,1,0,28133,11.5,,S +1263,1,"Wilson, Miss. Helen Alice",female,31,0,0,16966,134.5,E39 E41,C +1264,1,"Ismay, Mr. Joseph Bruce",male,49,0,0,112058,0,B52 B54 B56,S +1265,2,"Harbeck, Mr. William H",male,44,0,0,248746,13,,S +1266,1,"Dodge, Mrs. Washington (Ruth Vidaver)",female,54,1,1,33638,81.8583,A34,S +1267,1,"Bowen, Miss. Grace Scott",female,45,0,0,PC 17608,262.375,,C +1268,3,"Kink, Miss. Maria",female,22,2,0,315152,8.6625,,S +1269,2,"Cotterill, Mr. Henry Harry""""",male,21,0,0,29107,11.5,,S +1270,1,"Hipkins, Mr. William Edward",male,55,0,0,680,50,C39,S +1271,3,"Asplund, Master. Carl Edgar",male,5,4,2,347077,31.3875,,S +1272,3,"O'Connor, Mr. Patrick",male,,0,0,366713,7.75,,Q +1273,3,"Foley, Mr. Joseph",male,26,0,0,330910,7.8792,,Q +1274,3,"Risien, Mrs. Samuel (Emma)",female,,0,0,364498,14.5,,S +1275,3,"McNamee, Mrs. Neal (Eileen O'Leary)",female,19,1,0,376566,16.1,,S +1276,2,"Wheeler, Mr. Edwin Frederick""""",male,,0,0,SC/PARIS 2159,12.875,,S +1277,2,"Herman, Miss. Kate",female,24,1,2,220845,65,,S +1278,3,"Aronsson, Mr. Ernst Axel Algot",male,24,0,0,349911,7.775,,S +1279,2,"Ashby, Mr. John",male,57,0,0,244346,13,,S +1280,3,"Canavan, Mr. Patrick",male,21,0,0,364858,7.75,,Q +1281,3,"Palsson, Master. Paul Folke",male,6,3,1,349909,21.075,,S +1282,1,"Payne, Mr. Vivian Ponsonby",male,23,0,0,12749,93.5,B24,S +1283,1,"Lines, Mrs. Ernest H (Elizabeth Lindsey James)",female,51,0,1,PC 17592,39.4,D28,S +1284,3,"Abbott, Master. Eugene Joseph",male,13,0,2,C.A. 2673,20.25,,S +1285,2,"Gilbert, Mr. William",male,47,0,0,C.A. 30769,10.5,,S +1286,3,"Kink-Heilmann, Mr. Anton",male,29,3,1,315153,22.025,,S +1287,1,"Smith, Mrs. Lucien Philip (Mary Eloise Hughes)",female,18,1,0,13695,60,C31,S +1288,3,"Colbert, Mr. Patrick",male,24,0,0,371109,7.25,,Q +1289,1,"Frolicher-Stehli, Mrs. Maxmillian (Margaretha Emerentia Stehli)",female,48,1,1,13567,79.2,B41,C +1290,3,"Larsson-Rondberg, Mr. Edvard A",male,22,0,0,347065,7.775,,S +1291,3,"Conlon, Mr. Thomas Henry",male,31,0,0,21332,7.7333,,Q +1292,1,"Bonnell, Miss. Caroline",female,30,0,0,36928,164.8667,C7,S +1293,2,"Gale, Mr. Harry",male,38,1,0,28664,21,,S +1294,1,"Gibson, Miss. Dorothy Winifred",female,22,0,1,112378,59.4,,C +1295,1,"Carrau, Mr. Jose Pedro",male,17,0,0,113059,47.1,,S +1296,1,"Frauenthal, Mr. Isaac Gerald",male,43,1,0,17765,27.7208,D40,C +1297,2,"Nourney, Mr. Alfred (Baron von Drachstedt"")""",male,20,0,0,SC/PARIS 2166,13.8625,D38,C +1298,2,"Ware, Mr. William Jeffery",male,23,1,0,28666,10.5,,S +1299,1,"Widener, Mr. George Dunton",male,50,1,1,113503,211.5,C80,C +1300,3,"Riordan, Miss. Johanna Hannah""""",female,,0,0,334915,7.7208,,Q +1301,3,"Peacock, Miss. Treasteall",female,3,1,1,SOTON/O.Q. 3101315,13.775,,S +1302,3,"Naughton, Miss. Hannah",female,,0,0,365237,7.75,,Q +1303,1,"Minahan, Mrs. William Edward (Lillian E Thorpe)",female,37,1,0,19928,90,C78,Q +1304,3,"Henriksson, Miss. Jenny Lovisa",female,28,0,0,347086,7.775,,S +1305,3,"Spector, Mr. Woolf",male,,0,0,A.5. 3236,8.05,,S +1306,1,"Oliva y Ocana, Dona. Fermina",female,39,0,0,PC 17758,108.9,C105,C +1307,3,"Saether, Mr. Simon Sivertsen",male,38.5,0,0,SOTON/O.Q. 3101262,7.25,,S +1308,3,"Ware, Mr. Frederick",male,,0,0,359309,8.05,,S +1309,3,"Peter, Master. Michael J",male,,1,1,2668,22.3583,,C diff --git a/data/train.csv b/data/train.csv new file mode 100644 index 0000000..63b68ab --- /dev/null +++ b/data/train.csv @@ -0,0 +1,892 @@ +PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S +2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C +3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S +4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S +5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S +6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q +7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S +8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S +9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S +10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C +11,1,3,"Sandstrom, Miss. Marguerite Rut",female,4,1,1,PP 9549,16.7,G6,S +12,1,1,"Bonnell, Miss. Elizabeth",female,58,0,0,113783,26.55,C103,S +13,0,3,"Saundercock, Mr. William Henry",male,20,0,0,A/5. 2151,8.05,,S +14,0,3,"Andersson, Mr. Anders Johan",male,39,1,5,347082,31.275,,S +15,0,3,"Vestrom, Miss. Hulda Amanda Adolfina",female,14,0,0,350406,7.8542,,S +16,1,2,"Hewlett, Mrs. (Mary D Kingcome) ",female,55,0,0,248706,16,,S +17,0,3,"Rice, Master. Eugene",male,2,4,1,382652,29.125,,Q +18,1,2,"Williams, Mr. Charles Eugene",male,,0,0,244373,13,,S +19,0,3,"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)",female,31,1,0,345763,18,,S +20,1,3,"Masselmani, Mrs. Fatima",female,,0,0,2649,7.225,,C +21,0,2,"Fynney, Mr. Joseph J",male,35,0,0,239865,26,,S +22,1,2,"Beesley, Mr. Lawrence",male,34,0,0,248698,13,D56,S +23,1,3,"McGowan, Miss. Anna ""Annie""",female,15,0,0,330923,8.0292,,Q +24,1,1,"Sloper, Mr. William Thompson",male,28,0,0,113788,35.5,A6,S +25,0,3,"Palsson, Miss. Torborg Danira",female,8,3,1,349909,21.075,,S +26,1,3,"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)",female,38,1,5,347077,31.3875,,S +27,0,3,"Emir, Mr. Farred Chehab",male,,0,0,2631,7.225,,C +28,0,1,"Fortune, Mr. Charles Alexander",male,19,3,2,19950,263,C23 C25 C27,S +29,1,3,"O'Dwyer, Miss. Ellen ""Nellie""",female,,0,0,330959,7.8792,,Q +30,0,3,"Todoroff, Mr. Lalio",male,,0,0,349216,7.8958,,S +31,0,1,"Uruchurtu, Don. Manuel E",male,40,0,0,PC 17601,27.7208,,C +32,1,1,"Spencer, Mrs. William Augustus (Marie Eugenie)",female,,1,0,PC 17569,146.5208,B78,C +33,1,3,"Glynn, Miss. Mary Agatha",female,,0,0,335677,7.75,,Q +34,0,2,"Wheadon, Mr. Edward H",male,66,0,0,C.A. 24579,10.5,,S +35,0,1,"Meyer, Mr. Edgar Joseph",male,28,1,0,PC 17604,82.1708,,C +36,0,1,"Holverson, Mr. Alexander Oskar",male,42,1,0,113789,52,,S +37,1,3,"Mamee, Mr. Hanna",male,,0,0,2677,7.2292,,C +38,0,3,"Cann, Mr. Ernest Charles",male,21,0,0,A./5. 2152,8.05,,S +39,0,3,"Vander Planke, Miss. Augusta Maria",female,18,2,0,345764,18,,S +40,1,3,"Nicola-Yarred, Miss. Jamila",female,14,1,0,2651,11.2417,,C +41,0,3,"Ahlin, Mrs. Johan (Johanna Persdotter Larsson)",female,40,1,0,7546,9.475,,S +42,0,2,"Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)",female,27,1,0,11668,21,,S +43,0,3,"Kraeff, Mr. Theodor",male,,0,0,349253,7.8958,,C +44,1,2,"Laroche, Miss. Simonne Marie Anne Andree",female,3,1,2,SC/Paris 2123,41.5792,,C +45,1,3,"Devaney, Miss. Margaret Delia",female,19,0,0,330958,7.8792,,Q +46,0,3,"Rogers, Mr. William John",male,,0,0,S.C./A.4. 23567,8.05,,S +47,0,3,"Lennon, Mr. Denis",male,,1,0,370371,15.5,,Q +48,1,3,"O'Driscoll, Miss. Bridget",female,,0,0,14311,7.75,,Q +49,0,3,"Samaan, Mr. Youssef",male,,2,0,2662,21.6792,,C +50,0,3,"Arnold-Franchi, Mrs. Josef (Josefine Franchi)",female,18,1,0,349237,17.8,,S +51,0,3,"Panula, Master. Juha Niilo",male,7,4,1,3101295,39.6875,,S +52,0,3,"Nosworthy, Mr. Richard Cater",male,21,0,0,A/4. 39886,7.8,,S +53,1,1,"Harper, Mrs. Henry Sleeper (Myna Haxtun)",female,49,1,0,PC 17572,76.7292,D33,C +54,1,2,"Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)",female,29,1,0,2926,26,,S +55,0,1,"Ostby, Mr. Engelhart Cornelius",male,65,0,1,113509,61.9792,B30,C +56,1,1,"Woolner, Mr. Hugh",male,,0,0,19947,35.5,C52,S +57,1,2,"Rugg, Miss. Emily",female,21,0,0,C.A. 31026,10.5,,S +58,0,3,"Novel, Mr. Mansouer",male,28.5,0,0,2697,7.2292,,C +59,1,2,"West, Miss. Constance Mirium",female,5,1,2,C.A. 34651,27.75,,S +60,0,3,"Goodwin, Master. William Frederick",male,11,5,2,CA 2144,46.9,,S +61,0,3,"Sirayanian, Mr. Orsen",male,22,0,0,2669,7.2292,,C +62,1,1,"Icard, Miss. Amelie",female,38,0,0,113572,80,B28, +63,0,1,"Harris, Mr. Henry Birkhardt",male,45,1,0,36973,83.475,C83,S +64,0,3,"Skoog, Master. Harald",male,4,3,2,347088,27.9,,S +65,0,1,"Stewart, Mr. Albert A",male,,0,0,PC 17605,27.7208,,C +66,1,3,"Moubarek, Master. Gerios",male,,1,1,2661,15.2458,,C +67,1,2,"Nye, Mrs. (Elizabeth Ramell)",female,29,0,0,C.A. 29395,10.5,F33,S +68,0,3,"Crease, Mr. Ernest James",male,19,0,0,S.P. 3464,8.1583,,S +69,1,3,"Andersson, Miss. Erna Alexandra",female,17,4,2,3101281,7.925,,S +70,0,3,"Kink, Mr. Vincenz",male,26,2,0,315151,8.6625,,S +71,0,2,"Jenkin, Mr. Stephen Curnow",male,32,0,0,C.A. 33111,10.5,,S +72,0,3,"Goodwin, Miss. Lillian Amy",female,16,5,2,CA 2144,46.9,,S +73,0,2,"Hood, Mr. Ambrose Jr",male,21,0,0,S.O.C. 14879,73.5,,S +74,0,3,"Chronopoulos, Mr. Apostolos",male,26,1,0,2680,14.4542,,C +75,1,3,"Bing, Mr. Lee",male,32,0,0,1601,56.4958,,S +76,0,3,"Moen, Mr. Sigurd Hansen",male,25,0,0,348123,7.65,F G73,S +77,0,3,"Staneff, Mr. Ivan",male,,0,0,349208,7.8958,,S +78,0,3,"Moutal, Mr. Rahamin Haim",male,,0,0,374746,8.05,,S +79,1,2,"Caldwell, Master. Alden Gates",male,0.83,0,2,248738,29,,S +80,1,3,"Dowdell, Miss. Elizabeth",female,30,0,0,364516,12.475,,S +81,0,3,"Waelens, Mr. Achille",male,22,0,0,345767,9,,S +82,1,3,"Sheerlinck, Mr. Jan Baptist",male,29,0,0,345779,9.5,,S +83,1,3,"McDermott, Miss. Brigdet Delia",female,,0,0,330932,7.7875,,Q +84,0,1,"Carrau, Mr. Francisco M",male,28,0,0,113059,47.1,,S +85,1,2,"Ilett, Miss. Bertha",female,17,0,0,SO/C 14885,10.5,,S +86,1,3,"Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)",female,33,3,0,3101278,15.85,,S +87,0,3,"Ford, Mr. William Neal",male,16,1,3,W./C. 6608,34.375,,S +88,0,3,"Slocovski, Mr. Selman Francis",male,,0,0,SOTON/OQ 392086,8.05,,S +89,1,1,"Fortune, Miss. Mabel Helen",female,23,3,2,19950,263,C23 C25 C27,S +90,0,3,"Celotti, Mr. Francesco",male,24,0,0,343275,8.05,,S +91,0,3,"Christmann, Mr. Emil",male,29,0,0,343276,8.05,,S +92,0,3,"Andreasson, Mr. Paul Edvin",male,20,0,0,347466,7.8542,,S +93,0,1,"Chaffee, Mr. Herbert Fuller",male,46,1,0,W.E.P. 5734,61.175,E31,S +94,0,3,"Dean, Mr. Bertram Frank",male,26,1,2,C.A. 2315,20.575,,S +95,0,3,"Coxon, Mr. Daniel",male,59,0,0,364500,7.25,,S +96,0,3,"Shorney, Mr. Charles Joseph",male,,0,0,374910,8.05,,S +97,0,1,"Goldschmidt, Mr. George B",male,71,0,0,PC 17754,34.6542,A5,C +98,1,1,"Greenfield, Mr. William Bertram",male,23,0,1,PC 17759,63.3583,D10 D12,C +99,1,2,"Doling, Mrs. John T (Ada Julia Bone)",female,34,0,1,231919,23,,S +100,0,2,"Kantor, Mr. Sinai",male,34,1,0,244367,26,,S +101,0,3,"Petranec, Miss. Matilda",female,28,0,0,349245,7.8958,,S +102,0,3,"Petroff, Mr. Pastcho (""Pentcho"")",male,,0,0,349215,7.8958,,S +103,0,1,"White, Mr. Richard Frasar",male,21,0,1,35281,77.2875,D26,S +104,0,3,"Johansson, Mr. Gustaf Joel",male,33,0,0,7540,8.6542,,S +105,0,3,"Gustafsson, Mr. Anders Vilhelm",male,37,2,0,3101276,7.925,,S +106,0,3,"Mionoff, Mr. Stoytcho",male,28,0,0,349207,7.8958,,S +107,1,3,"Salkjelsvik, Miss. Anna Kristine",female,21,0,0,343120,7.65,,S +108,1,3,"Moss, Mr. Albert Johan",male,,0,0,312991,7.775,,S +109,0,3,"Rekic, Mr. Tido",male,38,0,0,349249,7.8958,,S +110,1,3,"Moran, Miss. Bertha",female,,1,0,371110,24.15,,Q +111,0,1,"Porter, Mr. Walter Chamberlain",male,47,0,0,110465,52,C110,S +112,0,3,"Zabour, Miss. Hileni",female,14.5,1,0,2665,14.4542,,C +113,0,3,"Barton, Mr. David John",male,22,0,0,324669,8.05,,S +114,0,3,"Jussila, Miss. Katriina",female,20,1,0,4136,9.825,,S +115,0,3,"Attalah, Miss. Malake",female,17,0,0,2627,14.4583,,C +116,0,3,"Pekoniemi, Mr. Edvard",male,21,0,0,STON/O 2. 3101294,7.925,,S +117,0,3,"Connors, Mr. Patrick",male,70.5,0,0,370369,7.75,,Q +118,0,2,"Turpin, Mr. William John Robert",male,29,1,0,11668,21,,S +119,0,1,"Baxter, Mr. Quigg Edmond",male,24,0,1,PC 17558,247.5208,B58 B60,C +120,0,3,"Andersson, Miss. Ellis Anna Maria",female,2,4,2,347082,31.275,,S +121,0,2,"Hickman, Mr. Stanley George",male,21,2,0,S.O.C. 14879,73.5,,S +122,0,3,"Moore, Mr. Leonard Charles",male,,0,0,A4. 54510,8.05,,S +123,0,2,"Nasser, Mr. Nicholas",male,32.5,1,0,237736,30.0708,,C +124,1,2,"Webber, Miss. Susan",female,32.5,0,0,27267,13,E101,S +125,0,1,"White, Mr. Percival Wayland",male,54,0,1,35281,77.2875,D26,S +126,1,3,"Nicola-Yarred, Master. Elias",male,12,1,0,2651,11.2417,,C +127,0,3,"McMahon, Mr. Martin",male,,0,0,370372,7.75,,Q +128,1,3,"Madsen, Mr. Fridtjof Arne",male,24,0,0,C 17369,7.1417,,S +129,1,3,"Peter, Miss. Anna",female,,1,1,2668,22.3583,F E69,C +130,0,3,"Ekstrom, Mr. Johan",male,45,0,0,347061,6.975,,S +131,0,3,"Drazenoic, Mr. Jozef",male,33,0,0,349241,7.8958,,C +132,0,3,"Coelho, Mr. Domingos Fernandeo",male,20,0,0,SOTON/O.Q. 3101307,7.05,,S +133,0,3,"Robins, Mrs. Alexander A (Grace Charity Laury)",female,47,1,0,A/5. 3337,14.5,,S +134,1,2,"Weisz, Mrs. Leopold (Mathilde Francoise Pede)",female,29,1,0,228414,26,,S +135,0,2,"Sobey, Mr. Samuel James Hayden",male,25,0,0,C.A. 29178,13,,S +136,0,2,"Richard, Mr. Emile",male,23,0,0,SC/PARIS 2133,15.0458,,C +137,1,1,"Newsom, Miss. Helen Monypeny",female,19,0,2,11752,26.2833,D47,S +138,0,1,"Futrelle, Mr. Jacques Heath",male,37,1,0,113803,53.1,C123,S +139,0,3,"Osen, Mr. Olaf Elon",male,16,0,0,7534,9.2167,,S +140,0,1,"Giglio, Mr. Victor",male,24,0,0,PC 17593,79.2,B86,C +141,0,3,"Boulos, Mrs. Joseph (Sultana)",female,,0,2,2678,15.2458,,C +142,1,3,"Nysten, Miss. Anna Sofia",female,22,0,0,347081,7.75,,S +143,1,3,"Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)",female,24,1,0,STON/O2. 3101279,15.85,,S +144,0,3,"Burke, Mr. Jeremiah",male,19,0,0,365222,6.75,,Q +145,0,2,"Andrew, Mr. Edgardo Samuel",male,18,0,0,231945,11.5,,S +146,0,2,"Nicholls, Mr. Joseph Charles",male,19,1,1,C.A. 33112,36.75,,S +147,1,3,"Andersson, Mr. August Edvard (""Wennerstrom"")",male,27,0,0,350043,7.7958,,S +148,0,3,"Ford, Miss. Robina Maggie ""Ruby""",female,9,2,2,W./C. 6608,34.375,,S +149,0,2,"Navratil, Mr. Michel (""Louis M Hoffman"")",male,36.5,0,2,230080,26,F2,S +150,0,2,"Byles, Rev. Thomas Roussel Davids",male,42,0,0,244310,13,,S +151,0,2,"Bateman, Rev. Robert James",male,51,0,0,S.O.P. 1166,12.525,,S +152,1,1,"Pears, Mrs. Thomas (Edith Wearne)",female,22,1,0,113776,66.6,C2,S +153,0,3,"Meo, Mr. Alfonzo",male,55.5,0,0,A.5. 11206,8.05,,S +154,0,3,"van Billiard, Mr. Austin Blyler",male,40.5,0,2,A/5. 851,14.5,,S +155,0,3,"Olsen, Mr. Ole Martin",male,,0,0,Fa 265302,7.3125,,S +156,0,1,"Williams, Mr. Charles Duane",male,51,0,1,PC 17597,61.3792,,C +157,1,3,"Gilnagh, Miss. Katherine ""Katie""",female,16,0,0,35851,7.7333,,Q +158,0,3,"Corn, Mr. Harry",male,30,0,0,SOTON/OQ 392090,8.05,,S +159,0,3,"Smiljanic, Mr. Mile",male,,0,0,315037,8.6625,,S +160,0,3,"Sage, Master. Thomas Henry",male,,8,2,CA. 2343,69.55,,S +161,0,3,"Cribb, Mr. John Hatfield",male,44,0,1,371362,16.1,,S +162,1,2,"Watt, Mrs. James (Elizabeth ""Bessie"" Inglis Milne)",female,40,0,0,C.A. 33595,15.75,,S +163,0,3,"Bengtsson, Mr. John Viktor",male,26,0,0,347068,7.775,,S +164,0,3,"Calic, Mr. Jovo",male,17,0,0,315093,8.6625,,S +165,0,3,"Panula, Master. Eino Viljami",male,1,4,1,3101295,39.6875,,S +166,1,3,"Goldsmith, Master. Frank John William ""Frankie""",male,9,0,2,363291,20.525,,S +167,1,1,"Chibnall, Mrs. (Edith Martha Bowerman)",female,,0,1,113505,55,E33,S +168,0,3,"Skoog, Mrs. William (Anna Bernhardina Karlsson)",female,45,1,4,347088,27.9,,S +169,0,1,"Baumann, Mr. John D",male,,0,0,PC 17318,25.925,,S +170,0,3,"Ling, Mr. Lee",male,28,0,0,1601,56.4958,,S +171,0,1,"Van der hoef, Mr. Wyckoff",male,61,0,0,111240,33.5,B19,S +172,0,3,"Rice, Master. Arthur",male,4,4,1,382652,29.125,,Q +173,1,3,"Johnson, Miss. Eleanor Ileen",female,1,1,1,347742,11.1333,,S +174,0,3,"Sivola, Mr. Antti Wilhelm",male,21,0,0,STON/O 2. 3101280,7.925,,S +175,0,1,"Smith, Mr. James Clinch",male,56,0,0,17764,30.6958,A7,C +176,0,3,"Klasen, Mr. Klas Albin",male,18,1,1,350404,7.8542,,S +177,0,3,"Lefebre, Master. Henry Forbes",male,,3,1,4133,25.4667,,S +178,0,1,"Isham, Miss. Ann Elizabeth",female,50,0,0,PC 17595,28.7125,C49,C +179,0,2,"Hale, Mr. Reginald",male,30,0,0,250653,13,,S +180,0,3,"Leonard, Mr. Lionel",male,36,0,0,LINE,0,,S +181,0,3,"Sage, Miss. Constance Gladys",female,,8,2,CA. 2343,69.55,,S +182,0,2,"Pernot, Mr. Rene",male,,0,0,SC/PARIS 2131,15.05,,C +183,0,3,"Asplund, Master. Clarence Gustaf Hugo",male,9,4,2,347077,31.3875,,S +184,1,2,"Becker, Master. Richard F",male,1,2,1,230136,39,F4,S +185,1,3,"Kink-Heilmann, Miss. Luise Gretchen",female,4,0,2,315153,22.025,,S +186,0,1,"Rood, Mr. Hugh Roscoe",male,,0,0,113767,50,A32,S +187,1,3,"O'Brien, Mrs. Thomas (Johanna ""Hannah"" Godfrey)",female,,1,0,370365,15.5,,Q +188,1,1,"Romaine, Mr. Charles Hallace (""Mr C Rolmane"")",male,45,0,0,111428,26.55,,S +189,0,3,"Bourke, Mr. John",male,40,1,1,364849,15.5,,Q +190,0,3,"Turcin, Mr. Stjepan",male,36,0,0,349247,7.8958,,S +191,1,2,"Pinsky, Mrs. (Rosa)",female,32,0,0,234604,13,,S +192,0,2,"Carbines, Mr. William",male,19,0,0,28424,13,,S +193,1,3,"Andersen-Jensen, Miss. Carla Christine Nielsine",female,19,1,0,350046,7.8542,,S +194,1,2,"Navratil, Master. Michel M",male,3,1,1,230080,26,F2,S +195,1,1,"Brown, Mrs. James Joseph (Margaret Tobin)",female,44,0,0,PC 17610,27.7208,B4,C +196,1,1,"Lurette, Miss. Elise",female,58,0,0,PC 17569,146.5208,B80,C +197,0,3,"Mernagh, Mr. Robert",male,,0,0,368703,7.75,,Q +198,0,3,"Olsen, Mr. Karl Siegwart Andreas",male,42,0,1,4579,8.4042,,S +199,1,3,"Madigan, Miss. Margaret ""Maggie""",female,,0,0,370370,7.75,,Q +200,0,2,"Yrois, Miss. Henriette (""Mrs Harbeck"")",female,24,0,0,248747,13,,S +201,0,3,"Vande Walle, Mr. Nestor Cyriel",male,28,0,0,345770,9.5,,S +202,0,3,"Sage, Mr. Frederick",male,,8,2,CA. 2343,69.55,,S +203,0,3,"Johanson, Mr. Jakob Alfred",male,34,0,0,3101264,6.4958,,S +204,0,3,"Youseff, Mr. Gerious",male,45.5,0,0,2628,7.225,,C +205,1,3,"Cohen, Mr. Gurshon ""Gus""",male,18,0,0,A/5 3540,8.05,,S +206,0,3,"Strom, Miss. Telma Matilda",female,2,0,1,347054,10.4625,G6,S +207,0,3,"Backstrom, Mr. Karl Alfred",male,32,1,0,3101278,15.85,,S +208,1,3,"Albimona, Mr. Nassef Cassem",male,26,0,0,2699,18.7875,,C +209,1,3,"Carr, Miss. Helen ""Ellen""",female,16,0,0,367231,7.75,,Q +210,1,1,"Blank, Mr. Henry",male,40,0,0,112277,31,A31,C +211,0,3,"Ali, Mr. Ahmed",male,24,0,0,SOTON/O.Q. 3101311,7.05,,S +212,1,2,"Cameron, Miss. Clear Annie",female,35,0,0,F.C.C. 13528,21,,S +213,0,3,"Perkin, Mr. John Henry",male,22,0,0,A/5 21174,7.25,,S +214,0,2,"Givard, Mr. Hans Kristensen",male,30,0,0,250646,13,,S +215,0,3,"Kiernan, Mr. Philip",male,,1,0,367229,7.75,,Q +216,1,1,"Newell, Miss. Madeleine",female,31,1,0,35273,113.275,D36,C +217,1,3,"Honkanen, Miss. Eliina",female,27,0,0,STON/O2. 3101283,7.925,,S +218,0,2,"Jacobsohn, Mr. Sidney Samuel",male,42,1,0,243847,27,,S +219,1,1,"Bazzani, Miss. Albina",female,32,0,0,11813,76.2917,D15,C +220,0,2,"Harris, Mr. Walter",male,30,0,0,W/C 14208,10.5,,S +221,1,3,"Sunderland, Mr. Victor Francis",male,16,0,0,SOTON/OQ 392089,8.05,,S +222,0,2,"Bracken, Mr. James H",male,27,0,0,220367,13,,S +223,0,3,"Green, Mr. George Henry",male,51,0,0,21440,8.05,,S +224,0,3,"Nenkoff, Mr. Christo",male,,0,0,349234,7.8958,,S +225,1,1,"Hoyt, Mr. Frederick Maxfield",male,38,1,0,19943,90,C93,S +226,0,3,"Berglund, Mr. Karl Ivar Sven",male,22,0,0,PP 4348,9.35,,S +227,1,2,"Mellors, Mr. William John",male,19,0,0,SW/PP 751,10.5,,S +228,0,3,"Lovell, Mr. John Hall (""Henry"")",male,20.5,0,0,A/5 21173,7.25,,S +229,0,2,"Fahlstrom, Mr. Arne Jonas",male,18,0,0,236171,13,,S +230,0,3,"Lefebre, Miss. Mathilde",female,,3,1,4133,25.4667,,S +231,1,1,"Harris, Mrs. Henry Birkhardt (Irene Wallach)",female,35,1,0,36973,83.475,C83,S +232,0,3,"Larsson, Mr. Bengt Edvin",male,29,0,0,347067,7.775,,S +233,0,2,"Sjostedt, Mr. Ernst Adolf",male,59,0,0,237442,13.5,,S +234,1,3,"Asplund, Miss. Lillian Gertrud",female,5,4,2,347077,31.3875,,S +235,0,2,"Leyson, Mr. Robert William Norman",male,24,0,0,C.A. 29566,10.5,,S +236,0,3,"Harknett, Miss. Alice Phoebe",female,,0,0,W./C. 6609,7.55,,S +237,0,2,"Hold, Mr. Stephen",male,44,1,0,26707,26,,S +238,1,2,"Collyer, Miss. Marjorie ""Lottie""",female,8,0,2,C.A. 31921,26.25,,S +239,0,2,"Pengelly, Mr. Frederick William",male,19,0,0,28665,10.5,,S +240,0,2,"Hunt, Mr. George Henry",male,33,0,0,SCO/W 1585,12.275,,S +241,0,3,"Zabour, Miss. Thamine",female,,1,0,2665,14.4542,,C +242,1,3,"Murphy, Miss. Katherine ""Kate""",female,,1,0,367230,15.5,,Q +243,0,2,"Coleridge, Mr. Reginald Charles",male,29,0,0,W./C. 14263,10.5,,S +244,0,3,"Maenpaa, Mr. Matti Alexanteri",male,22,0,0,STON/O 2. 3101275,7.125,,S +245,0,3,"Attalah, Mr. Sleiman",male,30,0,0,2694,7.225,,C +246,0,1,"Minahan, Dr. William Edward",male,44,2,0,19928,90,C78,Q +247,0,3,"Lindahl, Miss. Agda Thorilda Viktoria",female,25,0,0,347071,7.775,,S +248,1,2,"Hamalainen, Mrs. William (Anna)",female,24,0,2,250649,14.5,,S +249,1,1,"Beckwith, Mr. Richard Leonard",male,37,1,1,11751,52.5542,D35,S +250,0,2,"Carter, Rev. Ernest Courtenay",male,54,1,0,244252,26,,S +251,0,3,"Reed, Mr. James George",male,,0,0,362316,7.25,,S +252,0,3,"Strom, Mrs. Wilhelm (Elna Matilda Persson)",female,29,1,1,347054,10.4625,G6,S +253,0,1,"Stead, Mr. William Thomas",male,62,0,0,113514,26.55,C87,S +254,0,3,"Lobb, Mr. William Arthur",male,30,1,0,A/5. 3336,16.1,,S +255,0,3,"Rosblom, Mrs. Viktor (Helena Wilhelmina)",female,41,0,2,370129,20.2125,,S +256,1,3,"Touma, Mrs. Darwis (Hanne Youssef Razi)",female,29,0,2,2650,15.2458,,C +257,1,1,"Thorne, Mrs. Gertrude Maybelle",female,,0,0,PC 17585,79.2,,C +258,1,1,"Cherry, Miss. Gladys",female,30,0,0,110152,86.5,B77,S +259,1,1,"Ward, Miss. Anna",female,35,0,0,PC 17755,512.3292,,C +260,1,2,"Parrish, Mrs. (Lutie Davis)",female,50,0,1,230433,26,,S +261,0,3,"Smith, Mr. Thomas",male,,0,0,384461,7.75,,Q +262,1,3,"Asplund, Master. Edvin Rojj Felix",male,3,4,2,347077,31.3875,,S +263,0,1,"Taussig, Mr. Emil",male,52,1,1,110413,79.65,E67,S +264,0,1,"Harrison, Mr. William",male,40,0,0,112059,0,B94,S +265,0,3,"Henry, Miss. Delia",female,,0,0,382649,7.75,,Q +266,0,2,"Reeves, Mr. David",male,36,0,0,C.A. 17248,10.5,,S +267,0,3,"Panula, Mr. Ernesti Arvid",male,16,4,1,3101295,39.6875,,S +268,1,3,"Persson, Mr. Ernst Ulrik",male,25,1,0,347083,7.775,,S +269,1,1,"Graham, Mrs. William Thompson (Edith Junkins)",female,58,0,1,PC 17582,153.4625,C125,S +270,1,1,"Bissette, Miss. Amelia",female,35,0,0,PC 17760,135.6333,C99,S +271,0,1,"Cairns, Mr. Alexander",male,,0,0,113798,31,,S +272,1,3,"Tornquist, Mr. William Henry",male,25,0,0,LINE,0,,S +273,1,2,"Mellinger, Mrs. (Elizabeth Anne Maidment)",female,41,0,1,250644,19.5,,S +274,0,1,"Natsch, Mr. Charles H",male,37,0,1,PC 17596,29.7,C118,C +275,1,3,"Healy, Miss. Hanora ""Nora""",female,,0,0,370375,7.75,,Q +276,1,1,"Andrews, Miss. Kornelia Theodosia",female,63,1,0,13502,77.9583,D7,S +277,0,3,"Lindblom, Miss. Augusta Charlotta",female,45,0,0,347073,7.75,,S +278,0,2,"Parkes, Mr. Francis ""Frank""",male,,0,0,239853,0,,S +279,0,3,"Rice, Master. Eric",male,7,4,1,382652,29.125,,Q +280,1,3,"Abbott, Mrs. Stanton (Rosa Hunt)",female,35,1,1,C.A. 2673,20.25,,S +281,0,3,"Duane, Mr. Frank",male,65,0,0,336439,7.75,,Q +282,0,3,"Olsson, Mr. Nils Johan Goransson",male,28,0,0,347464,7.8542,,S +283,0,3,"de Pelsmaeker, Mr. Alfons",male,16,0,0,345778,9.5,,S +284,1,3,"Dorking, Mr. Edward Arthur",male,19,0,0,A/5. 10482,8.05,,S +285,0,1,"Smith, Mr. Richard William",male,,0,0,113056,26,A19,S +286,0,3,"Stankovic, Mr. Ivan",male,33,0,0,349239,8.6625,,C +287,1,3,"de Mulder, Mr. Theodore",male,30,0,0,345774,9.5,,S +288,0,3,"Naidenoff, Mr. Penko",male,22,0,0,349206,7.8958,,S +289,1,2,"Hosono, Mr. Masabumi",male,42,0,0,237798,13,,S +290,1,3,"Connolly, Miss. Kate",female,22,0,0,370373,7.75,,Q +291,1,1,"Barber, Miss. Ellen ""Nellie""",female,26,0,0,19877,78.85,,S +292,1,1,"Bishop, Mrs. Dickinson H (Helen Walton)",female,19,1,0,11967,91.0792,B49,C +293,0,2,"Levy, Mr. Rene Jacques",male,36,0,0,SC/Paris 2163,12.875,D,C +294,0,3,"Haas, Miss. Aloisia",female,24,0,0,349236,8.85,,S +295,0,3,"Mineff, Mr. Ivan",male,24,0,0,349233,7.8958,,S +296,0,1,"Lewy, Mr. Ervin G",male,,0,0,PC 17612,27.7208,,C +297,0,3,"Hanna, Mr. Mansour",male,23.5,0,0,2693,7.2292,,C +298,0,1,"Allison, Miss. Helen Loraine",female,2,1,2,113781,151.55,C22 C26,S +299,1,1,"Saalfeld, Mr. Adolphe",male,,0,0,19988,30.5,C106,S +300,1,1,"Baxter, Mrs. James (Helene DeLaudeniere Chaput)",female,50,0,1,PC 17558,247.5208,B58 B60,C +301,1,3,"Kelly, Miss. Anna Katherine ""Annie Kate""",female,,0,0,9234,7.75,,Q +302,1,3,"McCoy, Mr. Bernard",male,,2,0,367226,23.25,,Q +303,0,3,"Johnson, Mr. William Cahoone Jr",male,19,0,0,LINE,0,,S +304,1,2,"Keane, Miss. Nora A",female,,0,0,226593,12.35,E101,Q +305,0,3,"Williams, Mr. Howard Hugh ""Harry""",male,,0,0,A/5 2466,8.05,,S +306,1,1,"Allison, Master. Hudson Trevor",male,0.92,1,2,113781,151.55,C22 C26,S +307,1,1,"Fleming, Miss. Margaret",female,,0,0,17421,110.8833,,C +308,1,1,"Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)",female,17,1,0,PC 17758,108.9,C65,C +309,0,2,"Abelson, Mr. Samuel",male,30,1,0,P/PP 3381,24,,C +310,1,1,"Francatelli, Miss. Laura Mabel",female,30,0,0,PC 17485,56.9292,E36,C +311,1,1,"Hays, Miss. Margaret Bechstein",female,24,0,0,11767,83.1583,C54,C +312,1,1,"Ryerson, Miss. Emily Borie",female,18,2,2,PC 17608,262.375,B57 B59 B63 B66,C +313,0,2,"Lahtinen, Mrs. William (Anna Sylfven)",female,26,1,1,250651,26,,S +314,0,3,"Hendekovic, Mr. Ignjac",male,28,0,0,349243,7.8958,,S +315,0,2,"Hart, Mr. Benjamin",male,43,1,1,F.C.C. 13529,26.25,,S +316,1,3,"Nilsson, Miss. Helmina Josefina",female,26,0,0,347470,7.8542,,S +317,1,2,"Kantor, Mrs. Sinai (Miriam Sternin)",female,24,1,0,244367,26,,S +318,0,2,"Moraweck, Dr. Ernest",male,54,0,0,29011,14,,S +319,1,1,"Wick, Miss. Mary Natalie",female,31,0,2,36928,164.8667,C7,S +320,1,1,"Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)",female,40,1,1,16966,134.5,E34,C +321,0,3,"Dennis, Mr. Samuel",male,22,0,0,A/5 21172,7.25,,S +322,0,3,"Danoff, Mr. Yoto",male,27,0,0,349219,7.8958,,S +323,1,2,"Slayter, Miss. Hilda Mary",female,30,0,0,234818,12.35,,Q +324,1,2,"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)",female,22,1,1,248738,29,,S +325,0,3,"Sage, Mr. George John Jr",male,,8,2,CA. 2343,69.55,,S +326,1,1,"Young, Miss. Marie Grice",female,36,0,0,PC 17760,135.6333,C32,C +327,0,3,"Nysveen, Mr. Johan Hansen",male,61,0,0,345364,6.2375,,S +328,1,2,"Ball, Mrs. (Ada E Hall)",female,36,0,0,28551,13,D,S +329,1,3,"Goldsmith, Mrs. Frank John (Emily Alice Brown)",female,31,1,1,363291,20.525,,S +330,1,1,"Hippach, Miss. Jean Gertrude",female,16,0,1,111361,57.9792,B18,C +331,1,3,"McCoy, Miss. Agnes",female,,2,0,367226,23.25,,Q +332,0,1,"Partner, Mr. Austen",male,45.5,0,0,113043,28.5,C124,S +333,0,1,"Graham, Mr. George Edward",male,38,0,1,PC 17582,153.4625,C91,S +334,0,3,"Vander Planke, Mr. Leo Edmondus",male,16,2,0,345764,18,,S +335,1,1,"Frauenthal, Mrs. Henry William (Clara Heinsheimer)",female,,1,0,PC 17611,133.65,,S +336,0,3,"Denkoff, Mr. Mitto",male,,0,0,349225,7.8958,,S +337,0,1,"Pears, Mr. Thomas Clinton",male,29,1,0,113776,66.6,C2,S +338,1,1,"Burns, Miss. Elizabeth Margaret",female,41,0,0,16966,134.5,E40,C +339,1,3,"Dahl, Mr. Karl Edwart",male,45,0,0,7598,8.05,,S +340,0,1,"Blackwell, Mr. Stephen Weart",male,45,0,0,113784,35.5,T,S +341,1,2,"Navratil, Master. Edmond Roger",male,2,1,1,230080,26,F2,S +342,1,1,"Fortune, Miss. Alice Elizabeth",female,24,3,2,19950,263,C23 C25 C27,S +343,0,2,"Collander, Mr. Erik Gustaf",male,28,0,0,248740,13,,S +344,0,2,"Sedgwick, Mr. Charles Frederick Waddington",male,25,0,0,244361,13,,S +345,0,2,"Fox, Mr. Stanley Hubert",male,36,0,0,229236,13,,S +346,1,2,"Brown, Miss. Amelia ""Mildred""",female,24,0,0,248733,13,F33,S +347,1,2,"Smith, Miss. Marion Elsie",female,40,0,0,31418,13,,S +348,1,3,"Davison, Mrs. Thomas Henry (Mary E Finck)",female,,1,0,386525,16.1,,S +349,1,3,"Coutts, Master. William Loch ""William""",male,3,1,1,C.A. 37671,15.9,,S +350,0,3,"Dimic, Mr. Jovan",male,42,0,0,315088,8.6625,,S +351,0,3,"Odahl, Mr. Nils Martin",male,23,0,0,7267,9.225,,S +352,0,1,"Williams-Lambert, Mr. Fletcher Fellows",male,,0,0,113510,35,C128,S +353,0,3,"Elias, Mr. Tannous",male,15,1,1,2695,7.2292,,C +354,0,3,"Arnold-Franchi, Mr. Josef",male,25,1,0,349237,17.8,,S +355,0,3,"Yousif, Mr. Wazli",male,,0,0,2647,7.225,,C +356,0,3,"Vanden Steen, Mr. Leo Peter",male,28,0,0,345783,9.5,,S +357,1,1,"Bowerman, Miss. Elsie Edith",female,22,0,1,113505,55,E33,S +358,0,2,"Funk, Miss. Annie Clemmer",female,38,0,0,237671,13,,S +359,1,3,"McGovern, Miss. Mary",female,,0,0,330931,7.8792,,Q +360,1,3,"Mockler, Miss. Helen Mary ""Ellie""",female,,0,0,330980,7.8792,,Q +361,0,3,"Skoog, Mr. Wilhelm",male,40,1,4,347088,27.9,,S +362,0,2,"del Carlo, Mr. Sebastiano",male,29,1,0,SC/PARIS 2167,27.7208,,C +363,0,3,"Barbara, Mrs. (Catherine David)",female,45,0,1,2691,14.4542,,C +364,0,3,"Asim, Mr. Adola",male,35,0,0,SOTON/O.Q. 3101310,7.05,,S +365,0,3,"O'Brien, Mr. Thomas",male,,1,0,370365,15.5,,Q +366,0,3,"Adahl, Mr. Mauritz Nils Martin",male,30,0,0,C 7076,7.25,,S +367,1,1,"Warren, Mrs. Frank Manley (Anna Sophia Atkinson)",female,60,1,0,110813,75.25,D37,C +368,1,3,"Moussa, Mrs. (Mantoura Boulos)",female,,0,0,2626,7.2292,,C +369,1,3,"Jermyn, Miss. Annie",female,,0,0,14313,7.75,,Q +370,1,1,"Aubart, Mme. Leontine Pauline",female,24,0,0,PC 17477,69.3,B35,C +371,1,1,"Harder, Mr. George Achilles",male,25,1,0,11765,55.4417,E50,C +372,0,3,"Wiklund, Mr. Jakob Alfred",male,18,1,0,3101267,6.4958,,S +373,0,3,"Beavan, Mr. William Thomas",male,19,0,0,323951,8.05,,S +374,0,1,"Ringhini, Mr. Sante",male,22,0,0,PC 17760,135.6333,,C +375,0,3,"Palsson, Miss. Stina Viola",female,3,3,1,349909,21.075,,S +376,1,1,"Meyer, Mrs. Edgar Joseph (Leila Saks)",female,,1,0,PC 17604,82.1708,,C +377,1,3,"Landergren, Miss. Aurora Adelia",female,22,0,0,C 7077,7.25,,S +378,0,1,"Widener, Mr. Harry Elkins",male,27,0,2,113503,211.5,C82,C +379,0,3,"Betros, Mr. Tannous",male,20,0,0,2648,4.0125,,C +380,0,3,"Gustafsson, Mr. Karl Gideon",male,19,0,0,347069,7.775,,S +381,1,1,"Bidois, Miss. Rosalie",female,42,0,0,PC 17757,227.525,,C +382,1,3,"Nakid, Miss. Maria (""Mary"")",female,1,0,2,2653,15.7417,,C +383,0,3,"Tikkanen, Mr. Juho",male,32,0,0,STON/O 2. 3101293,7.925,,S +384,1,1,"Holverson, Mrs. Alexander Oskar (Mary Aline Towner)",female,35,1,0,113789,52,,S +385,0,3,"Plotcharsky, Mr. Vasil",male,,0,0,349227,7.8958,,S +386,0,2,"Davies, Mr. Charles Henry",male,18,0,0,S.O.C. 14879,73.5,,S +387,0,3,"Goodwin, Master. Sidney Leonard",male,1,5,2,CA 2144,46.9,,S +388,1,2,"Buss, Miss. Kate",female,36,0,0,27849,13,,S +389,0,3,"Sadlier, Mr. Matthew",male,,0,0,367655,7.7292,,Q +390,1,2,"Lehmann, Miss. Bertha",female,17,0,0,SC 1748,12,,C +391,1,1,"Carter, Mr. William Ernest",male,36,1,2,113760,120,B96 B98,S +392,1,3,"Jansson, Mr. Carl Olof",male,21,0,0,350034,7.7958,,S +393,0,3,"Gustafsson, Mr. Johan Birger",male,28,2,0,3101277,7.925,,S +394,1,1,"Newell, Miss. Marjorie",female,23,1,0,35273,113.275,D36,C +395,1,3,"Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)",female,24,0,2,PP 9549,16.7,G6,S +396,0,3,"Johansson, Mr. Erik",male,22,0,0,350052,7.7958,,S +397,0,3,"Olsson, Miss. Elina",female,31,0,0,350407,7.8542,,S +398,0,2,"McKane, Mr. Peter David",male,46,0,0,28403,26,,S +399,0,2,"Pain, Dr. Alfred",male,23,0,0,244278,10.5,,S +400,1,2,"Trout, Mrs. William H (Jessie L)",female,28,0,0,240929,12.65,,S +401,1,3,"Niskanen, Mr. Juha",male,39,0,0,STON/O 2. 3101289,7.925,,S +402,0,3,"Adams, Mr. John",male,26,0,0,341826,8.05,,S +403,0,3,"Jussila, Miss. Mari Aina",female,21,1,0,4137,9.825,,S +404,0,3,"Hakkarainen, Mr. Pekka Pietari",male,28,1,0,STON/O2. 3101279,15.85,,S +405,0,3,"Oreskovic, Miss. Marija",female,20,0,0,315096,8.6625,,S +406,0,2,"Gale, Mr. Shadrach",male,34,1,0,28664,21,,S +407,0,3,"Widegren, Mr. Carl/Charles Peter",male,51,0,0,347064,7.75,,S +408,1,2,"Richards, Master. William Rowe",male,3,1,1,29106,18.75,,S +409,0,3,"Birkeland, Mr. Hans Martin Monsen",male,21,0,0,312992,7.775,,S +410,0,3,"Lefebre, Miss. Ida",female,,3,1,4133,25.4667,,S +411,0,3,"Sdycoff, Mr. Todor",male,,0,0,349222,7.8958,,S +412,0,3,"Hart, Mr. Henry",male,,0,0,394140,6.8583,,Q +413,1,1,"Minahan, Miss. Daisy E",female,33,1,0,19928,90,C78,Q +414,0,2,"Cunningham, Mr. Alfred Fleming",male,,0,0,239853,0,,S +415,1,3,"Sundman, Mr. Johan Julian",male,44,0,0,STON/O 2. 3101269,7.925,,S +416,0,3,"Meek, Mrs. Thomas (Annie Louise Rowley)",female,,0,0,343095,8.05,,S +417,1,2,"Drew, Mrs. James Vivian (Lulu Thorne Christian)",female,34,1,1,28220,32.5,,S +418,1,2,"Silven, Miss. Lyyli Karoliina",female,18,0,2,250652,13,,S +419,0,2,"Matthews, Mr. William John",male,30,0,0,28228,13,,S +420,0,3,"Van Impe, Miss. Catharina",female,10,0,2,345773,24.15,,S +421,0,3,"Gheorgheff, Mr. Stanio",male,,0,0,349254,7.8958,,C +422,0,3,"Charters, Mr. David",male,21,0,0,A/5. 13032,7.7333,,Q +423,0,3,"Zimmerman, Mr. Leo",male,29,0,0,315082,7.875,,S +424,0,3,"Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)",female,28,1,1,347080,14.4,,S +425,0,3,"Rosblom, Mr. Viktor Richard",male,18,1,1,370129,20.2125,,S +426,0,3,"Wiseman, Mr. Phillippe",male,,0,0,A/4. 34244,7.25,,S +427,1,2,"Clarke, Mrs. Charles V (Ada Maria Winfield)",female,28,1,0,2003,26,,S +428,1,2,"Phillips, Miss. Kate Florence (""Mrs Kate Louise Phillips Marshall"")",female,19,0,0,250655,26,,S +429,0,3,"Flynn, Mr. James",male,,0,0,364851,7.75,,Q +430,1,3,"Pickard, Mr. Berk (Berk Trembisky)",male,32,0,0,SOTON/O.Q. 392078,8.05,E10,S +431,1,1,"Bjornstrom-Steffansson, Mr. Mauritz Hakan",male,28,0,0,110564,26.55,C52,S +432,1,3,"Thorneycroft, Mrs. Percival (Florence Kate White)",female,,1,0,376564,16.1,,S +433,1,2,"Louch, Mrs. Charles Alexander (Alice Adelaide Slow)",female,42,1,0,SC/AH 3085,26,,S +434,0,3,"Kallio, Mr. Nikolai Erland",male,17,0,0,STON/O 2. 3101274,7.125,,S +435,0,1,"Silvey, Mr. William Baird",male,50,1,0,13507,55.9,E44,S +436,1,1,"Carter, Miss. Lucile Polk",female,14,1,2,113760,120,B96 B98,S +437,0,3,"Ford, Miss. Doolina Margaret ""Daisy""",female,21,2,2,W./C. 6608,34.375,,S +438,1,2,"Richards, Mrs. Sidney (Emily Hocking)",female,24,2,3,29106,18.75,,S +439,0,1,"Fortune, Mr. Mark",male,64,1,4,19950,263,C23 C25 C27,S +440,0,2,"Kvillner, Mr. Johan Henrik Johannesson",male,31,0,0,C.A. 18723,10.5,,S +441,1,2,"Hart, Mrs. Benjamin (Esther Ada Bloomfield)",female,45,1,1,F.C.C. 13529,26.25,,S +442,0,3,"Hampe, Mr. Leon",male,20,0,0,345769,9.5,,S +443,0,3,"Petterson, Mr. Johan Emil",male,25,1,0,347076,7.775,,S +444,1,2,"Reynaldo, Ms. Encarnacion",female,28,0,0,230434,13,,S +445,1,3,"Johannesen-Bratthammer, Mr. Bernt",male,,0,0,65306,8.1125,,S +446,1,1,"Dodge, Master. Washington",male,4,0,2,33638,81.8583,A34,S +447,1,2,"Mellinger, Miss. Madeleine Violet",female,13,0,1,250644,19.5,,S +448,1,1,"Seward, Mr. Frederic Kimber",male,34,0,0,113794,26.55,,S +449,1,3,"Baclini, Miss. Marie Catherine",female,5,2,1,2666,19.2583,,C +450,1,1,"Peuchen, Major. Arthur Godfrey",male,52,0,0,113786,30.5,C104,S +451,0,2,"West, Mr. Edwy Arthur",male,36,1,2,C.A. 34651,27.75,,S +452,0,3,"Hagland, Mr. Ingvald Olai Olsen",male,,1,0,65303,19.9667,,S +453,0,1,"Foreman, Mr. Benjamin Laventall",male,30,0,0,113051,27.75,C111,C +454,1,1,"Goldenberg, Mr. Samuel L",male,49,1,0,17453,89.1042,C92,C +455,0,3,"Peduzzi, Mr. Joseph",male,,0,0,A/5 2817,8.05,,S +456,1,3,"Jalsevac, Mr. Ivan",male,29,0,0,349240,7.8958,,C +457,0,1,"Millet, Mr. Francis Davis",male,65,0,0,13509,26.55,E38,S +458,1,1,"Kenyon, Mrs. Frederick R (Marion)",female,,1,0,17464,51.8625,D21,S +459,1,2,"Toomey, Miss. Ellen",female,50,0,0,F.C.C. 13531,10.5,,S +460,0,3,"O'Connor, Mr. Maurice",male,,0,0,371060,7.75,,Q +461,1,1,"Anderson, Mr. Harry",male,48,0,0,19952,26.55,E12,S +462,0,3,"Morley, Mr. William",male,34,0,0,364506,8.05,,S +463,0,1,"Gee, Mr. Arthur H",male,47,0,0,111320,38.5,E63,S +464,0,2,"Milling, Mr. Jacob Christian",male,48,0,0,234360,13,,S +465,0,3,"Maisner, Mr. Simon",male,,0,0,A/S 2816,8.05,,S +466,0,3,"Goncalves, Mr. Manuel Estanslas",male,38,0,0,SOTON/O.Q. 3101306,7.05,,S +467,0,2,"Campbell, Mr. William",male,,0,0,239853,0,,S +468,0,1,"Smart, Mr. John Montgomery",male,56,0,0,113792,26.55,,S +469,0,3,"Scanlan, Mr. James",male,,0,0,36209,7.725,,Q +470,1,3,"Baclini, Miss. Helene Barbara",female,0.75,2,1,2666,19.2583,,C +471,0,3,"Keefe, Mr. Arthur",male,,0,0,323592,7.25,,S +472,0,3,"Cacic, Mr. Luka",male,38,0,0,315089,8.6625,,S +473,1,2,"West, Mrs. Edwy Arthur (Ada Mary Worth)",female,33,1,2,C.A. 34651,27.75,,S +474,1,2,"Jerwan, Mrs. Amin S (Marie Marthe Thuillard)",female,23,0,0,SC/AH Basle 541,13.7917,D,C +475,0,3,"Strandberg, Miss. Ida Sofia",female,22,0,0,7553,9.8375,,S +476,0,1,"Clifford, Mr. George Quincy",male,,0,0,110465,52,A14,S +477,0,2,"Renouf, Mr. Peter Henry",male,34,1,0,31027,21,,S +478,0,3,"Braund, Mr. Lewis Richard",male,29,1,0,3460,7.0458,,S +479,0,3,"Karlsson, Mr. Nils August",male,22,0,0,350060,7.5208,,S +480,1,3,"Hirvonen, Miss. Hildur E",female,2,0,1,3101298,12.2875,,S +481,0,3,"Goodwin, Master. Harold Victor",male,9,5,2,CA 2144,46.9,,S +482,0,2,"Frost, Mr. Anthony Wood ""Archie""",male,,0,0,239854,0,,S +483,0,3,"Rouse, Mr. Richard Henry",male,50,0,0,A/5 3594,8.05,,S +484,1,3,"Turkula, Mrs. (Hedwig)",female,63,0,0,4134,9.5875,,S +485,1,1,"Bishop, Mr. Dickinson H",male,25,1,0,11967,91.0792,B49,C +486,0,3,"Lefebre, Miss. Jeannie",female,,3,1,4133,25.4667,,S +487,1,1,"Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)",female,35,1,0,19943,90,C93,S +488,0,1,"Kent, Mr. Edward Austin",male,58,0,0,11771,29.7,B37,C +489,0,3,"Somerton, Mr. Francis William",male,30,0,0,A.5. 18509,8.05,,S +490,1,3,"Coutts, Master. Eden Leslie ""Neville""",male,9,1,1,C.A. 37671,15.9,,S +491,0,3,"Hagland, Mr. Konrad Mathias Reiersen",male,,1,0,65304,19.9667,,S +492,0,3,"Windelov, Mr. Einar",male,21,0,0,SOTON/OQ 3101317,7.25,,S +493,0,1,"Molson, Mr. Harry Markland",male,55,0,0,113787,30.5,C30,S +494,0,1,"Artagaveytia, Mr. Ramon",male,71,0,0,PC 17609,49.5042,,C +495,0,3,"Stanley, Mr. Edward Roland",male,21,0,0,A/4 45380,8.05,,S +496,0,3,"Yousseff, Mr. Gerious",male,,0,0,2627,14.4583,,C +497,1,1,"Eustis, Miss. Elizabeth Mussey",female,54,1,0,36947,78.2667,D20,C +498,0,3,"Shellard, Mr. Frederick William",male,,0,0,C.A. 6212,15.1,,S +499,0,1,"Allison, Mrs. Hudson J C (Bessie Waldo Daniels)",female,25,1,2,113781,151.55,C22 C26,S +500,0,3,"Svensson, Mr. Olof",male,24,0,0,350035,7.7958,,S +501,0,3,"Calic, Mr. Petar",male,17,0,0,315086,8.6625,,S +502,0,3,"Canavan, Miss. Mary",female,21,0,0,364846,7.75,,Q +503,0,3,"O'Sullivan, Miss. Bridget Mary",female,,0,0,330909,7.6292,,Q +504,0,3,"Laitinen, Miss. Kristina Sofia",female,37,0,0,4135,9.5875,,S +505,1,1,"Maioni, Miss. Roberta",female,16,0,0,110152,86.5,B79,S +506,0,1,"Penasco y Castellana, Mr. Victor de Satode",male,18,1,0,PC 17758,108.9,C65,C +507,1,2,"Quick, Mrs. Frederick Charles (Jane Richards)",female,33,0,2,26360,26,,S +508,1,1,"Bradley, Mr. George (""George Arthur Brayton"")",male,,0,0,111427,26.55,,S +509,0,3,"Olsen, Mr. Henry Margido",male,28,0,0,C 4001,22.525,,S +510,1,3,"Lang, Mr. Fang",male,26,0,0,1601,56.4958,,S +511,1,3,"Daly, Mr. Eugene Patrick",male,29,0,0,382651,7.75,,Q +512,0,3,"Webber, Mr. James",male,,0,0,SOTON/OQ 3101316,8.05,,S +513,1,1,"McGough, Mr. James Robert",male,36,0,0,PC 17473,26.2875,E25,S +514,1,1,"Rothschild, Mrs. Martin (Elizabeth L. Barrett)",female,54,1,0,PC 17603,59.4,,C +515,0,3,"Coleff, Mr. Satio",male,24,0,0,349209,7.4958,,S +516,0,1,"Walker, Mr. William Anderson",male,47,0,0,36967,34.0208,D46,S +517,1,2,"Lemore, Mrs. (Amelia Milley)",female,34,0,0,C.A. 34260,10.5,F33,S +518,0,3,"Ryan, Mr. Patrick",male,,0,0,371110,24.15,,Q +519,1,2,"Angle, Mrs. William A (Florence ""Mary"" Agnes Hughes)",female,36,1,0,226875,26,,S +520,0,3,"Pavlovic, Mr. Stefo",male,32,0,0,349242,7.8958,,S +521,1,1,"Perreault, Miss. Anne",female,30,0,0,12749,93.5,B73,S +522,0,3,"Vovk, Mr. Janko",male,22,0,0,349252,7.8958,,S +523,0,3,"Lahoud, Mr. Sarkis",male,,0,0,2624,7.225,,C +524,1,1,"Hippach, Mrs. Louis Albert (Ida Sophia Fischer)",female,44,0,1,111361,57.9792,B18,C +525,0,3,"Kassem, Mr. Fared",male,,0,0,2700,7.2292,,C +526,0,3,"Farrell, Mr. James",male,40.5,0,0,367232,7.75,,Q +527,1,2,"Ridsdale, Miss. Lucy",female,50,0,0,W./C. 14258,10.5,,S +528,0,1,"Farthing, Mr. John",male,,0,0,PC 17483,221.7792,C95,S +529,0,3,"Salonen, Mr. Johan Werner",male,39,0,0,3101296,7.925,,S +530,0,2,"Hocking, Mr. Richard George",male,23,2,1,29104,11.5,,S +531,1,2,"Quick, Miss. Phyllis May",female,2,1,1,26360,26,,S +532,0,3,"Toufik, Mr. Nakli",male,,0,0,2641,7.2292,,C +533,0,3,"Elias, Mr. Joseph Jr",male,17,1,1,2690,7.2292,,C +534,1,3,"Peter, Mrs. Catherine (Catherine Rizk)",female,,0,2,2668,22.3583,,C +535,0,3,"Cacic, Miss. Marija",female,30,0,0,315084,8.6625,,S +536,1,2,"Hart, Miss. Eva Miriam",female,7,0,2,F.C.C. 13529,26.25,,S +537,0,1,"Butt, Major. Archibald Willingham",male,45,0,0,113050,26.55,B38,S +538,1,1,"LeRoy, Miss. Bertha",female,30,0,0,PC 17761,106.425,,C +539,0,3,"Risien, Mr. Samuel Beard",male,,0,0,364498,14.5,,S +540,1,1,"Frolicher, Miss. Hedwig Margaritha",female,22,0,2,13568,49.5,B39,C +541,1,1,"Crosby, Miss. Harriet R",female,36,0,2,WE/P 5735,71,B22,S +542,0,3,"Andersson, Miss. Ingeborg Constanzia",female,9,4,2,347082,31.275,,S +543,0,3,"Andersson, Miss. Sigrid Elisabeth",female,11,4,2,347082,31.275,,S +544,1,2,"Beane, Mr. Edward",male,32,1,0,2908,26,,S +545,0,1,"Douglas, Mr. Walter Donald",male,50,1,0,PC 17761,106.425,C86,C +546,0,1,"Nicholson, Mr. Arthur Ernest",male,64,0,0,693,26,,S +547,1,2,"Beane, Mrs. Edward (Ethel Clarke)",female,19,1,0,2908,26,,S +548,1,2,"Padro y Manent, Mr. Julian",male,,0,0,SC/PARIS 2146,13.8625,,C +549,0,3,"Goldsmith, Mr. Frank John",male,33,1,1,363291,20.525,,S +550,1,2,"Davies, Master. John Morgan Jr",male,8,1,1,C.A. 33112,36.75,,S +551,1,1,"Thayer, Mr. John Borland Jr",male,17,0,2,17421,110.8833,C70,C +552,0,2,"Sharp, Mr. Percival James R",male,27,0,0,244358,26,,S +553,0,3,"O'Brien, Mr. Timothy",male,,0,0,330979,7.8292,,Q +554,1,3,"Leeni, Mr. Fahim (""Philip Zenni"")",male,22,0,0,2620,7.225,,C +555,1,3,"Ohman, Miss. Velin",female,22,0,0,347085,7.775,,S +556,0,1,"Wright, Mr. George",male,62,0,0,113807,26.55,,S +557,1,1,"Duff Gordon, Lady. (Lucille Christiana Sutherland) (""Mrs Morgan"")",female,48,1,0,11755,39.6,A16,C +558,0,1,"Robbins, Mr. Victor",male,,0,0,PC 17757,227.525,,C +559,1,1,"Taussig, Mrs. Emil (Tillie Mandelbaum)",female,39,1,1,110413,79.65,E67,S +560,1,3,"de Messemaeker, Mrs. Guillaume Joseph (Emma)",female,36,1,0,345572,17.4,,S +561,0,3,"Morrow, Mr. Thomas Rowan",male,,0,0,372622,7.75,,Q +562,0,3,"Sivic, Mr. Husein",male,40,0,0,349251,7.8958,,S +563,0,2,"Norman, Mr. Robert Douglas",male,28,0,0,218629,13.5,,S +564,0,3,"Simmons, Mr. John",male,,0,0,SOTON/OQ 392082,8.05,,S +565,0,3,"Meanwell, Miss. (Marion Ogden)",female,,0,0,SOTON/O.Q. 392087,8.05,,S +566,0,3,"Davies, Mr. Alfred J",male,24,2,0,A/4 48871,24.15,,S +567,0,3,"Stoytcheff, Mr. Ilia",male,19,0,0,349205,7.8958,,S +568,0,3,"Palsson, Mrs. Nils (Alma Cornelia Berglund)",female,29,0,4,349909,21.075,,S +569,0,3,"Doharr, Mr. Tannous",male,,0,0,2686,7.2292,,C +570,1,3,"Jonsson, Mr. Carl",male,32,0,0,350417,7.8542,,S +571,1,2,"Harris, Mr. George",male,62,0,0,S.W./PP 752,10.5,,S +572,1,1,"Appleton, Mrs. Edward Dale (Charlotte Lamson)",female,53,2,0,11769,51.4792,C101,S +573,1,1,"Flynn, Mr. John Irwin (""Irving"")",male,36,0,0,PC 17474,26.3875,E25,S +574,1,3,"Kelly, Miss. Mary",female,,0,0,14312,7.75,,Q +575,0,3,"Rush, Mr. Alfred George John",male,16,0,0,A/4. 20589,8.05,,S +576,0,3,"Patchett, Mr. George",male,19,0,0,358585,14.5,,S +577,1,2,"Garside, Miss. Ethel",female,34,0,0,243880,13,,S +578,1,1,"Silvey, Mrs. William Baird (Alice Munger)",female,39,1,0,13507,55.9,E44,S +579,0,3,"Caram, Mrs. Joseph (Maria Elias)",female,,1,0,2689,14.4583,,C +580,1,3,"Jussila, Mr. Eiriik",male,32,0,0,STON/O 2. 3101286,7.925,,S +581,1,2,"Christy, Miss. Julie Rachel",female,25,1,1,237789,30,,S +582,1,1,"Thayer, Mrs. John Borland (Marian Longstreth Morris)",female,39,1,1,17421,110.8833,C68,C +583,0,2,"Downton, Mr. William James",male,54,0,0,28403,26,,S +584,0,1,"Ross, Mr. John Hugo",male,36,0,0,13049,40.125,A10,C +585,0,3,"Paulner, Mr. Uscher",male,,0,0,3411,8.7125,,C +586,1,1,"Taussig, Miss. Ruth",female,18,0,2,110413,79.65,E68,S +587,0,2,"Jarvis, Mr. John Denzil",male,47,0,0,237565,15,,S +588,1,1,"Frolicher-Stehli, Mr. Maxmillian",male,60,1,1,13567,79.2,B41,C +589,0,3,"Gilinski, Mr. Eliezer",male,22,0,0,14973,8.05,,S +590,0,3,"Murdlin, Mr. Joseph",male,,0,0,A./5. 3235,8.05,,S +591,0,3,"Rintamaki, Mr. Matti",male,35,0,0,STON/O 2. 3101273,7.125,,S +592,1,1,"Stephenson, Mrs. Walter Bertram (Martha Eustis)",female,52,1,0,36947,78.2667,D20,C +593,0,3,"Elsbury, Mr. William James",male,47,0,0,A/5 3902,7.25,,S +594,0,3,"Bourke, Miss. Mary",female,,0,2,364848,7.75,,Q +595,0,2,"Chapman, Mr. John Henry",male,37,1,0,SC/AH 29037,26,,S +596,0,3,"Van Impe, Mr. Jean Baptiste",male,36,1,1,345773,24.15,,S +597,1,2,"Leitch, Miss. Jessie Wills",female,,0,0,248727,33,,S +598,0,3,"Johnson, Mr. Alfred",male,49,0,0,LINE,0,,S +599,0,3,"Boulos, Mr. Hanna",male,,0,0,2664,7.225,,C +600,1,1,"Duff Gordon, Sir. Cosmo Edmund (""Mr Morgan"")",male,49,1,0,PC 17485,56.9292,A20,C +601,1,2,"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)",female,24,2,1,243847,27,,S +602,0,3,"Slabenoff, Mr. Petco",male,,0,0,349214,7.8958,,S +603,0,1,"Harrington, Mr. Charles H",male,,0,0,113796,42.4,,S +604,0,3,"Torber, Mr. Ernst William",male,44,0,0,364511,8.05,,S +605,1,1,"Homer, Mr. Harry (""Mr E Haven"")",male,35,0,0,111426,26.55,,C +606,0,3,"Lindell, Mr. Edvard Bengtsson",male,36,1,0,349910,15.55,,S +607,0,3,"Karaic, Mr. Milan",male,30,0,0,349246,7.8958,,S +608,1,1,"Daniel, Mr. Robert Williams",male,27,0,0,113804,30.5,,S +609,1,2,"Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)",female,22,1,2,SC/Paris 2123,41.5792,,C +610,1,1,"Shutes, Miss. Elizabeth W",female,40,0,0,PC 17582,153.4625,C125,S +611,0,3,"Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)",female,39,1,5,347082,31.275,,S +612,0,3,"Jardin, Mr. Jose Neto",male,,0,0,SOTON/O.Q. 3101305,7.05,,S +613,1,3,"Murphy, Miss. Margaret Jane",female,,1,0,367230,15.5,,Q +614,0,3,"Horgan, Mr. John",male,,0,0,370377,7.75,,Q +615,0,3,"Brocklebank, Mr. William Alfred",male,35,0,0,364512,8.05,,S +616,1,2,"Herman, Miss. Alice",female,24,1,2,220845,65,,S +617,0,3,"Danbom, Mr. Ernst Gilbert",male,34,1,1,347080,14.4,,S +618,0,3,"Lobb, Mrs. William Arthur (Cordelia K Stanlick)",female,26,1,0,A/5. 3336,16.1,,S +619,1,2,"Becker, Miss. Marion Louise",female,4,2,1,230136,39,F4,S +620,0,2,"Gavey, Mr. Lawrence",male,26,0,0,31028,10.5,,S +621,0,3,"Yasbeck, Mr. Antoni",male,27,1,0,2659,14.4542,,C +622,1,1,"Kimball, Mr. Edwin Nelson Jr",male,42,1,0,11753,52.5542,D19,S +623,1,3,"Nakid, Mr. Sahid",male,20,1,1,2653,15.7417,,C +624,0,3,"Hansen, Mr. Henry Damsgaard",male,21,0,0,350029,7.8542,,S +625,0,3,"Bowen, Mr. David John ""Dai""",male,21,0,0,54636,16.1,,S +626,0,1,"Sutton, Mr. Frederick",male,61,0,0,36963,32.3208,D50,S +627,0,2,"Kirkland, Rev. Charles Leonard",male,57,0,0,219533,12.35,,Q +628,1,1,"Longley, Miss. Gretchen Fiske",female,21,0,0,13502,77.9583,D9,S +629,0,3,"Bostandyeff, Mr. Guentcho",male,26,0,0,349224,7.8958,,S +630,0,3,"O'Connell, Mr. Patrick D",male,,0,0,334912,7.7333,,Q +631,1,1,"Barkworth, Mr. Algernon Henry Wilson",male,80,0,0,27042,30,A23,S +632,0,3,"Lundahl, Mr. Johan Svensson",male,51,0,0,347743,7.0542,,S +633,1,1,"Stahelin-Maeglin, Dr. Max",male,32,0,0,13214,30.5,B50,C +634,0,1,"Parr, Mr. William Henry Marsh",male,,0,0,112052,0,,S +635,0,3,"Skoog, Miss. Mabel",female,9,3,2,347088,27.9,,S +636,1,2,"Davis, Miss. Mary",female,28,0,0,237668,13,,S +637,0,3,"Leinonen, Mr. Antti Gustaf",male,32,0,0,STON/O 2. 3101292,7.925,,S +638,0,2,"Collyer, Mr. Harvey",male,31,1,1,C.A. 31921,26.25,,S +639,0,3,"Panula, Mrs. Juha (Maria Emilia Ojala)",female,41,0,5,3101295,39.6875,,S +640,0,3,"Thorneycroft, Mr. Percival",male,,1,0,376564,16.1,,S +641,0,3,"Jensen, Mr. Hans Peder",male,20,0,0,350050,7.8542,,S +642,1,1,"Sagesser, Mlle. Emma",female,24,0,0,PC 17477,69.3,B35,C +643,0,3,"Skoog, Miss. Margit Elizabeth",female,2,3,2,347088,27.9,,S +644,1,3,"Foo, Mr. Choong",male,,0,0,1601,56.4958,,S +645,1,3,"Baclini, Miss. Eugenie",female,0.75,2,1,2666,19.2583,,C +646,1,1,"Harper, Mr. Henry Sleeper",male,48,1,0,PC 17572,76.7292,D33,C +647,0,3,"Cor, Mr. Liudevit",male,19,0,0,349231,7.8958,,S +648,1,1,"Simonius-Blumer, Col. Oberst Alfons",male,56,0,0,13213,35.5,A26,C +649,0,3,"Willey, Mr. Edward",male,,0,0,S.O./P.P. 751,7.55,,S +650,1,3,"Stanley, Miss. Amy Zillah Elsie",female,23,0,0,CA. 2314,7.55,,S +651,0,3,"Mitkoff, Mr. Mito",male,,0,0,349221,7.8958,,S +652,1,2,"Doling, Miss. Elsie",female,18,0,1,231919,23,,S +653,0,3,"Kalvik, Mr. Johannes Halvorsen",male,21,0,0,8475,8.4333,,S +654,1,3,"O'Leary, Miss. Hanora ""Norah""",female,,0,0,330919,7.8292,,Q +655,0,3,"Hegarty, Miss. Hanora ""Nora""",female,18,0,0,365226,6.75,,Q +656,0,2,"Hickman, Mr. Leonard Mark",male,24,2,0,S.O.C. 14879,73.5,,S +657,0,3,"Radeff, Mr. Alexander",male,,0,0,349223,7.8958,,S +658,0,3,"Bourke, Mrs. John (Catherine)",female,32,1,1,364849,15.5,,Q +659,0,2,"Eitemiller, Mr. George Floyd",male,23,0,0,29751,13,,S +660,0,1,"Newell, Mr. Arthur Webster",male,58,0,2,35273,113.275,D48,C +661,1,1,"Frauenthal, Dr. Henry William",male,50,2,0,PC 17611,133.65,,S +662,0,3,"Badt, Mr. Mohamed",male,40,0,0,2623,7.225,,C +663,0,1,"Colley, Mr. Edward Pomeroy",male,47,0,0,5727,25.5875,E58,S +664,0,3,"Coleff, Mr. Peju",male,36,0,0,349210,7.4958,,S +665,1,3,"Lindqvist, Mr. Eino William",male,20,1,0,STON/O 2. 3101285,7.925,,S +666,0,2,"Hickman, Mr. Lewis",male,32,2,0,S.O.C. 14879,73.5,,S +667,0,2,"Butler, Mr. Reginald Fenton",male,25,0,0,234686,13,,S +668,0,3,"Rommetvedt, Mr. Knud Paust",male,,0,0,312993,7.775,,S +669,0,3,"Cook, Mr. Jacob",male,43,0,0,A/5 3536,8.05,,S +670,1,1,"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)",female,,1,0,19996,52,C126,S +671,1,2,"Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)",female,40,1,1,29750,39,,S +672,0,1,"Davidson, Mr. Thornton",male,31,1,0,F.C. 12750,52,B71,S +673,0,2,"Mitchell, Mr. Henry Michael",male,70,0,0,C.A. 24580,10.5,,S +674,1,2,"Wilhelms, Mr. Charles",male,31,0,0,244270,13,,S +675,0,2,"Watson, Mr. Ennis Hastings",male,,0,0,239856,0,,S +676,0,3,"Edvardsson, Mr. Gustaf Hjalmar",male,18,0,0,349912,7.775,,S +677,0,3,"Sawyer, Mr. Frederick Charles",male,24.5,0,0,342826,8.05,,S +678,1,3,"Turja, Miss. Anna Sofia",female,18,0,0,4138,9.8417,,S +679,0,3,"Goodwin, Mrs. Frederick (Augusta Tyler)",female,43,1,6,CA 2144,46.9,,S +680,1,1,"Cardeza, Mr. Thomas Drake Martinez",male,36,0,1,PC 17755,512.3292,B51 B53 B55,C +681,0,3,"Peters, Miss. Katie",female,,0,0,330935,8.1375,,Q +682,1,1,"Hassab, Mr. Hammad",male,27,0,0,PC 17572,76.7292,D49,C +683,0,3,"Olsvigen, Mr. Thor Anderson",male,20,0,0,6563,9.225,,S +684,0,3,"Goodwin, Mr. Charles Edward",male,14,5,2,CA 2144,46.9,,S +685,0,2,"Brown, Mr. Thomas William Solomon",male,60,1,1,29750,39,,S +686,0,2,"Laroche, Mr. Joseph Philippe Lemercier",male,25,1,2,SC/Paris 2123,41.5792,,C +687,0,3,"Panula, Mr. Jaako Arnold",male,14,4,1,3101295,39.6875,,S +688,0,3,"Dakic, Mr. Branko",male,19,0,0,349228,10.1708,,S +689,0,3,"Fischer, Mr. Eberhard Thelander",male,18,0,0,350036,7.7958,,S +690,1,1,"Madill, Miss. Georgette Alexandra",female,15,0,1,24160,211.3375,B5,S +691,1,1,"Dick, Mr. Albert Adrian",male,31,1,0,17474,57,B20,S +692,1,3,"Karun, Miss. Manca",female,4,0,1,349256,13.4167,,C +693,1,3,"Lam, Mr. Ali",male,,0,0,1601,56.4958,,S +694,0,3,"Saad, Mr. Khalil",male,25,0,0,2672,7.225,,C +695,0,1,"Weir, Col. John",male,60,0,0,113800,26.55,,S +696,0,2,"Chapman, Mr. Charles Henry",male,52,0,0,248731,13.5,,S +697,0,3,"Kelly, Mr. James",male,44,0,0,363592,8.05,,S +698,1,3,"Mullens, Miss. Katherine ""Katie""",female,,0,0,35852,7.7333,,Q +699,0,1,"Thayer, Mr. John Borland",male,49,1,1,17421,110.8833,C68,C +700,0,3,"Humblen, Mr. Adolf Mathias Nicolai Olsen",male,42,0,0,348121,7.65,F G63,S +701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)",female,18,1,0,PC 17757,227.525,C62 C64,C +702,1,1,"Silverthorne, Mr. Spencer Victor",male,35,0,0,PC 17475,26.2875,E24,S +703,0,3,"Barbara, Miss. Saiide",female,18,0,1,2691,14.4542,,C +704,0,3,"Gallagher, Mr. Martin",male,25,0,0,36864,7.7417,,Q +705,0,3,"Hansen, Mr. Henrik Juul",male,26,1,0,350025,7.8542,,S +706,0,2,"Morley, Mr. Henry Samuel (""Mr Henry Marshall"")",male,39,0,0,250655,26,,S +707,1,2,"Kelly, Mrs. Florence ""Fannie""",female,45,0,0,223596,13.5,,S +708,1,1,"Calderhead, Mr. Edward Pennington",male,42,0,0,PC 17476,26.2875,E24,S +709,1,1,"Cleaver, Miss. Alice",female,22,0,0,113781,151.55,,S +710,1,3,"Moubarek, Master. Halim Gonios (""William George"")",male,,1,1,2661,15.2458,,C +711,1,1,"Mayne, Mlle. Berthe Antonine (""Mrs de Villiers"")",female,24,0,0,PC 17482,49.5042,C90,C +712,0,1,"Klaber, Mr. Herman",male,,0,0,113028,26.55,C124,S +713,1,1,"Taylor, Mr. Elmer Zebley",male,48,1,0,19996,52,C126,S +714,0,3,"Larsson, Mr. August Viktor",male,29,0,0,7545,9.4833,,S +715,0,2,"Greenberg, Mr. Samuel",male,52,0,0,250647,13,,S +716,0,3,"Soholt, Mr. Peter Andreas Lauritz Andersen",male,19,0,0,348124,7.65,F G73,S +717,1,1,"Endres, Miss. Caroline Louise",female,38,0,0,PC 17757,227.525,C45,C +718,1,2,"Troutt, Miss. Edwina Celia ""Winnie""",female,27,0,0,34218,10.5,E101,S +719,0,3,"McEvoy, Mr. Michael",male,,0,0,36568,15.5,,Q +720,0,3,"Johnson, Mr. Malkolm Joackim",male,33,0,0,347062,7.775,,S +721,1,2,"Harper, Miss. Annie Jessie ""Nina""",female,6,0,1,248727,33,,S +722,0,3,"Jensen, Mr. Svend Lauritz",male,17,1,0,350048,7.0542,,S +723,0,2,"Gillespie, Mr. William Henry",male,34,0,0,12233,13,,S +724,0,2,"Hodges, Mr. Henry Price",male,50,0,0,250643,13,,S +725,1,1,"Chambers, Mr. Norman Campbell",male,27,1,0,113806,53.1,E8,S +726,0,3,"Oreskovic, Mr. Luka",male,20,0,0,315094,8.6625,,S +727,1,2,"Renouf, Mrs. Peter Henry (Lillian Jefferys)",female,30,3,0,31027,21,,S +728,1,3,"Mannion, Miss. Margareth",female,,0,0,36866,7.7375,,Q +729,0,2,"Bryhl, Mr. Kurt Arnold Gottfrid",male,25,1,0,236853,26,,S +730,0,3,"Ilmakangas, Miss. Pieta Sofia",female,25,1,0,STON/O2. 3101271,7.925,,S +731,1,1,"Allen, Miss. Elisabeth Walton",female,29,0,0,24160,211.3375,B5,S +732,0,3,"Hassan, Mr. Houssein G N",male,11,0,0,2699,18.7875,,C +733,0,2,"Knight, Mr. Robert J",male,,0,0,239855,0,,S +734,0,2,"Berriman, Mr. William John",male,23,0,0,28425,13,,S +735,0,2,"Troupiansky, Mr. Moses Aaron",male,23,0,0,233639,13,,S +736,0,3,"Williams, Mr. Leslie",male,28.5,0,0,54636,16.1,,S +737,0,3,"Ford, Mrs. Edward (Margaret Ann Watson)",female,48,1,3,W./C. 6608,34.375,,S +738,1,1,"Lesurer, Mr. Gustave J",male,35,0,0,PC 17755,512.3292,B101,C +739,0,3,"Ivanoff, Mr. Kanio",male,,0,0,349201,7.8958,,S +740,0,3,"Nankoff, Mr. Minko",male,,0,0,349218,7.8958,,S +741,1,1,"Hawksford, Mr. Walter James",male,,0,0,16988,30,D45,S +742,0,1,"Cavendish, Mr. Tyrell William",male,36,1,0,19877,78.85,C46,S +743,1,1,"Ryerson, Miss. Susan Parker ""Suzette""",female,21,2,2,PC 17608,262.375,B57 B59 B63 B66,C +744,0,3,"McNamee, Mr. Neal",male,24,1,0,376566,16.1,,S +745,1,3,"Stranden, Mr. Juho",male,31,0,0,STON/O 2. 3101288,7.925,,S +746,0,1,"Crosby, Capt. Edward Gifford",male,70,1,1,WE/P 5735,71,B22,S +747,0,3,"Abbott, Mr. Rossmore Edward",male,16,1,1,C.A. 2673,20.25,,S +748,1,2,"Sinkkonen, Miss. Anna",female,30,0,0,250648,13,,S +749,0,1,"Marvin, Mr. Daniel Warner",male,19,1,0,113773,53.1,D30,S +750,0,3,"Connaghton, Mr. Michael",male,31,0,0,335097,7.75,,Q +751,1,2,"Wells, Miss. Joan",female,4,1,1,29103,23,,S +752,1,3,"Moor, Master. Meier",male,6,0,1,392096,12.475,E121,S +753,0,3,"Vande Velde, Mr. Johannes Joseph",male,33,0,0,345780,9.5,,S +754,0,3,"Jonkoff, Mr. Lalio",male,23,0,0,349204,7.8958,,S +755,1,2,"Herman, Mrs. Samuel (Jane Laver)",female,48,1,2,220845,65,,S +756,1,2,"Hamalainen, Master. Viljo",male,0.67,1,1,250649,14.5,,S +757,0,3,"Carlsson, Mr. August Sigfrid",male,28,0,0,350042,7.7958,,S +758,0,2,"Bailey, Mr. Percy Andrew",male,18,0,0,29108,11.5,,S +759,0,3,"Theobald, Mr. Thomas Leonard",male,34,0,0,363294,8.05,,S +760,1,1,"Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)",female,33,0,0,110152,86.5,B77,S +761,0,3,"Garfirth, Mr. John",male,,0,0,358585,14.5,,S +762,0,3,"Nirva, Mr. Iisakki Antino Aijo",male,41,0,0,SOTON/O2 3101272,7.125,,S +763,1,3,"Barah, Mr. Hanna Assi",male,20,0,0,2663,7.2292,,C +764,1,1,"Carter, Mrs. William Ernest (Lucile Polk)",female,36,1,2,113760,120,B96 B98,S +765,0,3,"Eklund, Mr. Hans Linus",male,16,0,0,347074,7.775,,S +766,1,1,"Hogeboom, Mrs. John C (Anna Andrews)",female,51,1,0,13502,77.9583,D11,S +767,0,1,"Brewe, Dr. Arthur Jackson",male,,0,0,112379,39.6,,C +768,0,3,"Mangan, Miss. Mary",female,30.5,0,0,364850,7.75,,Q +769,0,3,"Moran, Mr. Daniel J",male,,1,0,371110,24.15,,Q +770,0,3,"Gronnestad, Mr. Daniel Danielsen",male,32,0,0,8471,8.3625,,S +771,0,3,"Lievens, Mr. Rene Aime",male,24,0,0,345781,9.5,,S +772,0,3,"Jensen, Mr. Niels Peder",male,48,0,0,350047,7.8542,,S +773,0,2,"Mack, Mrs. (Mary)",female,57,0,0,S.O./P.P. 3,10.5,E77,S +774,0,3,"Elias, Mr. Dibo",male,,0,0,2674,7.225,,C +775,1,2,"Hocking, Mrs. Elizabeth (Eliza Needs)",female,54,1,3,29105,23,,S +776,0,3,"Myhrman, Mr. Pehr Fabian Oliver Malkolm",male,18,0,0,347078,7.75,,S +777,0,3,"Tobin, Mr. Roger",male,,0,0,383121,7.75,F38,Q +778,1,3,"Emanuel, Miss. Virginia Ethel",female,5,0,0,364516,12.475,,S +779,0,3,"Kilgannon, Mr. Thomas J",male,,0,0,36865,7.7375,,Q +780,1,1,"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)",female,43,0,1,24160,211.3375,B3,S +781,1,3,"Ayoub, Miss. Banoura",female,13,0,0,2687,7.2292,,C +782,1,1,"Dick, Mrs. Albert Adrian (Vera Gillespie)",female,17,1,0,17474,57,B20,S +783,0,1,"Long, Mr. Milton Clyde",male,29,0,0,113501,30,D6,S +784,0,3,"Johnston, Mr. Andrew G",male,,1,2,W./C. 6607,23.45,,S +785,0,3,"Ali, Mr. William",male,25,0,0,SOTON/O.Q. 3101312,7.05,,S +786,0,3,"Harmer, Mr. Abraham (David Lishin)",male,25,0,0,374887,7.25,,S +787,1,3,"Sjoblom, Miss. Anna Sofia",female,18,0,0,3101265,7.4958,,S +788,0,3,"Rice, Master. George Hugh",male,8,4,1,382652,29.125,,Q +789,1,3,"Dean, Master. Bertram Vere",male,1,1,2,C.A. 2315,20.575,,S +790,0,1,"Guggenheim, Mr. Benjamin",male,46,0,0,PC 17593,79.2,B82 B84,C +791,0,3,"Keane, Mr. Andrew ""Andy""",male,,0,0,12460,7.75,,Q +792,0,2,"Gaskell, Mr. Alfred",male,16,0,0,239865,26,,S +793,0,3,"Sage, Miss. Stella Anna",female,,8,2,CA. 2343,69.55,,S +794,0,1,"Hoyt, Mr. William Fisher",male,,0,0,PC 17600,30.6958,,C +795,0,3,"Dantcheff, Mr. Ristiu",male,25,0,0,349203,7.8958,,S +796,0,2,"Otter, Mr. Richard",male,39,0,0,28213,13,,S +797,1,1,"Leader, Dr. Alice (Farnham)",female,49,0,0,17465,25.9292,D17,S +798,1,3,"Osman, Mrs. Mara",female,31,0,0,349244,8.6833,,S +799,0,3,"Ibrahim Shawah, Mr. Yousseff",male,30,0,0,2685,7.2292,,C +800,0,3,"Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)",female,30,1,1,345773,24.15,,S +801,0,2,"Ponesell, Mr. Martin",male,34,0,0,250647,13,,S +802,1,2,"Collyer, Mrs. Harvey (Charlotte Annie Tate)",female,31,1,1,C.A. 31921,26.25,,S +803,1,1,"Carter, Master. William Thornton II",male,11,1,2,113760,120,B96 B98,S +804,1,3,"Thomas, Master. Assad Alexander",male,0.42,0,1,2625,8.5167,,C +805,1,3,"Hedman, Mr. Oskar Arvid",male,27,0,0,347089,6.975,,S +806,0,3,"Johansson, Mr. Karl Johan",male,31,0,0,347063,7.775,,S +807,0,1,"Andrews, Mr. Thomas Jr",male,39,0,0,112050,0,A36,S +808,0,3,"Pettersson, Miss. Ellen Natalia",female,18,0,0,347087,7.775,,S +809,0,2,"Meyer, Mr. August",male,39,0,0,248723,13,,S +810,1,1,"Chambers, Mrs. Norman Campbell (Bertha Griggs)",female,33,1,0,113806,53.1,E8,S +811,0,3,"Alexander, Mr. William",male,26,0,0,3474,7.8875,,S +812,0,3,"Lester, Mr. James",male,39,0,0,A/4 48871,24.15,,S +813,0,2,"Slemen, Mr. Richard James",male,35,0,0,28206,10.5,,S +814,0,3,"Andersson, Miss. Ebba Iris Alfrida",female,6,4,2,347082,31.275,,S +815,0,3,"Tomlin, Mr. Ernest Portage",male,30.5,0,0,364499,8.05,,S +816,0,1,"Fry, Mr. Richard",male,,0,0,112058,0,B102,S +817,0,3,"Heininen, Miss. Wendla Maria",female,23,0,0,STON/O2. 3101290,7.925,,S +818,0,2,"Mallet, Mr. Albert",male,31,1,1,S.C./PARIS 2079,37.0042,,C +819,0,3,"Holm, Mr. John Fredrik Alexander",male,43,0,0,C 7075,6.45,,S +820,0,3,"Skoog, Master. Karl Thorsten",male,10,3,2,347088,27.9,,S +821,1,1,"Hays, Mrs. Charles Melville (Clara Jennings Gregg)",female,52,1,1,12749,93.5,B69,S +822,1,3,"Lulic, Mr. Nikola",male,27,0,0,315098,8.6625,,S +823,0,1,"Reuchlin, Jonkheer. John George",male,38,0,0,19972,0,,S +824,1,3,"Moor, Mrs. (Beila)",female,27,0,1,392096,12.475,E121,S +825,0,3,"Panula, Master. Urho Abraham",male,2,4,1,3101295,39.6875,,S +826,0,3,"Flynn, Mr. John",male,,0,0,368323,6.95,,Q +827,0,3,"Lam, Mr. Len",male,,0,0,1601,56.4958,,S +828,1,2,"Mallet, Master. Andre",male,1,0,2,S.C./PARIS 2079,37.0042,,C +829,1,3,"McCormack, Mr. Thomas Joseph",male,,0,0,367228,7.75,,Q +830,1,1,"Stone, Mrs. George Nelson (Martha Evelyn)",female,62,0,0,113572,80,B28, +831,1,3,"Yasbeck, Mrs. Antoni (Selini Alexander)",female,15,1,0,2659,14.4542,,C +832,1,2,"Richards, Master. George Sibley",male,0.83,1,1,29106,18.75,,S +833,0,3,"Saad, Mr. Amin",male,,0,0,2671,7.2292,,C +834,0,3,"Augustsson, Mr. Albert",male,23,0,0,347468,7.8542,,S +835,0,3,"Allum, Mr. Owen George",male,18,0,0,2223,8.3,,S +836,1,1,"Compton, Miss. Sara Rebecca",female,39,1,1,PC 17756,83.1583,E49,C +837,0,3,"Pasic, Mr. Jakob",male,21,0,0,315097,8.6625,,S +838,0,3,"Sirota, Mr. Maurice",male,,0,0,392092,8.05,,S +839,1,3,"Chip, Mr. Chang",male,32,0,0,1601,56.4958,,S +840,1,1,"Marechal, Mr. Pierre",male,,0,0,11774,29.7,C47,C +841,0,3,"Alhomaki, Mr. Ilmari Rudolf",male,20,0,0,SOTON/O2 3101287,7.925,,S +842,0,2,"Mudd, Mr. Thomas Charles",male,16,0,0,S.O./P.P. 3,10.5,,S +843,1,1,"Serepeca, Miss. Augusta",female,30,0,0,113798,31,,C +844,0,3,"Lemberopolous, Mr. Peter L",male,34.5,0,0,2683,6.4375,,C +845,0,3,"Culumovic, Mr. Jeso",male,17,0,0,315090,8.6625,,S +846,0,3,"Abbing, Mr. Anthony",male,42,0,0,C.A. 5547,7.55,,S +847,0,3,"Sage, Mr. Douglas Bullen",male,,8,2,CA. 2343,69.55,,S +848,0,3,"Markoff, Mr. Marin",male,35,0,0,349213,7.8958,,C +849,0,2,"Harper, Rev. John",male,28,0,1,248727,33,,S +850,1,1,"Goldenberg, Mrs. Samuel L (Edwiga Grabowska)",female,,1,0,17453,89.1042,C92,C +851,0,3,"Andersson, Master. Sigvard Harald Elias",male,4,4,2,347082,31.275,,S +852,0,3,"Svensson, Mr. Johan",male,74,0,0,347060,7.775,,S +853,0,3,"Boulos, Miss. Nourelain",female,9,1,1,2678,15.2458,,C +854,1,1,"Lines, Miss. Mary Conover",female,16,0,1,PC 17592,39.4,D28,S +855,0,2,"Carter, Mrs. Ernest Courtenay (Lilian Hughes)",female,44,1,0,244252,26,,S +856,1,3,"Aks, Mrs. Sam (Leah Rosen)",female,18,0,1,392091,9.35,,S +857,1,1,"Wick, Mrs. George Dennick (Mary Hitchcock)",female,45,1,1,36928,164.8667,,S +858,1,1,"Daly, Mr. Peter Denis ",male,51,0,0,113055,26.55,E17,S +859,1,3,"Baclini, Mrs. Solomon (Latifa Qurban)",female,24,0,3,2666,19.2583,,C +860,0,3,"Razi, Mr. Raihed",male,,0,0,2629,7.2292,,C +861,0,3,"Hansen, Mr. Claus Peter",male,41,2,0,350026,14.1083,,S +862,0,2,"Giles, Mr. Frederick Edward",male,21,1,0,28134,11.5,,S +863,1,1,"Swift, Mrs. Frederick Joel (Margaret Welles Barron)",female,48,0,0,17466,25.9292,D17,S +864,0,3,"Sage, Miss. Dorothy Edith ""Dolly""",female,,8,2,CA. 2343,69.55,,S +865,0,2,"Gill, Mr. John William",male,24,0,0,233866,13,,S +866,1,2,"Bystrom, Mrs. (Karolina)",female,42,0,0,236852,13,,S +867,1,2,"Duran y More, Miss. Asuncion",female,27,1,0,SC/PARIS 2149,13.8583,,C +868,0,1,"Roebling, Mr. Washington Augustus II",male,31,0,0,PC 17590,50.4958,A24,S +869,0,3,"van Melkebeke, Mr. Philemon",male,,0,0,345777,9.5,,S +870,1,3,"Johnson, Master. Harold Theodor",male,4,1,1,347742,11.1333,,S +871,0,3,"Balkic, Mr. Cerin",male,26,0,0,349248,7.8958,,S +872,1,1,"Beckwith, Mrs. Richard Leonard (Sallie Monypeny)",female,47,1,1,11751,52.5542,D35,S +873,0,1,"Carlsson, Mr. Frans Olof",male,33,0,0,695,5,B51 B53 B55,S +874,0,3,"Vander Cruyssen, Mr. Victor",male,47,0,0,345765,9,,S +875,1,2,"Abelson, Mrs. Samuel (Hannah Wizosky)",female,28,1,0,P/PP 3381,24,,C +876,1,3,"Najib, Miss. Adele Kiamie ""Jane""",female,15,0,0,2667,7.225,,C +877,0,3,"Gustafsson, Mr. Alfred Ossian",male,20,0,0,7534,9.8458,,S +878,0,3,"Petroff, Mr. Nedelio",male,19,0,0,349212,7.8958,,S +879,0,3,"Laleff, Mr. Kristo",male,,0,0,349217,7.8958,,S +880,1,1,"Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)",female,56,0,1,11767,83.1583,C50,C +881,1,2,"Shelley, Mrs. William (Imanita Parrish Hall)",female,25,0,1,230433,26,,S +882,0,3,"Markun, Mr. Johann",male,33,0,0,349257,7.8958,,S +883,0,3,"Dahlberg, Miss. Gerda Ulrika",female,22,0,0,7552,10.5167,,S +884,0,2,"Banfield, Mr. Frederick James",male,28,0,0,C.A./SOTON 34068,10.5,,S +885,0,3,"Sutehall, Mr. Henry Jr",male,25,0,0,SOTON/OQ 392076,7.05,,S +886,0,3,"Rice, Mrs. William (Margaret Norton)",female,39,0,5,382652,29.125,,Q +887,0,2,"Montvila, Rev. Juozas",male,27,0,0,211536,13,,S +888,1,1,"Graham, Miss. Margaret Edith",female,19,0,0,112053,30,B42,S +889,0,3,"Johnston, Miss. Catherine Helen ""Carrie""",female,,1,2,W./C. 6607,23.45,,S +890,1,1,"Behr, Mr. Karl Howell",male,26,0,0,111369,30,C148,C +891,0,3,"Dooley, Mr. Patrick",male,32,0,0,370376,7.75,,Q diff --git a/data_exploration.ipynb b/data_exploration.ipynb new file mode 100644 index 0000000..8b54d59 --- /dev/null +++ b/data_exploration.ipynb @@ -0,0 +1,737 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exploring the Kaggle Titanic Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this exploration, I will explore various attributes of the titanic dataset provided by kaggle. The \"codebook\" for this dataset can be found [here](https://www.kaggle.com/c/titanic/data?train.csv)." + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data from the Titanic CSV\n", + "\n", + "Int64Index: 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: 90.5+ KB\n", + "----------------------\n", + "Data from the Test CSV\n", + "\n", + "Int64Index: 418 entries, 0 to 417\n", + "Data columns (total 11 columns):\n", + "PassengerId 418 non-null int64\n", + "Pclass 418 non-null int64\n", + "Name 418 non-null object\n", + "Sex 418 non-null object\n", + "Age 332 non-null float64\n", + "SibSp 418 non-null int64\n", + "Parch 418 non-null int64\n", + "Ticket 418 non-null object\n", + "Fare 417 non-null float64\n", + "Cabin 91 non-null object\n", + "Embarked 418 non-null object\n", + "dtypes: float64(2), int64(4), object(5)\n", + "memory usage: 39.2+ KB\n" + ] + } + ], + "source": [ + "#getting setup for the exploration\n", + "\n", + "import pandas as pd\n", + "from pandas import Series,DataFrame\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "titanic_data = pd.read_csv('data/train.csv', dtype={'Age':np.float64})\n", + "test_data = pd.read_csv('data/test.csv', dtype={'Age':np.float64})\n", + "\n", + "# titanic_data.head()\n", + "# test_data.head()\n", + "\n", + "print 'Data from the Titanic CSV'\n", + "titanic_data.info()\n", + "print '----------------------'\n", + "print 'Data from the Test CSV'\n", + "test_data.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The train (titanic) data set includes information about whether an individual survived. The test data set does not (this is the data set that we should be running prediction models on later). For the purposes of this exercise, I will focus primarily on analyzing the titanic data set to best compare survivability with a variety of factors." + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#for now, let's drop the two unknown embarkees in the dataset just \n", + "#so that we only look at people that there is a clear boarding record of\n", + "titanic_data = titanic_data.dropna(subset=['Embarked'])\n", + "\n", + "#now I'm going to create a dataset primarily for folks we know the\n", + "#cabin status of\n", + "cabin_data = titanic_data.dropna(subset=['Cabin'])\n", + "\n", + "#and now just a dataset primarily for folks we know the age of\n", + "age_data = titanic_data.dropna(subset=['Age'])\n", + "\n", + "#and for cabin and age\n", + "completely_known_persons = titanic_data.dropna(subset=['Age','Cabin'])\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's explore! First I want to just look at the breakdown of numbers in each of the variables. Simple table outputs will suffice for this step. PassengerID, Name, and Ticket will not be looked over because\n", + "these are non-determinant of surviving (unless a bigger conspiracy is going down with people with the letter c in their names...)." + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PClass\n", + "Class Total\n", + "First | 214\n", + "Second | 184\n", + "Third | 491\n", + "Total | 889\n", + "-----------\n", + "Sex\n", + "Sex Total\n", + "Female | 312\n", + "Male | 577\n", + "Total | 889\n", + "-----------\n", + "Age\n", + "Years Total\n", + "Youth 0-10 | 64\n", + "Teens 11-20 | 115\n", + "Young Adults 21-30 | 230\n", + "Adults 31-60 | 282\n", + "Seniors 61-100 | 21\n", + "Total | 712\n", + "-----------\n", + "SibSp\n", + "Number Frequency\n", + "0 | 606\n", + "1 | 209\n", + "2 or more | 74\n", + "Total | 889\n", + "-----------\n", + "Parch\n", + "Number Frequency\n", + "0 | 676\n", + "1 | 118\n", + "2 | 80\n", + "3 or more | 15\n", + "Total | 889\n", + "-----------\n", + "Fare\n", + "Price Frequency\n", + "0-15 | 458\n", + "16-35 | 235\n", + "greater than 35 | 196\n", + "Total | 889\n", + "-----------\n", + "Cabin\n", + "Location Frequency\n", + "A | 15\n", + "B | 45\n", + "C | 59\n", + "D | 33\n", + "E | 32\n", + "F | 13\n", + "G | 4\n", + "T | 1\n", + "Total | 202\n", + "-----------\n", + "Embarked From\n", + "Location Frequency\n", + "Cherbourg | 168\n", + "Queenstown | 77\n", + "Southampton | 644\n", + "Total | 889\n" + ] + } + ], + "source": [ + "#I'll use the base dataset for this, titanic_data, to capture the most\n", + "#number of folks represented in the dataset\n", + "\n", + "#pclass, where 1 = first class, 2 = second class, and 3 = third class\n", + "print 'PClass'\n", + "print 'Class','Total'\n", + "print 'First |', len(titanic_data[titanic_data.Pclass == 1])\n", + "print 'Second |', len(titanic_data[titanic_data.Pclass == 2])\n", + "print 'Third |', len(titanic_data[titanic_data.Pclass == 3])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#sex, where they are noted in strings 'male' and 'female'\n", + "print 'Sex'\n", + "print 'Sex', 'Total'\n", + "print 'Female |', len(titanic_data[titanic_data.Sex == 'female'])\n", + "print 'Male |', len(titanic_data[titanic_data.Sex == 'male'])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#age, where they are noted in years, fractional ages imply \n", + "#estimation, fractional if less than one year old\n", + "print 'Age'\n", + "print 'Years', 'Total'\n", + "print 'Youth 0-10 |', len(age_data[(age_data.Age > 0) & (age_data.Age <= 10)])\n", + "print 'Teens 11-20 |', len(age_data[(age_data.Age > 10) & (age_data.Age <= 20)])\n", + "print 'Young Adults 21-30 |', len(age_data[(age_data.Age > 20) & (age_data.Age <= 30)])\n", + "print 'Adults 31-60 |', len(age_data[(age_data.Age > 30) & (age_data.Age <= 60)])\n", + "print 'Seniors 61-100 |', len(age_data[(age_data.Age > 60)])\n", + "print 'Total |', len(age_data)\n", + "print '-----------'\n", + "\n", + "#sibsp the number of sblings or spouses aboard\n", + "print 'SibSp'\n", + "print 'Number', 'Frequency'\n", + "print '0 |', len(titanic_data[(titanic_data.SibSp == 0)])\n", + "print '1 |', len(titanic_data[(titanic_data.SibSp == 1)])\n", + "print '2 or more |', len(titanic_data[(titanic_data.SibSp > 1)])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#parch the number of parents or children aboard\n", + "print 'Parch'\n", + "print 'Number', 'Frequency'\n", + "print '0 |', len(titanic_data[(titanic_data.Parch == 0)])\n", + "print '1 |', len(titanic_data[(titanic_data.Parch == 1)])\n", + "print '2 |', len(titanic_data[(titanic_data.Parch == 2)])\n", + "print '3 or more |', len(titanic_data[(titanic_data.Parch > 2)])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#fare\n", + "print 'Fare'\n", + "print 'Price', 'Frequency'\n", + "print '0-15 |', len(titanic_data[(titanic_data.Fare >= 0) & (titanic_data.Fare <= 15)])\n", + "print '16-35 |', len(titanic_data[(titanic_data.Fare > 15) & (titanic_data.Fare <= 35)])\n", + "print 'greater than 35 |', len(titanic_data[(titanic_data.Fare > 35)])\n", + "print 'Total |', len(titanic_data)\n", + "print '-----------'\n", + "\n", + "#cabin, these will be sorted by letter section\n", + "print 'Cabin'\n", + "print 'Location', 'Frequency'\n", + "cabin = []\n", + "for element in cabin_data.Cabin:\n", + " cabin.append(element[0])\n", + "print 'A |', cabin.count('A')\n", + "print 'B |', cabin.count('B')\n", + "print 'C |', cabin.count('C')\n", + "print 'D |', cabin.count('D')\n", + "print 'E |', cabin.count('E')\n", + "print 'F |', cabin.count('F')\n", + "print 'G |', cabin.count('G')\n", + "print 'T |', cabin.count('T')\n", + "print 'Total |', len(cabin)\n", + "print '-----------'\n", + "\n", + "#embarkation from one of three places Cherbourg, Queenstown, and Southampton\n", + "print 'Embarked From'\n", + "print 'Location', 'Frequency'\n", + "print 'Cherbourg |', len(titanic_data[(titanic_data.Embarked == 'C')])\n", + "print 'Queenstown |', len(titanic_data[(titanic_data.Embarked == 'Q')])\n", + "print 'Southampton |', len(titanic_data[(titanic_data.Embarked == 'S')])\n", + "print 'Total |', len(titanic_data)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This gave me a good sense of the typical passenger: most were traveling alone, were in a lower class, male, embarked from Southampton, and were aged between 20 and 40 years. Now, let's compare these factors with those who survived. " + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Female: 231 Male: 109\n", + "First class: 134 Second class: 87 Third class: 119\n", + "Youth: 38 Teens: 44 Young Adult: 84 Adult: 118 Senior: 4\n", + "No SibSp: 208 1 SibSp 112 2 SibSp 13 More than 2 SibSp 7\n", + "No Parch: 231 1 Parch 65 2 Parch 40 More than 2 Parch 4\n", + "CabinA: 7 CabinB: 33 CabinC: 35 CabinD: 25 CabinE: 24 CabinF: 8 CabinG: 2 CabinT: 0\n", + "Cherbourg: 93 Queenstown: 30 Southampton: 217\n", + "0-15 fare: 114 16-35 fare: 105 Greater than 35 fare: 121\n" + ] + } + ], + "source": [ + "#I create variables for those that survived and those that did not\n", + "survivors = titanic_data[(titanic_data.Survived == 1)]\n", + "others = titanic_data[(titanic_data.Survived == 0)]\n", + "\n", + "surv_cabin = []\n", + "survive_cabin = survivors.dropna(subset=['Cabin'])\n", + "for element in survive_cabin.Cabin:\n", + " surv_cabin.append(element[0])\n", + "\n", + "#now, let's see who survived based on single features\n", + "print 'Female:', len(survivors[survivors.Sex == 'female']), 'Male:', len(survivors[survivors.Sex == 'male'])\n", + "print 'First class:', len(survivors[survivors.Pclass == 1]), 'Second class:', len(survivors[survivors.Pclass == 2]), 'Third class:', len(survivors[survivors.Pclass == 3])\n", + "print 'Youth:', len(survivors[(survivors.Age <= 10)]), 'Teens:', len(survivors[(survivors.Age > 10) & (survivors.Age <= 20)]), 'Young Adult:', len(survivors[(survivors.Age > 20) & (survivors.Age <= 30)]), 'Adult:', len(survivors[(survivors.Age > 30) & (survivors.Age <= 60)]), 'Senior:', len(survivors[(survivors.Age > 60)])\n", + "print 'No SibSp:', len(survivors[(survivors.SibSp == 0)]), '1 SibSp', len(survivors[survivors.SibSp == 1]), '2 SibSp', len(survivors[survivors.SibSp == 2]), 'More than 2 SibSp', len(survivors[survivors.SibSp >= 3])\n", + "print 'No Parch:', len(survivors[(survivors.Parch == 0)]), '1 Parch', len(survivors[survivors.Parch == 1]), '2 Parch', len(survivors[survivors.Parch == 2]), 'More than 2 Parch', len(survivors[survivors.Parch >= 3])\n", + "print 'CabinA:', surv_cabin.count('A'), 'CabinB:', surv_cabin.count('B'), 'CabinC:', surv_cabin.count('C'), 'CabinD:', surv_cabin.count('D'), 'CabinE:', surv_cabin.count('E'), 'CabinF:', surv_cabin.count('F'), 'CabinG:', surv_cabin.count('G'), 'CabinT:', surv_cabin.count('T')\n", + "print 'Cherbourg:', len(survivors[(survivors.Embarked == 'C')]), 'Queenstown:', len(survivors[survivors.Embarked == 'Q']), 'Southampton:', len(survivors[survivors.Embarked == 'S'])\n", + "print '0-15 fare:', len(survivors[(survivors.Fare >= 0) & (survivors.Fare <= 15)]), '16-35 fare:', len(survivors[(survivors.Fare > 15) & (survivors.Fare <= 35)]), 'Greater than 35 fare:', len(survivors[(survivors.Fare > 35)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This form is ok, but it doesn't tell us a lot about the proportions of people. To get a better sense of these who survived based on a single factor, I display them graphically." + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nYP8foYGkHOv8wOsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\ndgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "\n", + "#for sex,embark place,class\n", + "fig, (axis1, axis2,axis3) = plt.subplots(1,3,figsize =(15,5))\n", + "\n", + "sex_perc = titanic_data[['Survived', 'Sex']].groupby(['Sex'],as_index=False).mean()\n", + "sns.barplot(x='Sex',y='Survived', data = sex_perc, order=['female','male'],ax=axis1)\n", + "\n", + "embark_perc = titanic_data[['Embarked', 'Survived']].groupby(['Embarked'],as_index=False).mean()\n", + "sns.barplot(x='Embarked',y='Survived', data = embark_perc,ax=axis2)\n", + "\n", + "class_perc = titanic_data[['Pclass', 'Survived']].groupby(['Pclass'],as_index=False).mean()\n", + "sns.barplot(x='Pclass',y='Survived', data = class_perc,ax=axis3)\n", + "\n", + "#for cabins\n", + "a_survived = surv_cabin.count('A') / float(cabin.count('A')) \n", + "b_survived = surv_cabin.count('B') / float(cabin.count('B')) \n", + "c_survived = surv_cabin.count('C') / float(cabin.count('C'))\n", + "d_survived = surv_cabin.count('D') / float(cabin.count('D')) \n", + "e_survived = surv_cabin.count('E') / float(cabin.count('E')) \n", + "f_survived = surv_cabin.count('F') / float(cabin.count('F')) \n", + "g_survived = surv_cabin.count('G') / float(cabin.count('G')) \n", + "t_survived = surv_cabin.count('T') / float(cabin.count('T')) \n", + "\n", + "loc_perc = (a_survived, b_survived, c_survived, d_survived, e_survived, f_survived, g_survived, t_survived)\n", + "N=8\n", + "ind=np.arange(N)\n", + "width=0.35\n", + "fig,ax = plt.subplots()\n", + "ax.set_xticks(ind)\n", + "ax.set_xticklabels(('A','B','C','D','E','F','G','T'))\n", + "rects = ax.bar(ind, loc_perc, width,align='center')\n", + "plt.xlabel('Cabin Location')\n", + "plt.ylabel('Percentage Survived')\n", + "plt.title('Cabin and Survival')\n", + "plt.ylim([0, 1])\n", + "plt.show()\n", + "\n", + "#and now for age\n", + "plt.hist(survivors.Age,bins=np.arange(0,100,5),alpha=0.5)\n", + "plt.hist(titanic_data.Age, bins=np.arange(0,100,5),alpha=0.5)\n", + "plt.xlabel('Age (years)')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Age and Survival')\n", + "plt.legend('Survivors','All')\n", + "plt.show()\n", + "\n", + "#for those that didn't travel alone\n", + "plt.hist(survivors.SibSp,bins=np.arange(0,10,1),alpha=0.5)\n", + "plt.hist(titanic_data.SibSp, bins=np.arange(0,10,1),alpha=0.5)\n", + "plt.xlabel('Number Spouses/Siblings Traveled With')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Spouse/Sibling Travel and Survival')\n", + "plt.legend(['Survivors','All'])\n", + "plt.show()\n", + "\n", + "plt.hist(survivors.Parch,bins=np.arange(0,10,1),alpha=0.5)\n", + "plt.hist(titanic_data.Parch, bins=np.arange(0,10,1),alpha=0.5)\n", + "plt.xlabel('Number Parents/Children Traveled With')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Parent/Child Travel and Survival')\n", + "plt.legend(['Survivors','All'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's try using grouby to simply look at the survival rates between a combination of different groups." + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:27: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:28: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n" + ] + } + ], + "source": [ + "#first, I might as well create a recode that associates someone as young, old and inbetween since this seems to be useful\n", + "def parse_age(num):\n", + " \"\"\" convert a given age into a string indicator of relative age \"\"\"\n", + " if num <= 10:\n", + " return 'Youth'\n", + " elif num > 10 and num <= 20:\n", + " return 'Teen'\n", + " elif num > 20 and num <= 30:\n", + " return 'Young Adult'\n", + " elif num > 30 and num <= 60:\n", + " return 'Adult'\n", + " else:\n", + " return 'Senior'\n", + "\n", + "#let's apply that and add a column\n", + "rel_age_ind = []\n", + "for age in titanic_data.Age:\n", + " rel_age = parse_age(age)\n", + " rel_age_ind.append(rel_age)\n", + "titanic_data['Relage'] = rel_age_ind\n", + "\n", + "#something I've also been doing a workaround on is relative cabin location on the boat, so recode time!\n", + "rel_age_ind_cabin = []\n", + "for age in cabin_data.Age:\n", + " rel_age = parse_age(age)\n", + " rel_age_ind_cabin.append(rel_age)\n", + "cabin_data['Relage'] = rel_age_ind_cabin\n", + "cabin_data['Relloc'] = cabin" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Survived\n", + "Sex Pclass \n", + "female 1 0.967391\n", + " 2 0.921053\n", + " 3 0.500000\n", + "male 1 0.368852\n", + " 2 0.157407\n", + " 3 0.135447\n", + "--------------\n", + " Survived\n", + "Sex Relage \n", + "female Adult 0.797980\n", + " Senior 0.690909\n", + " Teen 0.739130\n", + " Young Adult 0.753086\n", + " Youth 0.612903\n", + "male Adult 0.213115\n", + " Senior 0.125874\n", + " Teen 0.144928\n", + " Young Adult 0.154362\n", + " Youth 0.575758\n", + "--------------\n", + " Survived\n", + "Pclass Relage \n", + "1 Adult 0.654545\n", + " Senior 0.372093\n", + " Teen 0.833333\n", + " Young Adult 0.725000\n", + " Youth 0.666667\n", + "2 Adult 0.418919\n", + " Senior 0.357143\n", + " Teen 0.500000\n", + " Young Adult 0.409836\n", + " Youth 1.000000\n", + "3 Adult 0.153061\n", + " Senior 0.248227\n", + " Teen 0.253165\n", + " Young Adult 0.232558\n", + " Youth 0.431818\n", + "--------------\n", + " Survived\n", + "Sex Relloc \n", + "female A 1.000000\n", + " B 1.000000\n", + " C 0.888889\n", + " D 1.000000\n", + " E 0.933333\n", + " F 1.000000\n", + " G 0.500000\n", + "male A 0.428571\n", + " B 0.400000\n", + " C 0.343750\n", + " D 0.466667\n", + " E 0.588235\n", + " F 0.375000\n", + " T 0.000000\n", + "--------------\n", + " Survived\n", + "Sex SibSp \n", + "female 0 0.784884\n", + " 1 0.754717\n", + " 2 0.769231\n", + " 3 0.363636\n", + " 4 0.333333\n", + " 5 0.000000\n", + " 8 0.000000\n", + "male 0 0.168203\n", + " 1 0.310680\n", + " 2 0.200000\n", + " 3 0.000000\n", + " 4 0.083333\n", + " 5 0.000000\n", + " 8 0.000000\n", + "--------------\n", + " Survived\n", + "Sex Parch \n", + "female 0 0.786458\n", + " 1 0.766667\n", + " 2 0.612245\n", + " 3 0.750000\n", + " 4 0.000000\n", + " 5 0.250000\n", + " 6 0.000000\n", + "male 0 0.165289\n", + " 1 0.327586\n", + " 2 0.322581\n", + " 3 0.000000\n", + " 4 0.000000\n", + " 5 0.000000\n", + "--------------\n" + ] + } + ], + "source": [ + "#let's start with looking at wealth and sex\n", + "print titanic_data[['Survived', 'Sex','Pclass']].groupby(['Sex','Pclass'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#that last one was pretty telling, now, what about age and sex?\n", + "print titanic_data[['Survived', 'Sex','Relage']].groupby(['Sex','Relage'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#interesting...what about age and wealth?\n", + "print titanic_data[['Survived', 'Pclass','Relage']].groupby(['Pclass','Relage'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#perhaps sex and location might have impacted whether they survived?\n", + "print cabin_data[['Survived', 'Sex','Relloc']].groupby(['Sex','Relloc'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#did women traveling with a sibling or spouse survive?\n", + "print titanic_data[['Survived', 'Sex','SibSp']].groupby(['Sex','SibSp'],as_index=True).mean()\n", + "\n", + "print '--------------'\n", + "\n", + "#did men traveling with a parent or child survive?\n", + "print titanic_data[['Survived', 'Sex','Parch']].groupby(['Sex','Parch'],as_index=True).mean()\n", + "\n", + "print '--------------'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These are some pretty interesting comparisons here. Its clear that women and children had the best chances of surviving, especially if they were wealthy. Males traveling with someone seemed to have faired better than those traveling alone or with a large group. All of these check out with the anecdotes one here's about how things went down on that fateful night. \n", + "\n", + "Just to start getting a sense of some correlations I'll make a few scatter plots (as prompted by the warm-up assignment)." + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nRK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#here is one which looks at age and average survival\n", + "# age_surv = titanic_data[['Survived', 'Age']].groupby(['Age'],as_index=True).mean()\n", + "\n", + "ax = sns.regplot(x='Survived',y='Age',data=survivors, x_jitter=0.1)\n", + "#I feel like scatterplots are not the best way to view any of the data provided, but as prompted by the warmup \n", + "#assignment, here we go. It's a little silly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/kaggle_rev1.csv b/kaggle_rev1.csv new file mode 100644 index 0000000..7bc8c34 --- /dev/null +++ b/kaggle_rev1.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,0 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,0 +911,1 +912,0 +913,0 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,0 +925,0 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,0 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,0 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,1 +982,0 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,0 +1020,0 +1021,0 +1022,0 +1023,0 +1024,1 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,0 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,1 +1094,0 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,0 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,0 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,0 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,0 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle.csv b/kaggle_submissions/kaggle.csv new file mode 100644 index 0000000..485997c --- /dev/null +++ b/kaggle_submissions/kaggle.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,0 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,0 +914,1 +915,1 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,0 +925,1 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,1 +961,1 +962,1 +963,0 +964,1 +965,1 +966,1 +967,1 +968,0 +969,1 +970,0 +971,1 +972,0 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,0 +982,1 +983,0 +984,1 +985,0 +986,1 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,1 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,0 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,0 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,0 +1094,0 +1095,1 +1096,0 +1097,1 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,1 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,0 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,1 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,1 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,1 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_rev1.csv b/kaggle_submissions/kaggle_rev1.csv new file mode 100644 index 0000000..7bc8c34 --- /dev/null +++ b/kaggle_submissions/kaggle_rev1.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,0 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,0 +911,1 +912,0 +913,0 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,0 +925,0 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,0 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,0 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,1 +982,0 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,0 +1020,0 +1021,0 +1022,0 +1023,0 +1024,1 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,0 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,1 +1094,0 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,0 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,0 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,0 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,0 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_rev2.csv b/kaggle_submissions/kaggle_rev2.csv new file mode 100644 index 0000000..71f8863 --- /dev/null +++ b/kaggle_submissions/kaggle_rev2.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,0 +894,0 +895,0 +896,0 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,0 +911,0 +912,0 +913,0 +914,1 +915,1 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,0 +925,0 +926,1 +927,0 +928,0 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,0 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,0 +957,1 +958,1 +959,0 +960,0 +961,0 +962,1 +963,0 +964,0 +965,0 +966,1 +967,1 +968,0 +969,1 +970,0 +971,1 +972,1 +973,1 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,1 +982,0 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,1 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,0 +1092,1 +1093,1 +1094,1 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,1 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,1 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,1 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,0 +1142,1 +1143,0 +1144,1 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,0 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,1 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,0 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,0 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,0 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,1 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,1 +1300,1 +1301,1 +1302,1 +1303,1 +1304,0 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_rev3.csv b/kaggle_submissions/kaggle_rev3.csv new file mode 100644 index 0000000..dbccb85 --- /dev/null +++ b/kaggle_submissions/kaggle_rev3.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,0 +894,0 +895,0 +896,0 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,0 +912,0 +913,0 +914,1 +915,1 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,0 +925,0 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,0 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,0 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,0 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,0 +1052,1 +1053,0 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,0 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,0 +1094,0 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,0 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,0 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,0 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,1 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,1 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_rev4.csv b/kaggle_submissions/kaggle_rev4.csv new file mode 100644 index 0000000..c9a8c95 --- /dev/null +++ b/kaggle_submissions/kaggle_rev4.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,0 +894,0 +895,0 +896,0 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,0 +911,1 +912,0 +913,0 +914,1 +915,1 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,0 +925,0 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,0 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,1 +982,0 +983,0 +984,1 +985,0 +986,1 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,0 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,1 +1094,0 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,1 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,0 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,0 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,1 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_1.csv b/kaggle_submissions/kaggle_v2_1.csv new file mode 100644 index 0000000..ee31f3c --- /dev/null +++ b/kaggle_submissions/kaggle_v2_1.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,0 +894,0 +895,0 +896,1 +897,0 +898,0 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,0 +911,0 +912,1 +913,1 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,1 +921,0 +922,0 +923,0 +924,1 +925,0 +926,1 +927,0 +928,0 +929,0 +930,0 +931,1 +932,0 +933,1 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,0 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,0 +980,1 +981,1 +982,0 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,0 +991,0 +992,1 +993,0 +994,0 +995,0 +996,0 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,1 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,0 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,1 +1037,0 +1038,0 +1039,0 +1040,1 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,0 +1050,1 +1051,1 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,0 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,1 +1070,1 +1071,1 +1072,0 +1073,1 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,1 +1085,0 +1086,1 +1087,0 +1088,1 +1089,0 +1090,0 +1091,0 +1092,1 +1093,1 +1094,1 +1095,1 +1096,0 +1097,0 +1098,0 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,1 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,0 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,0 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,0 +1173,1 +1174,1 +1175,0 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,0 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,0 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,1 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,0 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,0 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,0 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_2.csv b/kaggle_submissions/kaggle_v2_2.csv new file mode 100644 index 0000000..5fffef1 --- /dev/null +++ b/kaggle_submissions/kaggle_v2_2.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,0 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,1 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,1 +925,1 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,1 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,0 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,1 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,1 +1094,1 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,1 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,1 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,1 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_3.csv b/kaggle_submissions/kaggle_v2_3.csv new file mode 100644 index 0000000..7175662 --- /dev/null +++ b/kaggle_submissions/kaggle_v2_3.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,1 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,1 +925,1 +926,0 +927,0 +928,0 +929,0 +930,0 +931,0 +932,0 +933,1 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,0 +980,1 +981,1 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,0 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,1 +1037,0 +1038,0 +1039,0 +1040,1 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,1 +1050,1 +1051,1 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,0 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,1 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,1 +1094,1 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,1 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,0 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,0 +1173,1 +1174,1 +1175,0 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,1 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,1 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,0 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,1 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_4.csv b/kaggle_submissions/kaggle_v2_4.csv new file mode 100644 index 0000000..ab357b2 --- /dev/null +++ b/kaggle_submissions/kaggle_v2_4.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,0 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,0 +911,1 +912,0 +913,1 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,0 +925,0 +926,0 +927,0 +928,0 +929,0 +930,0 +931,0 +932,0 +933,1 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,0 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,0 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,0 +980,1 +981,1 +982,0 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,0 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,0 +1018,0 +1019,0 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,0 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,1 +1037,0 +1038,0 +1039,0 +1040,1 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,1 +1047,0 +1048,1 +1049,1 +1050,1 +1051,0 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,0 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,1 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,0 +1092,0 +1093,1 +1094,1 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,1 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,0 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,0 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,0 +1161,0 +1162,0 +1163,0 +1164,1 +1165,0 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,0 +1173,1 +1174,1 +1175,0 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,1 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,1 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,0 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,1 +1232,0 +1233,0 +1234,0 +1235,1 +1236,1 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,0 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,1 +1272,0 +1273,0 +1274,0 +1275,0 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,1 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_decisiontree.csv b/kaggle_submissions/kaggle_v2_decisiontree.csv new file mode 100644 index 0000000..f9b601f --- /dev/null +++ b/kaggle_submissions/kaggle_v2_decisiontree.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,0 +894,0 +895,0 +896,0 +897,0 +898,0 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,0 +911,0 +912,0 +913,0 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,1 +925,0 +926,1 +927,0 +928,0 +929,0 +930,0 +931,1 +932,0 +933,1 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,0 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,0 +980,1 +981,1 +982,0 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,0 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,0 +1031,0 +1032,0 +1033,0 +1034,0 +1035,0 +1036,1 +1037,0 +1038,0 +1039,0 +1040,1 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,1 +1051,0 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,0 +1062,0 +1063,0 +1064,1 +1065,0 +1066,0 +1067,1 +1068,1 +1069,1 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,1 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,0 +1092,1 +1093,1 +1094,0 +1095,1 +1096,0 +1097,0 +1098,0 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,0 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,0 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,0 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,0 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,0 +1173,1 +1174,1 +1175,0 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,0 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,0 +1198,0 +1199,0 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,0 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,1 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,1 +1237,1 +1238,0 +1239,0 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,1 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,0 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,1 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,1 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_decisiontreeensemble.csv b/kaggle_submissions/kaggle_v2_decisiontreeensemble.csv new file mode 100644 index 0000000..caff905 --- /dev/null +++ b/kaggle_submissions/kaggle_v2_decisiontreeensemble.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,1 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,1 +925,1 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,1 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,1 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,1 +1094,0 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,1 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,1 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,1 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_ensemble1.csv b/kaggle_submissions/kaggle_v2_ensemble1.csv new file mode 100644 index 0000000..f6c9003 --- /dev/null +++ b/kaggle_submissions/kaggle_v2_ensemble1.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,0 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,1 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,1 +925,1 +926,0 +927,0 +928,0 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,1 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,1 +1094,1 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,1 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,1 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,1 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_ensembleimproved.csv b/kaggle_submissions/kaggle_v2_ensembleimproved.csv new file mode 100644 index 0000000..5fffef1 --- /dev/null +++ b/kaggle_submissions/kaggle_v2_ensembleimproved.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,0 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,1 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,1 +925,1 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,1 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,0 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,1 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,1 +1094,1 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,1 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,1 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,1 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_formula.csv b/kaggle_submissions/kaggle_v2_formula.csv new file mode 100644 index 0000000..be4976c --- /dev/null +++ b/kaggle_submissions/kaggle_v2_formula.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,0 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,0 +911,0 +912,0 +913,0 +914,1 +915,1 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,0 +925,1 +926,0 +927,0 +928,0 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,0 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,1 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,0 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,0 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,0 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,0 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,0 +1094,1 +1095,1 +1096,0 +1097,0 +1098,0 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,1 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,0 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,0 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,0 +1200,0 +1201,1 +1202,0 +1203,0 +1204,0 +1205,0 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,0 +1247,0 +1248,1 +1249,0 +1250,0 +1251,0 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_randforest.csv b/kaggle_submissions/kaggle_v2_randforest.csv new file mode 100644 index 0000000..ee31f3c --- /dev/null +++ b/kaggle_submissions/kaggle_v2_randforest.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,0 +894,0 +895,0 +896,1 +897,0 +898,0 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,0 +911,0 +912,1 +913,1 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,1 +921,0 +922,0 +923,0 +924,1 +925,0 +926,1 +927,0 +928,0 +929,0 +930,0 +931,1 +932,0 +933,1 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,0 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,0 +980,1 +981,1 +982,0 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,0 +991,0 +992,1 +993,0 +994,0 +995,0 +996,0 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,1 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,0 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,1 +1037,0 +1038,0 +1039,0 +1040,1 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,0 +1050,1 +1051,1 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,0 +1058,0 +1059,0 +1060,1 +1061,0 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,1 +1070,1 +1071,1 +1072,0 +1073,1 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,1 +1085,0 +1086,1 +1087,0 +1088,1 +1089,0 +1090,0 +1091,0 +1092,1 +1093,1 +1094,1 +1095,1 +1096,0 +1097,0 +1098,0 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,1 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,0 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,0 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,0 +1173,1 +1174,1 +1175,0 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,0 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,0 +1201,0 +1202,0 +1203,0 +1204,0 +1205,0 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,1 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,0 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,0 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,0 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/kaggle_submissions/kaggle_v2_randforestimproved.csv b/kaggle_submissions/kaggle_v2_randforestimproved.csv new file mode 100644 index 0000000..987fb0a --- /dev/null +++ b/kaggle_submissions/kaggle_v2_randforestimproved.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,0 +912,0 +913,1 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,1 +921,0 +922,0 +923,0 +924,1 +925,1 +926,0 +927,0 +928,0 +929,0 +930,0 +931,1 +932,0 +933,1 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,1 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,1 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,0 +980,1 +981,1 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,0 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,0 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,0 +1031,0 +1032,0 +1033,1 +1034,0 +1035,0 +1036,1 +1037,0 +1038,0 +1039,0 +1040,1 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,1 +1050,1 +1051,1 +1052,1 +1053,1 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,0 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,1 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,0 +1081,0 +1082,0 +1083,0 +1084,1 +1085,0 +1086,1 +1087,0 +1088,1 +1089,1 +1090,0 +1091,1 +1092,1 +1093,1 +1094,1 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,0 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,0 +1173,1 +1174,1 +1175,0 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,1 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,1 +1200,1 +1201,1 +1202,0 +1203,0 +1204,0 +1205,0 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,1 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,1 +1232,0 +1233,0 +1234,0 +1235,1 +1236,1 +1237,1 +1238,0 +1239,0 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,0 +1258,0 +1259,0 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,0 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,0 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,1 +1283,1 +1284,1 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/model_iteration_1.ipynb b/model_iteration_1.ipynb new file mode 100644 index 0000000..de4f8f2 --- /dev/null +++ b/model_iteration_1.ipynb @@ -0,0 +1,640 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook, I begin with a model that is dervied from experience using [DataQuest](https://www.dataquest.io/mission/74/getting-started-with-kaggle), and then annotate a variety of revisions tried since. Accuracies are also reported." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data from the Titanic CSV\n", + "\n", + "Int64Index: 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: 90.5+ KB\n", + "----------------------\n", + "Data from the Test CSV\n", + "\n", + "Int64Index: 418 entries, 0 to 417\n", + "Data columns (total 11 columns):\n", + "PassengerId 418 non-null int64\n", + "Pclass 418 non-null int64\n", + "Name 418 non-null object\n", + "Sex 418 non-null object\n", + "Age 332 non-null float64\n", + "SibSp 418 non-null int64\n", + "Parch 418 non-null int64\n", + "Ticket 418 non-null object\n", + "Fare 417 non-null float64\n", + "Cabin 91 non-null object\n", + "Embarked 418 non-null object\n", + "dtypes: float64(2), int64(4), object(5)\n", + "memory usage: 39.2+ KB\n" + ] + } + ], + "source": [ + "#importing and setting up my dataframes\n", + "import pandas as pd\n", + "from pandas import Series,DataFrame\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "titanic_data = pd.read_csv('data/train.csv', dtype={'Age':np.float64})\n", + "test_data = pd.read_csv('data/test.csv', dtype={'Age':np.float64})\n", + "\n", + "# titanic_data.head()\n", + "# test_data.head()\n", + "\n", + "print 'Data from the Titanic CSV'\n", + "titanic_data.info()\n", + "print '----------------------'\n", + "print 'Data from the Test CSV'\n", + "test_data.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we want to start with our titanic_data set and clean it up, filling in the missing values with either the mean or median values. In the event of categories, we'll fill in the mode of the data. For this example, I'll fill it in with the median values (in the event that some of these distributions are skewed or huge outliers are present)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 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 891 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 891 non-null object\n", + "dtypes: float64(2), int64(5), object(5)\n", + "memory usage: 90.5+ KB\n", + "None\n" + ] + } + ], + "source": [ + "for name in titanic_data.describe():\n", + " titanic_data[name] = titanic_data[name].fillna(titanic_data[name].median()) #this works for numeric columns\n", + "\n", + "#now for categories that we care about like embarked\n", + "\n", + "titanic_data['Embarked'] = titanic_data['Embarked'].fillna('S') #this is the most frequent value\n", + " \n", + "print titanic_data.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Further, we'll make all our categories into numeric entities (sex, embarked)..." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "titanic_data.loc[titanic_data['Sex'] == 'male', 'Sex'] = 0\n", + "titanic_data.loc[titanic_data['Sex'] == 'female', 'Sex'] = 1\n", + "\n", + "titanic_data.loc[titanic_data['Embarked'] == 'S', 'Embarked'] = 0\n", + "titanic_data.loc[titanic_data['Embarked'] == 'C', 'Embarked'] = 1\n", + "titanic_data.loc[titanic_data['Embarked'] == 'Q', 'Embarked'] = 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's predict some things! We'll try out a linear regression first." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.783389450056\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:25: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.cross_validation import KFold\n", + "\n", + "predictors = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked'] #the only things we care about for this one\n", + "\n", + "#initialize algorithm type\n", + "algorith = LinearRegression()\n", + "\n", + "#let's generate some cross validation folds \n", + "kf = KFold(titanic_data.shape[0], n_folds=3, random_state=1)\n", + "\n", + "#generate a list of predictions\n", + "pred = []\n", + "for train, test in kf:\n", + " train_predictors = (titanic_data[predictors].iloc[train,:])\n", + " train_target = titanic_data['Survived'].iloc[train]\n", + " algorith.fit(train_predictors, train_target)\n", + " test_predictions = algorith.predict(titanic_data[predictors].iloc[test,:])\n", + " pred.append(test_predictions)\n", + " \n", + "#assess our training\n", + "pred = np.concatenate(pred, axis=0)\n", + "pred[pred > 0.5] = 1\n", + "pred[pred <= 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic_data['Survived']] / len(pred))\n", + "print accuracy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In an attempt to be better than this, I will give a logistic regression a shot." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.787878787879\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn import cross_validation\n", + "\n", + "log_alg = LogisticRegression(random_state=1)\n", + "scores = cross_validation.cross_val_score(log_alg, titanic_data[predictors], titanic_data['Survived'], cv=3)\n", + "print scores.mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At this point, I will now perform some analysis on the test data provided by kaggle directly, then make my first submission." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1\n", + " 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 1\n", + " 1 1 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0\n", + " 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0\n", + " 0 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1\n", + " 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0\n", + " 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1\n", + " 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0\n", + " 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0\n", + " 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0\n", + " 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0\n", + " 0 1 1 1 1 1 0 1 0 0 0]\n" + ] + } + ], + "source": [ + "#I've already imported this data earlier, so that's nice.\n", + "test_data['Age'] = test_data['Age'].fillna(titanic_data['Age'].median())\n", + "test_data['Fare'] = test_data['Fare'].fillna(test_data['Fare'].median())\n", + "\n", + "test_data.loc[test_data['Sex'] == 'male', 'Sex'] = 0\n", + "test_data.loc[test_data['Sex'] == 'female', 'Sex'] = 1\n", + "\n", + "test_data['Embarked'] = test_data['Embarked'].fillna('S')\n", + "test_data.loc[test_data['Embarked'] == 'S', 'Embarked'] = 0\n", + "test_data.loc[test_data['Embarked'] == 'C', 'Embarked'] = 1\n", + "test_data.loc[test_data['Embarked'] == 'Q', 'Embarked'] = 2\n", + "\n", + "#apply an algorithm\n", + "algo = LogisticRegression(random_state=1)\n", + "algo.fit(titanic_data[predictors], titanic_data['Survived'])\n", + "predicts = algo.predict(test_data[predictors])\n", + "\n", + "print predicts\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':predicts})\n", + "submission.to_csv('kaggle.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After submitting, I was told the accuracy of the above model was: 0.75120 (along with my other classmates - what fun!)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, I would like to start making revisions to this model. From my exploration earlier, I have some assumptions about the relationships between a variety of variables. I want to use these assumed relationships to add robust predicting to my model. I start with a fresh set of training folds:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.421738\n", + " Iterations 7\n", + "0.824915824916\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:36: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.cross_validation import KFold\n", + "import statsmodels.formula.api as smf\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "titanic = pd.read_csv('data/train.csv', dtype={'Age':np.float64})\n", + "test = pd.read_csv('data/test.csv', dtype={'Age':np.float64})\n", + "\n", + "for name in titanic.describe():\n", + " titanic[name] = titanic[name].fillna(titanic[name].median()) #this works for numeric columns\n", + "#now for categories that we care about like embarked\n", + "titanic['Embarked'] = titanic['Embarked'].fillna('S') #this is the most frequent value\n", + "titanic.loc[titanic['Sex'] == 'male', 'Sex'] = 0\n", + "titanic.loc[titanic['Sex'] == 'female', 'Sex'] = 1\n", + "titanic.loc[titanic['Embarked'] == 'S', 'Embarked'] = 0\n", + "titanic.loc[titanic['Embarked'] == 'C', 'Embarked'] = 1\n", + "titanic.loc[titanic['Embarked'] == 'Q', 'Embarked'] = 2 \n", + "\n", + "#now, I'm going to create a few factors which weigh some of these elements more than others (like being a young rich woman)\n", + "\n", + "predictors = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked'] #the only things we care about for this one\n", + "\n", + "#initialize algorithm type\n", + "# formula = 'Survived ~ C(Sex) + Age + C(Pclass) + Fare' #80%\n", + "# formula = 'Survived ~ C(Sex) + SibSp + C(Pclass)' #80%\n", + "# formula = 'Survived ~ Embarked * Fare + Sex * Pclass + Age * Sex + Pclass * Sex + Sex * SibSp' #82% \n", + "formula = 'Survived ~ Sex * Pclass + Sex * Age + SibSp * Sex + Parch * Age + Pclass * Age' #83%\n", + "model = smf.logit(formula, data=titanic)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred >= 0.5] = 1\n", + "pred[pred < 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "#well...let's try it on the test data and submit to kaggle!\n", + "test['Age'] = test['Age'].fillna(titanic['Age'].median())\n", + "test['Fare'] = test['Fare'].fillna(titanic['Fare'].median())\n", + "\n", + "test.loc[test['Sex'] == 'male', 'Sex'] = 0\n", + "test.loc[test['Sex'] == 'female', 'Sex'] = 1\n", + "\n", + "test['Embarked'] = test['Embarked'].fillna('S')\n", + "test.loc[test['Embarked'] == 'S', 'Embarked'] = 0\n", + "test.loc[test['Embarked'] == 'C', 'Embarked'] = 1\n", + "test.loc[test['Embarked'] == 'Q', 'Embarked'] = 2\n", + "\n", + "new = test\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_rev1.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This first revision scored me a 0.78469 on the scoreboard (it informs me this is an improvement of 0.03349 and launched me 1,357 positions on the leaderboard sitting my comfy at 2,003). For this next revision, I'll push a little harder on the sibling/spouse and parch relationship which I thought was powerful in my exploration but didn't maximize here." + ] + }, + { + "cell_type": "code", + "execution_count": 301, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.395759\n", + " Iterations 8\n", + "0.83950617284\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:13: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "formula = 'Survived ~ (Pclass + SibSp + Parch + Embarked + Fare) * (Sex + Age + Pclass + SibSp + Fare)' #84% with score only of 0.77512\n", + "\n", + "model = smf.logit(formula, data=titanic)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred > 0.5] = 1\n", + "pred[pred <= 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "#let's give it a shot\n", + "new = test\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts >= 0.5] = int(1)\n", + "predicts[predicts < 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_rev2.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This revision did not perform better than the original (0.77512, which is close), however I believe this implies there is something interesting going on in the data. The test data is a little bit different than the training data, so the more specific the training formula, the less useful it is for the test data. I look forward to learning more on how to build intuition about data manipulation. I wonder if creating a recode metric might be interesting." + ] + }, + { + "cell_type": "code", + "execution_count": 302, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.432147\n", + " Iterations 7\n", + "0.813692480359\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:13: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "test['Age_Recode'] = np.log10(test.Age)\n", + "titanic['Age_Recode'] = np.log10(titanic.Age)\n", + "\n", + "formula = 'Survived ~ Sex * Pclass + Sex * Age + Parch * Sex' #82%\n", + "\n", + "model = smf.logit(formula, data=titanic)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred > 0.5] = 1\n", + "pred[pred <= 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "#let's give it a shot\n", + "new = test\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_rev3.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The recode didn't work, and neither did trying to up the current function value (this script scored a 0.76077) so clearly this is a balance between function value and accuracy measure. " + ] + }, + { + "cell_type": "code", + "execution_count": 303, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.407647\n", + " Iterations 7\n", + "0.828282828283\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:13: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "test['Age_Recode'] = np.log10(test.Age)\n", + "titanic['Age_Recode'] = np.log10(titanic.Age)\n", + "\n", + "formula = 'Survived ~ Sex * Pclass + Sex * Age_Recode + Parch * Sex + Age_Recode * Embarked + Age_Recode * SibSp' #82%\n", + "\n", + "model = smf.logit(formula, data=titanic)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred > 0.5] = 1\n", + "pred[pred <= 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "#let's give it a shot\n", + "new = test\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_rev4.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This was my last first revision model with score of 0.77512, not bad, but not an improvement. I'm excited to learn about more data mapping techniques to improve my current model!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/model_iteration_2.ipynb b/model_iteration_2.ipynb new file mode 100644 index 0000000..51c46dd --- /dev/null +++ b/model_iteration_2.ipynb @@ -0,0 +1,724 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model Iteration 2\n", + "In this notebook I explore several model types as inspired by resources which will be cited throughout." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In my first iteration, I was able to achieve a score of just over 78%. In this first run of trying different model types, I complete the DataQuest tutorial on random forests. " + ] + }, + { + "cell_type": "code", + "execution_count": 342, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#First, let's upload everything, get the data sets to \n", + "#some level of functionality\n", + "\n", + "import pandas as pd\n", + "from pandas import Series,DataFrame\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn import cross_validation\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.feature_selection import SelectKBest, f_classif\n", + "from sklearn.ensemble import GradientBoostingClassifier\n", + "from sklearn.linear_model import LogisticRegression\n", + "import re\n", + "import operator\n", + "%matplotlib inline\n", + "\n", + "titanic_master = pd.read_csv('data/train.csv', dtype={'Age':np.float64})\n", + "test_data = pd.read_csv('data/test.csv', dtype={'Age':np.float64})\n", + "\n", + "#now for filling in the missing data in the two datasets\n", + "titanic_master['Age'] = titanic_master['Age'].fillna(titanic_master['Age'].median())\n", + "titanic_master['Fare'] = titanic_master['Fare'].fillna(titanic_master['Fare'].median())\n", + "titanic_master.loc[titanic_master['Sex'] == 'male', 'Sex'] = 0\n", + "titanic_master.loc[titanic_master['Sex'] == 'female', 'Sex'] = 1\n", + "titanic_master['Embarked'] = titanic_master['Embarked'].fillna('S')\n", + "titanic_master.loc[titanic_master['Embarked'] == 'S', 'Embarked'] = 0\n", + "titanic_master.loc[titanic_master['Embarked'] == 'C', 'Embarked'] = 1\n", + "titanic_master.loc[titanic_master['Embarked'] == 'Q', 'Embarked'] = 2\n", + "\n", + "test_data['Age'] = test_data['Age'].fillna(titanic_master['Age'].median())\n", + "test_data['Fare'] = test_data['Fare'].fillna(titanic_master['Fare'].median())\n", + "test_data.loc[test_data['Sex'] == 'male', 'Sex'] = 0\n", + "test_data.loc[test_data['Sex'] == 'female', 'Sex'] = 1\n", + "test_data['Embarked'] = test_data['Embarked'].fillna('S')\n", + "test_data.loc[test_data['Embarked'] == 'S', 'Embarked'] = 0\n", + "test_data.loc[test_data['Embarked'] == 'C', 'Embarked'] = 1\n", + "test_data.loc[test_data['Embarked'] == 'Q', 'Embarked'] = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 343, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.820426487093\n" + ] + } + ], + "source": [ + "#now, to get into the suggestions from Dataquest...\n", + "predictors = ['Pclass','Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']\n", + "alg = RandomForestClassifier(random_state=1, n_estimators=150, min_samples_split=4, min_samples_leaf=2)\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "scores = cross_validation.cross_val_score(alg,titanic_master[predictors],titanic_master['Survived'],cv=3)\n", + "print scores.mean() " + ] + }, + { + "cell_type": "code", + "execution_count": 344, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#I'm going to pause here and actually just apply this to the test data and submit this.\n", + "alg.fit(titanic_master[predictors], titanic_master['Survived'])\n", + "predictions = alg.predict_proba(test_data[predictors].astype(float))[:,1]\n", + "\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "submission.to_csv('kaggle_v2_randforest.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This random forest implementation achieves a score of 0.76077, which is not as compelling as I was able to achieve in my first model iteration. Thinking further ahead (and as suggested by the Dataquest tutorial as well as [this blog](http://elenacuoco.altervista.org/blog/archives/1195) I create different data types to explore." + ] + }, + { + "cell_type": "code", + "execution_count": 345, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#family size\n", + "titanic_master['Famsize'] = titanic_master['SibSp'] + titanic_master['Parch']\n", + "test_data['Famsize'] = test_data['SibSp'] + test_data['Parch']\n", + "\n", + "#family size, including the individual\n", + "titanic_master['Count_Individ'] = titanic_master['Famsize'] + 1\n", + "test_data['Count_Individ'] = test_data['Famsize'] + 1\n", + "\n", + "#name length \n", + "titanic_master['Namelen'] = titanic_master['Name'].apply(lambda x: len(x))\n", + "test_data['Namelen'] = test_data['Name'].apply(lambda x: len(x))\n", + "\n", + "#age groups\n", + "titanic_master['Agecat']= titanic_master['Age']\n", + "titanic_master.loc[(titanic_master.Age <= 10), 'Agecat'] = 1 #child\n", + "titanic_master.loc[(titanic_master.Age > 60), 'Agecat'] = 4 #senior\n", + "titanic_master.loc[(titanic_master.Age > 10) & (titanic_master.Age <= 30), 'Agecat'] = 2 #young adult\n", + "titanic_master.loc[(titanic_master.Age > 30) & (titanic_master.Age <= 60), 'Agecat'] = 3 #adult\n", + "test_data['Agecat']= test_data['Age']\n", + "test_data.loc[(test_data.Age <= 10), 'Agecat'] = 1\n", + "test_data.loc[(test_data.Age > 60), 'Agecat'] = 4\n", + "test_data.loc[(test_data.Age > 10) & (test_data.Age <= 30), 'Agecat'] = 2\n", + "test_data.loc[(test_data.Age > 30) & (test_data.Age <= 60), 'Agecat'] = 3\n", + "\n", + "#cabin indicator (as seen in blog post)\n", + "titanic_master.loc[titanic_master.Cabin.isnull()==True,'Cabin'] = 0.5\n", + "titanic_master.loc[titanic_master.Cabin.isnull()==False,'Cabin'] = 1.\n", + "test_data.loc[test_data.Cabin.isnull()==True,'Cabin'] = 0.5\n", + "test_data.loc[test_data.Cabin.isnull()==False,'Cabin'] = 1.\n", + "\n", + "#wealth and sex\n", + "titanic_master['ClassSex'] = titanic_master['Sex'] * titanic_master['Pclass']\n", + "test_data['ClassSex'] = test_data['Sex'] * titanic_master['Pclass']\n", + "\n", + "#age and sex\n", + "titanic_master['AgeSex'] = titanic_master['Age'] * titanic_master['Sex']\n", + "test_data['AgeSex'] = test_data['Age'] * test_data['Sex']" + ] + }, + { + "cell_type": "code", + "execution_count": 346, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#title\n", + "def get_title(name):\n", + " title_search = re.search('([A-Za-z]+)\\.', name)\n", + " if title_search:\n", + " return title_search.group(1)\n", + " return \"\"\n", + "\n", + "def replace_titles(x):\n", + " title = x['Title']\n", + " if title in ['Mr', 'don', 'Major', 'Capt', 'Jonkheer', 'Rev', 'Col']:\n", + " return 'Mr'\n", + " elif title in ['Master']:\n", + " return 'Master'\n", + " elif title in ['Mlle', 'Ms', 'Miss', 'Lady']:\n", + " return 'Miss'\n", + " elif title in ['Countess', 'Mme', 'Mrs', 'Dona']:\n", + " return 'Mrs'\n", + " elif title == 'Dr':\n", + " if x['Sex'] == 0:\n", + " return 'Mr'\n", + " else:\n", + " return 'Mrs'\n", + " elif title == '':\n", + " if x['Sex'] == 0:\n", + " return 'Master'\n", + " else:\n", + " return 'Miss'\n", + " else:\n", + " return title\n", + "\n", + "\n", + "titles = titanic_master['Name'].apply(get_title)\n", + "title_mapping = {'Mr': 1, 'Miss': 2, 'Mrs': 3, 'Master': 4, 'Dr': 5, 'Rev': 6, 'Major': 7, 'Col': 7, 'Mlle': 8, 'Mme': 8, 'Don': 9, 'Lady': 10, 'Countess': 10, 'Jonkheer': 10, 'Sir': 9, 'Capt': 7, 'Ms': 2, 'Dona':10}\n", + "for k,v in title_mapping.items():\n", + " titles[titles == k] = v\n", + "titanic_master['Title'] = titles \n", + "titanic_master['Title'] = titanic_master.apply(replace_titles, axis=1)\n", + "\n", + "test_titles = test_data['Name'].apply(get_title)\n", + "title_mapping = {'Mr': 1, 'Miss': 2, 'Mrs': 3, 'Master': 4, 'Dr': 5, 'Rev': 6, 'Major': 7, 'Col': 7, 'Mlle': 8, 'Mme': 8, 'Don': 9, 'Lady': 10, 'Countess': 10, 'Jonkheer': 10, 'Sir': 9, 'Capt': 7, 'Ms': 2, 'Dona':10}\n", + "for k,v in title_mapping.items():\n", + " test_titles[test_titles == k] = v\n", + "test_data['Title'] = test_titles\n", + "test_data['Title'] = test_data.apply(replace_titles, axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 347, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "#family id\n", + "family_id_mapping = {}\n", + "def get_family_id(row):\n", + " last_name = row['Name'].split(',')[0]\n", + " family_id = '{0}{1}'.format(last_name, row['Famsize'])\n", + " if family_id not in family_id_mapping:\n", + " if len(family_id_mapping) == 0:\n", + " current_id = 1\n", + " else:\n", + " current_id = (max(family_id_mapping.items(), key=operator.itemgetter(1))[1] + 1)\n", + " family_id_mapping[family_id]=current_id\n", + " return family_id_mapping[family_id]\n", + "\n", + "family_ids = titanic_master.apply(get_family_id, axis=1)\n", + "family_ids[titanic_master['Famsize'] < 3] = -1\n", + "titanic_master['Familyid'] = family_ids\n", + "\n", + "family_ids = test_data.apply(get_family_id, axis=1)\n", + "family_ids[test_data['Famsize'] < 3] = -1\n", + "test_data['Familyid'] = family_ids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that a bunch of indicators have been added, I want to look over the signal coming from these indicators, and start thinking about the relationships between the strong indicators. I use the approach described in the Dataquest tutorial in order to achieve this. I then apply the model to the testing data in order to see whether there was improvement using this method." + ] + }, + { + "cell_type": "code", + "execution_count": 348, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAE6CAYAAAALL9kIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuYZFV97vHvCyiiwDCiTBsFBjAiGkEJXskxrXiLUUEN\nGLwEVDQnmoDx0QRMlAk50cSYKGISYyBkjFeIIogXkAwtUYPIfeQWFSF4ZJqAglyCQHjzx9o1U9N0\nV1d3rd3de+b9PE89XXt31W+vrq761dprr4tsExER3bXFYhcgIiJGk0QeEdFxSeQRER2XRB4R0XFJ\n5BERHZdEHhHRcbMmckmPk3SJpIubn7dJOlLScklnS7pG0lmSli1EgSMiYmOaSz9ySVsAPwKeDvwu\ncIvt90v6Q2C57aPbKWZERMxkrk0rzwN+YPsG4EBgdbN/NXBQzYJFRMRw5prIXwV8qrm/wvYkgO11\nwE41CxYREcMZumlF0oOAHwN72b5Z0k9sP7zv97fY3nGa52UOgIiIebCtYR43lxr5rwEX2b652Z6U\ntAJA0hhw04DCtHY79thjE38Tjd/lsid+4o96m4u5JPJDgU/3bZ8BHN7cPww4fU5HjoiIKoZK5JIe\nSrnQ+fm+3X8BPF/SNcABwJ/XL15ERMxmqERu+y7bj7R9e9++n9h+nu09bb/A9q3tFXNmH/7wR5FU\n5TY2tvIB8cfHx1stf+IvTuzET/ylHn8u5tSPfF4HkNzmMSQBteJrzm1TERFtkIRbuNgZERFLUBJ5\nRETHJZFHRHRcEnlERMclkUdEdFwSeURExyWRR0R0XBJ5RETHJZFHRHRcEnlERMclkUdEdFwSeURE\nxyWRR0R0XBJ5RETHJZFHRHRcEnlERMclkUdEdFwSeURExyWRR0R0XBJ5RETHJZFHRHRcEnlERMcN\nlcglLZN0qqSrJF0h6emSlks6W9I1ks6StKztwkZExAMNWyM/Hviy7b2AfYCrgaOBc2zvCawBjmmn\niBERMYhsD36AtD1wie09puy/GvhV25OSxoAJ24+f5vme7RijkATUii/aLGtExLAkYVvDPHaYGvlu\nwM2STpZ0saSPSXoosML2JIDtdcBO8y9yRETM11ZDPmZf4K22L5T0QUqzytSq64xV2VWrVq2/Pz4+\nzvj4+JwLGhGxKZuYmGBiYmJezx2maWUF8O+2d2+2f4WSyPcAxvuaVs5t2tCnPj9NKxERc1S1aaVp\nPrlB0uOaXQcAVwBnAIc3+w4DTp97USMiYlSz1sgBJO0DnAg8CLgWeD2wJXAKsDNwPXCI7VuneW5q\n5BERczSXGvlQiXzEwiSRR0TMUe1eKxERsYQlkUdEdFwSeURExyWRR0R0XBJ5RETHJZFHRHRcEnlE\nLIqxsZVIqnIbG1u52H/Ooko/8o2jpR95xALJZ3ew9COPiNiMJJFHRHRcEnlERMclkUdEdFwSeURE\nxyWRR0R0XBJ5RETHJZFHRHRcEnlERMclkUdEdFwSeURExyWRR0R0XBJ5RETHJZFHRHRcEnlERMdt\nNcyDJF0H3AbcD9xr+2mSlgOfBXYFrgMOsX1bS+WMiIgZDFsjvx8Yt/0U209r9h0NnGN7T2ANcEwb\nBYyIiMGGTeSa5rEHAqub+6uBg2oVKiIihjdsIjfwNUnfkXREs2+F7UkA2+uAndooYEREDDZUGzmw\nv+0bJT0SOFvSNTxwsb0ZF8xbtWrV+vvj4+OMj4/PsZgREZu2iYkJJiYm5vXcOS++LOlY4A7gCEq7\n+aSkMeBc23tN8/gsvhwRD5DP7mBVF1+W9FBJ2zb3Hwa8AFgLnAEc3jzsMOD0eZU2IiJGMkzTygrg\nNEluHv9J22dLuhA4RdIbgOuBQ1osZ0REzGDOTStzPkCaViJiGvnsDla1aSUiIpa2JPKIiI5LIo+I\n6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4\nJPKIiI5LIo+I6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouKET\nuaQtJF0s6Yxme7mksyVdI+ksScvaK2ZERMxkLjXyo4Ar+7aPBs6xvSewBjimZsEiImI4QyVySY8B\nXgyc2Lf7QGB1c381cFDdokVExDCGrZF/EHgn4L59K2xPAtheB+xUuWwRETGErWZ7gKRfByZtXypp\nfMBDPdMvVq1atf7++Pg44+ODwkREbH4mJiaYmJiY13Nlz5h/ywOk9wKvBe4DtgG2A04D9gPGbU9K\nGgPOtb3XNM/3bMcYhSQGfIfMNRptljUiNshndzBJ2NYwj521acX2u2zvYnt34DeBNbZfB3wROLx5\n2GHA6fMsb0REjGCUfuR/Djxf0jXAAc12REQssFmbVkY+QJpWImIa+ewOVrVpJSIilrYk8oiIjksi\nj4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I\n6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouCTyiIiOSyKPiOi4\nWRO5pK0lfVvSJZLWSjq22b9c0tmSrpF0lqRl7Rc3IiKmku3ZHyQ91PZdkrYEvgkcCbwSuMX2+yX9\nIbDc9tHTPNfDHGO+JAG14os2yxoRG+SzO5gkbGuYxw7VtGL7rubu1sBWlFf/QGB1s381cNAcyxkR\nERUMlcglbSHpEmAd8DXb3wFW2J4EsL0O2Km9YkZEzM3Y2EokVbmNja1c7D9noK2GeZDt+4GnSNoe\nOE3SE3ngOdGM5zWrVq1af398fJzx8fE5FzQiYi4mJ6+nVtPN5ORQLRwjmZiYYGJiYl7PHaqNfKMn\nSO8G7gKOAMZtT0oaA861vdc0j08beUQ8QNuf3a7nhqpt5JIe0euRImkb4PnAVcAZwOHNww4DTp9X\naSMiYiTDNK08ClgtaQtK4v+s7S9LOh84RdIbgOuBQ1osZ0REzGDOTStzPkCaViJiGmlameWItbsf\nRkTE0pVEHhHRcUnkEREdl0QeEdFxSeQRER2XRB7Rks1piHgsrnQ/3Dhauh9GNXlvDpbuh7McMd0P\nIyI2H0nkEREdl0QeEdFxSeQRER2XRB4R0XELksjTBSsioj1DrRA0uu6s0hER0TVpWomI6Lgk8oiI\njksij4jouCTyiIiOSyKPiOi4JPKIiI5LIo+I6Lgk8oiIjksij4jouFkTuaTHSFoj6QpJayUd2exf\nLulsSddIOkvSsvaLGxERUw1TI78PeLvtJwLPBN4q6fHA0cA5tvcE1gDHtFfMiIiYyayJ3PY625c2\n9+8ArgIeAxwIrG4etho4qK1CRkTEzObURi5pJfBk4Hxghe1JKMke2Kl24SIiYnZDz34oaVvgX4Cj\nbN8haeqUhgOmOFzVd3+8uUVERM/ExAQTExPzeq6GWRla0lbAmcBXbB/f7LsKGLc9KWkMONf2XtM8\n11kpOzZHeW8O1vbr0/XXXxK2h5q7e9imlX8Eruwl8cYZwOHN/cOA04cuYUREVDNrjVzS/sB5wFrK\n15uBdwEXAKcAOwPXA4fYvnWa56dGHpulvDcHS418liPOoUY+VNPKiIVJIo/NUt6bgyWRz3LEFppW\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.81593714927\n" + ] + } + ], + "source": [ + "predictors = ['Pclass','Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked','Famsize', 'Title', 'Familyid', 'Count_Individ', 'AgeSex', 'ClassSex', 'Agecat', 'Cabin']\n", + "selector = SelectKBest(f_classif, k=5)\n", + "selector.fit(titanic_master[predictors], titanic_master['Survived'])\n", + "scores = -np.log10(selector.pvalues_)\n", + "\n", + "plt.bar(range(len(predictors)), scores)\n", + "plt.xticks(range(len(predictors)), predictors, rotation='vertical')\n", + "plt.show()\n", + "\n", + "best_predictors = ['Pclass', 'Sex', 'Fare', 'Title', 'AgeSex', 'ClassSex']\n", + "alg = RandomForestClassifier(random_state=1, n_estimators=150, min_samples_split=8, min_samples_leaf=4)\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "scores = cross_validation.cross_val_score(alg,titanic_master[best_predictors],titanic_master['Survived'],cv=3)\n", + "print scores.mean() \n", + "\n", + "#apply to testing data, use best_predictors\n", + "alg.fit(titanic_master[best_predictors], titanic_master['Survived'])\n", + "predictions = alg.predict_proba(test_data[best_predictors].astype(float))[:,1]\n", + "\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "submission.to_csv('kaggle_v2_randforestimproved.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Even with this improved random forest, my score still sits at 0.76077. This implies to me that I've distilled some of the fundamental signal using this method, but there is a chance that this method has overfit the data by some amount. Taking a cue from the Dataquest model, I next explore ensembling and gradient boosting in order to pull together different methodologies in order to get a stronger correlation." + ] + }, + { + "cell_type": "code", + "execution_count": 349, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.817059483726\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:19: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "#I'll try gradient boosting and a logistic regression in this first pass, with all of the predictors\n", + "algos = [[GradientBoostingClassifier(random_state=1, n_estimators=25, max_depth=3), predictors],[LogisticRegression(random_state=1), predictors]]\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "\n", + "preds = []\n", + "for train, test in kf:\n", + " train_tar = titanic_master['Survived'].iloc[train]\n", + " full_test_pred = []\n", + " for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors].iloc[train,:], train_tar)\n", + " test_preds = alg.predict_proba(titanic_master[predictors].iloc[test,:].astype(float))[:,1]\n", + " full_test_pred.append(test_preds)\n", + " test_preds = (full_test_pred[0]*2 + full_test_pred[1])/3 #this weighs gradient heavily equally\n", + " test_preds[test_preds <= 0.5] = 0\n", + " test_preds[test_preds >0.5] = 1\n", + " preds.append(test_preds)\n", + "\n", + "predictions = np.concatenate(preds, axis=0)\n", + "accuracy = sum(predictions[predictions == titanic_master['Survived']])/len(predictions)\n", + "print accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": 350, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#for a final submission\n", + "final_predictions = []\n", + "for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors], titanic_master['Survived'])\n", + " predictions = alg.predict_proba(test_data[predictors].astype(float))[:,1]\n", + " final_predictions.append(predictions)\n", + "\n", + "predictions = (final_predictions[0] * 2 + final_predictions[1]) / 3\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "submission.to_csv('kaggle_v2_ensemble1.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This ensemble brought my score up to 0.78947, which is only a small amount better than my first iteration model score using a simple formula. I now explore improvements to this model, starting with the predictors (namely, narrowing them down to known quantities with signal)." + ] + }, + { + "cell_type": "code", + "execution_count": 351, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.822671156004\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:21: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "grad_pred = ['Pclass','Sex', 'Age', 'Fare', 'Embarked', 'Title', 'Familyid', 'Famsize', 'ClassSex', 'AgeSex']\n", + "log_pred = ['Pclass', 'Sex', 'Fare', 'Title', 'Famsize', 'Age', 'Embarked', 'ClassSex', 'AgeSex']\n", + "\n", + "algos = [[GradientBoostingClassifier(random_state=1, n_estimators=25, max_depth=3), grad_pred],[LogisticRegression(random_state=1), log_pred]]\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "\n", + "preds = []\n", + "for train, test in kf:\n", + " train_tar = titanic_master['Survived'].iloc[train]\n", + " full_test_pred = []\n", + " for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors].iloc[train,:], train_tar)\n", + " test_preds = alg.predict_proba(titanic_master[predictors].iloc[test,:].astype(float))[:,1]\n", + " full_test_pred.append(test_preds)\n", + " test_preds = (full_test_pred[0] * 3 + full_test_pred[1]) / 4\n", + " test_preds[test_preds <= 0.5] = 0\n", + " test_preds[test_preds >0.5] = 1\n", + " preds.append(test_preds)\n", + "\n", + "predictions = np.concatenate(preds, axis=0)\n", + "accuracy = sum(predictions[predictions == titanic_master['Survived']])/len(predictions)\n", + "print accuracy\n", + "\n", + "#for test data\n", + "final_predictions = []\n", + "for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors], titanic_master['Survived'])\n", + " predictions = alg.predict_proba(test_data[predictors].astype(float))[:,1]\n", + " final_predictions.append(predictions)\n", + "\n", + "predictions = (final_predictions[0] * 3 + final_predictions[1]) / 4\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "submission.to_csv('kaggle_v2_ensembleimproved.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This indicator adjustment actually got me to the \"advertised\" accuracy of 0.79904 from the Dataquest experience. Now, I want to explore the relationships I had begun to explore in my first exploration, but now with more advanced categories of data. I draw upon inspiration from the blog post mentioned earlier, however the formula is my own and is based upon the data mining technique covered in ThinkStats." + ] + }, + { + "cell_type": "code", + "execution_count": 352, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 0.409502\n", + " Iterations 8\n", + "0.83164983165\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:11: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "import statsmodels.formula.api as smf\n", + "\n", + "formula = 'Survived~ClassSex*Age+Fare+Title+Famsize*Pclass+Embarked*Agecat'\n", + "model = smf.logit(formula, data=titanic_master)\n", + "results = model.fit()\n", + "\n", + "#assess our training\n", + "pred = results.predict()\n", + "pred[pred >= 0.5] = 1\n", + "pred[pred < 0.5] = 0\n", + "accuracy = sum(pred[pred == titanic_master['Survived']] / len(pred))\n", + "print accuracy\n", + "\n", + "new = test_data\n", + "predicts = results.predict(new)\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "# print submission\n", + "submission.to_csv('kaggle_v2_formula.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This self-defined model achieved me a score just slightly less than that of the dataquest version, 0.79900. I'm excited that I've seemed to hone in on some of the most powerful relationships using intuition and the \"goodness\" of the predictors score as achieved earlier. I'm going to define new categories based on some of these powerful relationships and then apply them to an ensembled approach which has given me my best scores yet. I'm also going to make some fare and family relationship joint indicators, as inspired by the blog I've mentioned, as well as try out some decision tree work inspired by [this](https://www.kaggle.com/c/titanic/forums/t/6821/titanic-getting-started-with-r-full-guide-to-0-81340) resource Paul cited in the class." + ] + }, + { + "cell_type": "code", + "execution_count": 353, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.811447811448\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:18: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "\n", + "predictors = best_predictors\n", + "\n", + "regr = DecisionTreeRegressor(max_depth=len(predictors))\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "\n", + "preds = []\n", + "for train, test in kf:\n", + " train_tar = titanic_master['Survived'].iloc[train]\n", + " regr.fit(titanic_master[predictors].iloc[train,:], train_tar)\n", + " test_preds = regr.predict(titanic_master[predictors].iloc[test,:].astype(float))\n", + " test_preds[test_preds >= 0.5] = 1\n", + " test_preds[test_preds < 0.5] = 0\n", + " preds.append(test_preds[0:])\n", + "\n", + "predictions = np.concatenate(preds,axis=0)\n", + "accuracy = sum(predictions[predictions == titanic_master['Survived']])/len(predictions)\n", + "print accuracy\n", + "\n", + "#on test data\n", + "regr.fit(titanic_master[predictors], titanic_master['Survived'])\n", + "predicts = regr.predict(test_data[predictors])\n", + "\n", + "predicts[predicts > 0.5] = int(1)\n", + "predicts[predicts <= 0.5] = int(0)\n", + "\n", + "final_pred = []\n", + "for element in predicts:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "\n", + "# print submission\n", + "submission.to_csv('kaggle_v2_decisiontree.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "This decision tree implementation recieved a scores of 0.77512. Not bad, but also not an improvement over the Dataquest model. The blog further suggests applying a random forest to the decision trees. Instead, I'm going to try an ensemble of a gradient, logistic, and decision tree in my last attempt at betterng the Dataquest model. This is largely driven by the idea that the decision tree gives some flexibility in a model which performs relatively well." + ] + }, + { + "cell_type": "code", + "execution_count": 354, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.827160493827\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vpreston/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:21: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index\n" + ] + } + ], + "source": [ + "dtr_pred = best_predictors\n", + "grad_pred = ['Pclass','Sex', 'Age', 'Fare', 'Embarked', 'Title', 'Familyid', 'Famsize', 'ClassSex', 'AgeSex']\n", + "log_pred = ['Pclass', 'Sex', 'Fare', 'Title', 'Famsize', 'Age', 'Embarked', 'ClassSex', 'AgeSex']\n", + "algos = [[DecisionTreeRegressor(max_depth=3),dtr_pred], [GradientBoostingClassifier(random_state=1, n_estimators=25, max_depth=3), grad_pred],[LogisticRegression(random_state=1), log_pred]]\n", + "kf = cross_validation.KFold(titanic_master.shape[0], n_folds=3, random_state=1)\n", + "\n", + "preds = []\n", + "for train, test in kf:\n", + " train_tar = titanic_master['Survived'].iloc[train]\n", + " full_test_pred = []\n", + " for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors].iloc[train,:], train_tar)\n", + " test_preds = alg.predict(titanic_master[predictors].iloc[test,:].astype(float))\n", + " full_test_pred.append(test_preds)\n", + " test_preds = (full_test_pred[0]*2 + full_test_pred[1] + full_test_pred[2]) / 4\n", + " test_preds[test_preds <= 0.5] = 0\n", + " test_preds[test_preds >0.5] = 1\n", + " preds.append(test_preds)\n", + "\n", + "predictions = np.concatenate(preds,axis=0)\n", + "accuracy = sum(predictions[predictions == titanic_master['Survived']])/len(predictions)\n", + "print accuracy\n", + "\n", + "#on test data\n", + "final_predictions = []\n", + "for alg, predictors in algos:\n", + " alg.fit(titanic_master[predictors], titanic_master['Survived'])\n", + " predictions = alg.predict(test_data[predictors].astype(float))\n", + " final_predictions.append(predictions)\n", + "\n", + "predictions = (final_predictions[0] * 2 + final_predictions[1] + final_predictions[2]) / 4\n", + "predictions[predictions <= 0.5] = 0\n", + "predictions[predictions > 0.5] = 1\n", + "\n", + "final_pred = []\n", + "for element in predictions:\n", + " final_pred.append(int(element))\n", + "\n", + "#now make a submission dataframe for Kaggle\n", + "submission = pd.DataFrame({'PassengerId': test_data['PassengerId'], 'Survived':final_pred})\n", + "\n", + "# print submission\n", + "submission.to_csv('kaggle_v2_decisiontreeensemble.csv', index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This final submission bought me a score of 0.80383. This implies to me that the addition of the decision tree to my previous ensemble was valuable. My theory on this matter is that the decision tree offers some amount of implicit weighting to individuals based upon the factors given. This both allows for more variance in the accuracy (which I consider to be good in this case because at about 0.799 it is really only a few values which need to be flipped) and also means that overfitting to the data can be easy. To avoid the overfitting data, I aimed to keep my fold accuracy at about the point which seems to yield the best results on the testing data (just over 80%). More than this number seems to get me data that matches well with the training but poorly with the testing, whereas less gets me...less. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At the conclusion of this warmup project, I feel that I've had a chance to practice and read more on data cleaning, data mining, formulaic approaches to fitting data, and built-in data fitting packages in scikitlearn. I am also left with a few questions: how does one detext overfitting? is there a way to predict testing accuracy without crossreferncing the answers? what ethodical approach to data scientists typically take to finding and fitting a model to data? how much of data science is being clever (not necessarily being analytical)? " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I enjoyed in this last iteration the ability to explore the concept of ensembles more, and to apply a new technique listed in a class resource on decision trees. The resource expounded on the concept using a programming language R which I abstracted using scikitlearn. I would be curious to see how similar the underlying algorithms are for these two fitting techniques. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}