Skip to content

Instantly share code, notes, and snippets.

@hhammoud01
Created March 31, 2020 19:37
Show Gist options
  • Save hhammoud01/4fd3b810c729ac0c5eecc3bbef8aa50b to your computer and use it in GitHub Desktop.
Save hhammoud01/4fd3b810c729ac0c5eecc3bbef8aa50b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>PassengerId</th>\n <th>Pclass</th>\n <th>Name</th>\n <th>Sex</th>\n <th>Age</th>\n <th>SibSp</th>\n <th>Parch</th>\n <th>Ticket</th>\n <th>Fare</th>\n <th>Cabin</th>\n <th>Embarked</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>892</td>\n <td>3</td>\n <td>Kelly, Mr. James</td>\n <td>male</td>\n <td>34.5</td>\n <td>0</td>\n <td>0</td>\n <td>330911</td>\n <td>7.8292</td>\n <td>NaN</td>\n <td>Q</td>\n </tr>\n <tr>\n <th>1</th>\n <td>893</td>\n <td>3</td>\n <td>Wilkes, Mrs. James (Ellen Needs)</td>\n <td>female</td>\n <td>47.0</td>\n <td>1</td>\n <td>0</td>\n <td>363272</td>\n <td>7.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>2</th>\n <td>894</td>\n <td>2</td>\n <td>Myles, Mr. Thomas Francis</td>\n <td>male</td>\n <td>62.0</td>\n <td>0</td>\n <td>0</td>\n <td>240276</td>\n <td>9.6875</td>\n <td>NaN</td>\n <td>Q</td>\n </tr>\n <tr>\n <th>3</th>\n <td>895</td>\n <td>3</td>\n <td>Wirz, Mr. Albert</td>\n <td>male</td>\n <td>27.0</td>\n <td>0</td>\n <td>0</td>\n <td>315154</td>\n <td>8.6625</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>4</th>\n <td>896</td>\n <td>3</td>\n <td>Hirvonen, Mrs. Alexander (Helga E Lindqvist)</td>\n <td>female</td>\n <td>22.0</td>\n <td>1</td>\n <td>1</td>\n <td>3101298</td>\n <td>12.2875</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " PassengerId Pclass Name Sex \\\n0 892 3 Kelly, Mr. James male \n1 893 3 Wilkes, Mrs. James (Ellen Needs) female \n2 894 2 Myles, Mr. Thomas Francis male \n3 895 3 Wirz, Mr. Albert male \n4 896 3 Hirvonen, Mrs. Alexander (Helga E Lindqvist) female \n\n Age SibSp Parch Ticket Fare Cabin Embarked \n0 34.5 0 0 330911 7.8292 NaN Q \n1 47.0 1 0 363272 7.0000 NaN S \n2 62.0 0 0 240276 9.6875 NaN Q \n3 27.0 0 0 315154 8.6625 NaN S \n4 22.0 1 1 3101298 12.2875 NaN S "
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": "# The code was removed by Watson Studio for sharing."
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>PassengerId</th>\n <th>Survived</th>\n <th>Pclass</th>\n <th>Name</th>\n <th>Sex</th>\n <th>Age</th>\n <th>SibSp</th>\n <th>Parch</th>\n <th>Ticket</th>\n <th>Fare</th>\n <th>Cabin</th>\n <th>Embarked</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1</td>\n <td>0</td>\n <td>3</td>\n <td>Braund, Mr. Owen Harris</td>\n <td>male</td>\n <td>22.0</td>\n <td>1</td>\n <td>0</td>\n <td>A/5 21171</td>\n <td>7.2500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2</td>\n <td>1</td>\n <td>1</td>\n <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n <td>female</td>\n <td>38.0</td>\n <td>1</td>\n <td>0</td>\n <td>PC 17599</td>\n <td>71.2833</td>\n <td>C85</td>\n <td>C</td>\n </tr>\n <tr>\n <th>2</th>\n <td>3</td>\n <td>1</td>\n <td>3</td>\n <td>Heikkinen, Miss. Laina</td>\n <td>female</td>\n <td>26.0</td>\n <td>0</td>\n <td>0</td>\n <td>STON/O2. 3101282</td>\n <td>7.9250</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4</td>\n <td>1</td>\n <td>1</td>\n <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n <td>female</td>\n <td>35.0</td>\n <td>1</td>\n <td>0</td>\n <td>113803</td>\n <td>53.1000</td>\n <td>C123</td>\n <td>S</td>\n </tr>\n <tr>\n <th>4</th>\n <td>5</td>\n <td>0</td>\n <td>3</td>\n <td>Allen, Mr. William Henry</td>\n <td>male</td>\n <td>35.0</td>\n <td>0</td>\n <td>0</td>\n <td>373450</td>\n <td>8.0500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " PassengerId Survived Pclass \\\n0 1 0 3 \n1 2 1 1 \n2 3 1 3 \n3 4 1 1 \n4 5 0 3 \n\n Name Sex Age SibSp \\\n0 Braund, Mr. Owen Harris male 22.0 1 \n1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n2 Heikkinen, Miss. Laina female 26.0 0 \n3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n4 Allen, Mr. William Henry male 35.0 0 \n\n Parch Ticket Fare Cabin Embarked \n0 0 A/5 21171 7.2500 NaN S \n1 0 PC 17599 71.2833 C85 C \n2 0 STON/O2. 3101282 7.9250 NaN S \n3 0 113803 53.1000 C123 S \n4 0 373450 8.0500 NaN S "
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": "# IMPORT TRAIN.CSV, TRAINING DATASET\nbody = client_910b3fcee7834966a2b529dcc93892e3.get_object(Bucket='default-donotdelete-pr-n6fp7qydil3rpx',Key='train.csv')['Body']\n# add missing __iter__ method, so pandas accepts body as file-like object\nif not hasattr(body, \"__iter__\"): body.__iter__ = types.MethodType( __iter__, body )\n\ndf_train = pd.read_csv(body)\ndf_train.head()\n"
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>PassengerId</th>\n <th>Survived</th>\n <th>Pclass</th>\n <th>Name</th>\n <th>Sex</th>\n <th>Age</th>\n <th>SibSp</th>\n <th>Parch</th>\n <th>Ticket</th>\n <th>Fare</th>\n <th>Cabin</th>\n <th>Embarked</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1</td>\n <td>0</td>\n <td>3</td>\n <td>Braund, Mr. Owen Harris</td>\n <td>male</td>\n <td>22.0</td>\n <td>1</td>\n <td>0</td>\n <td>A/5 21171</td>\n <td>7.2500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2</td>\n <td>1</td>\n <td>1</td>\n <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n <td>female</td>\n <td>38.0</td>\n <td>1</td>\n <td>0</td>\n <td>PC 17599</td>\n <td>71.2833</td>\n <td>C85</td>\n <td>C</td>\n </tr>\n <tr>\n <th>2</th>\n <td>3</td>\n <td>1</td>\n <td>3</td>\n <td>Heikkinen, Miss. Laina</td>\n <td>female</td>\n <td>26.0</td>\n <td>0</td>\n <td>0</td>\n <td>STON/O2. 3101282</td>\n <td>7.9250</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4</td>\n <td>1</td>\n <td>1</td>\n <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n <td>female</td>\n <td>35.0</td>\n <td>1</td>\n <td>0</td>\n <td>113803</td>\n <td>53.1000</td>\n <td>C123</td>\n <td>S</td>\n </tr>\n <tr>\n <th>4</th>\n <td>5</td>\n <td>0</td>\n <td>3</td>\n <td>Allen, Mr. William Henry</td>\n <td>male</td>\n <td>35.0</td>\n <td>0</td>\n <td>0</td>\n <td>373450</td>\n <td>8.0500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>5</th>\n <td>6</td>\n <td>0</td>\n <td>3</td>\n <td>Moran, Mr. James</td>\n <td>male</td>\n <td>NaN</td>\n <td>0</td>\n <td>0</td>\n <td>330877</td>\n <td>8.4583</td>\n <td>NaN</td>\n <td>Q</td>\n </tr>\n <tr>\n <th>6</th>\n <td>7</td>\n <td>0</td>\n <td>1</td>\n <td>McCarthy, Mr. Timothy J</td>\n <td>male</td>\n <td>54.0</td>\n <td>0</td>\n <td>0</td>\n <td>17463</td>\n <td>51.8625</td>\n <td>E46</td>\n <td>S</td>\n </tr>\n <tr>\n <th>7</th>\n <td>8</td>\n <td>0</td>\n <td>3</td>\n <td>Palsson, Master. Gosta Leonard</td>\n <td>male</td>\n <td>2.0</td>\n <td>3</td>\n <td>1</td>\n <td>349909</td>\n <td>21.0750</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>8</th>\n <td>9</td>\n <td>1</td>\n <td>3</td>\n <td>Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)</td>\n <td>female</td>\n <td>27.0</td>\n <td>0</td>\n <td>2</td>\n <td>347742</td>\n <td>11.1333</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>9</th>\n <td>10</td>\n <td>1</td>\n <td>2</td>\n <td>Nasser, Mrs. Nicholas (Adele Achem)</td>\n <td>female</td>\n <td>14.0</td>\n <td>1</td>\n <td>0</td>\n <td>237736</td>\n <td>30.0708</td>\n <td>NaN</td>\n <td>C</td>\n </tr>\n <tr>\n <th>10</th>\n <td>11</td>\n <td>1</td>\n <td>3</td>\n <td>Sandstrom, Miss. Marguerite Rut</td>\n <td>female</td>\n <td>4.0</td>\n <td>1</td>\n <td>1</td>\n <td>PP 9549</td>\n <td>16.7000</td>\n <td>G6</td>\n <td>S</td>\n </tr>\n <tr>\n <th>11</th>\n <td>12</td>\n <td>1</td>\n <td>1</td>\n <td>Bonnell, Miss. Elizabeth</td>\n <td>female</td>\n <td>58.0</td>\n <td>0</td>\n <td>0</td>\n <td>113783</td>\n <td>26.5500</td>\n <td>C103</td>\n <td>S</td>\n </tr>\n <tr>\n <th>12</th>\n <td>13</td>\n <td>0</td>\n <td>3</td>\n <td>Saundercock, Mr. William Henry</td>\n <td>male</td>\n <td>20.0</td>\n <td>0</td>\n <td>0</td>\n <td>A/5. 2151</td>\n <td>8.0500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>13</th>\n <td>14</td>\n <td>0</td>\n <td>3</td>\n <td>Andersson, Mr. Anders Johan</td>\n <td>male</td>\n <td>39.0</td>\n <td>1</td>\n <td>5</td>\n <td>347082</td>\n <td>31.2750</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>14</th>\n <td>15</td>\n <td>0</td>\n <td>3</td>\n <td>Vestrom, Miss. Hulda Amanda Adolfina</td>\n <td>female</td>\n <td>14.0</td>\n <td>0</td>\n <td>0</td>\n <td>350406</td>\n <td>7.8542</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>15</th>\n <td>16</td>\n <td>1</td>\n <td>2</td>\n <td>Hewlett, Mrs. (Mary D Kingcome)</td>\n <td>female</td>\n <td>55.0</td>\n <td>0</td>\n <td>0</td>\n <td>248706</td>\n <td>16.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>16</th>\n <td>17</td>\n <td>0</td>\n <td>3</td>\n <td>Rice, Master. Eugene</td>\n <td>male</td>\n <td>2.0</td>\n <td>4</td>\n <td>1</td>\n <td>382652</td>\n <td>29.1250</td>\n <td>NaN</td>\n <td>Q</td>\n </tr>\n <tr>\n <th>17</th>\n <td>18</td>\n <td>1</td>\n <td>2</td>\n <td>Williams, Mr. Charles Eugene</td>\n <td>male</td>\n <td>NaN</td>\n <td>0</td>\n <td>0</td>\n <td>244373</td>\n <td>13.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>18</th>\n <td>19</td>\n <td>0</td>\n <td>3</td>\n <td>Vander Planke, Mrs. Julius (Emelia Maria Vande...</td>\n <td>female</td>\n <td>31.0</td>\n <td>1</td>\n <td>0</td>\n <td>345763</td>\n <td>18.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>19</th>\n <td>20</td>\n <td>1</td>\n <td>3</td>\n <td>Masselmani, Mrs. Fatima</td>\n <td>female</td>\n <td>NaN</td>\n <td>0</td>\n <td>0</td>\n <td>2649</td>\n <td>7.2250</td>\n <td>NaN</td>\n <td>C</td>\n </tr>\n <tr>\n <th>20</th>\n <td>21</td>\n <td>0</td>\n <td>2</td>\n <td>Fynney, Mr. Joseph J</td>\n <td>male</td>\n <td>35.0</td>\n <td>0</td>\n <td>0</td>\n <td>239865</td>\n <td>26.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>21</th>\n <td>22</td>\n <td>1</td>\n <td>2</td>\n <td>Beesley, Mr. Lawrence</td>\n <td>male</td>\n <td>34.0</td>\n <td>0</td>\n <td>0</td>\n <td>248698</td>\n <td>13.0000</td>\n <td>D56</td>\n <td>S</td>\n </tr>\n <tr>\n <th>22</th>\n <td>23</td>\n <td>1</td>\n <td>3</td>\n <td>McGowan, Miss. Anna \"Annie\"</td>\n <td>female</td>\n <td>15.0</td>\n <td>0</td>\n <td>0</td>\n <td>330923</td>\n <td>8.0292</td>\n <td>NaN</td>\n <td>Q</td>\n </tr>\n <tr>\n <th>23</th>\n <td>24</td>\n <td>1</td>\n <td>1</td>\n <td>Sloper, Mr. William Thompson</td>\n <td>male</td>\n <td>28.0</td>\n <td>0</td>\n <td>0</td>\n <td>113788</td>\n <td>35.5000</td>\n <td>A6</td>\n <td>S</td>\n </tr>\n <tr>\n <th>24</th>\n <td>25</td>\n <td>0</td>\n <td>3</td>\n <td>Palsson, Miss. Torborg Danira</td>\n <td>female</td>\n <td>8.0</td>\n <td>3</td>\n <td>1</td>\n <td>349909</td>\n <td>21.0750</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>25</th>\n <td>26</td>\n <td>1</td>\n <td>3</td>\n <td>Asplund, Mrs. Carl Oscar (Selma Augusta Emilia...</td>\n <td>female</td>\n <td>38.0</td>\n <td>1</td>\n <td>5</td>\n <td>347077</td>\n <td>31.3875</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>26</th>\n <td>27</td>\n <td>0</td>\n <td>3</td>\n <td>Emir, Mr. Farred Chehab</td>\n <td>male</td>\n <td>NaN</td>\n <td>0</td>\n <td>0</td>\n <td>2631</td>\n <td>7.2250</td>\n <td>NaN</td>\n <td>C</td>\n </tr>\n <tr>\n <th>27</th>\n <td>28</td>\n <td>0</td>\n <td>1</td>\n <td>Fortune, Mr. Charles Alexander</td>\n <td>male</td>\n <td>19.0</td>\n <td>3</td>\n <td>2</td>\n <td>19950</td>\n <td>263.0000</td>\n <td>C23 C25 C27</td>\n <td>S</td>\n </tr>\n <tr>\n <th>28</th>\n <td>29</td>\n <td>1</td>\n <td>3</td>\n <td>O'Dwyer, Miss. Ellen \"Nellie\"</td>\n <td>female</td>\n <td>NaN</td>\n <td>0</td>\n <td>0</td>\n <td>330959</td>\n <td>7.8792</td>\n <td>NaN</td>\n <td>Q</td>\n </tr>\n <tr>\n <th>29</th>\n <td>30</td>\n <td>0</td>\n <td>3</td>\n <td>Todoroff, Mr. Lalio</td>\n <td>male</td>\n <td>NaN</td>\n <td>0</td>\n <td>0</td>\n <td>349216</td>\n <td>7.8958</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>861</th>\n <td>862</td>\n <td>0</td>\n <td>2</td>\n <td>Giles, Mr. Frederick Edward</td>\n <td>male</td>\n <td>21.0</td>\n <td>1</td>\n <td>0</td>\n <td>28134</td>\n <td>11.5000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>862</th>\n <td>863</td>\n <td>1</td>\n <td>1</td>\n <td>Swift, Mrs. Frederick Joel (Margaret Welles Ba...</td>\n <td>female</td>\n <td>48.0</td>\n <td>0</td>\n <td>0</td>\n <td>17466</td>\n <td>25.9292</td>\n <td>D17</td>\n <td>S</td>\n </tr>\n <tr>\n <th>863</th>\n <td>864</td>\n <td>0</td>\n <td>3</td>\n <td>Sage, Miss. Dorothy Edith \"Dolly\"</td>\n <td>female</td>\n <td>NaN</td>\n <td>8</td>\n <td>2</td>\n <td>CA. 2343</td>\n <td>69.5500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>864</th>\n <td>865</td>\n <td>0</td>\n <td>2</td>\n <td>Gill, Mr. John William</td>\n <td>male</td>\n <td>24.0</td>\n <td>0</td>\n <td>0</td>\n <td>233866</td>\n <td>13.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>865</th>\n <td>866</td>\n <td>1</td>\n <td>2</td>\n <td>Bystrom, Mrs. (Karolina)</td>\n <td>female</td>\n <td>42.0</td>\n <td>0</td>\n <td>0</td>\n <td>236852</td>\n <td>13.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>866</th>\n <td>867</td>\n <td>1</td>\n <td>2</td>\n <td>Duran y More, Miss. Asuncion</td>\n <td>female</td>\n <td>27.0</td>\n <td>1</td>\n <td>0</td>\n <td>SC/PARIS 2149</td>\n <td>13.8583</td>\n <td>NaN</td>\n <td>C</td>\n </tr>\n <tr>\n <th>867</th>\n <td>868</td>\n <td>0</td>\n <td>1</td>\n <td>Roebling, Mr. Washington Augustus II</td>\n <td>male</td>\n <td>31.0</td>\n <td>0</td>\n <td>0</td>\n <td>PC 17590</td>\n <td>50.4958</td>\n <td>A24</td>\n <td>S</td>\n </tr>\n <tr>\n <th>868</th>\n <td>869</td>\n <td>0</td>\n <td>3</td>\n <td>van Melkebeke, Mr. Philemon</td>\n <td>male</td>\n <td>NaN</td>\n <td>0</td>\n <td>0</td>\n <td>345777</td>\n <td>9.5000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>869</th>\n <td>870</td>\n <td>1</td>\n <td>3</td>\n <td>Johnson, Master. Harold Theodor</td>\n <td>male</td>\n <td>4.0</td>\n <td>1</td>\n <td>1</td>\n <td>347742</td>\n <td>11.1333</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>870</th>\n <td>871</td>\n <td>0</td>\n <td>3</td>\n <td>Balkic, Mr. Cerin</td>\n <td>male</td>\n <td>26.0</td>\n <td>0</td>\n <td>0</td>\n <td>349248</td>\n <td>7.8958</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>871</th>\n <td>872</td>\n <td>1</td>\n <td>1</td>\n <td>Beckwith, Mrs. Richard Leonard (Sallie Monypeny)</td>\n <td>female</td>\n <td>47.0</td>\n <td>1</td>\n <td>1</td>\n <td>11751</td>\n <td>52.5542</td>\n <td>D35</td>\n <td>S</td>\n </tr>\n <tr>\n <th>872</th>\n <td>873</td>\n <td>0</td>\n <td>1</td>\n <td>Carlsson, Mr. Frans Olof</td>\n <td>male</td>\n <td>33.0</td>\n <td>0</td>\n <td>0</td>\n <td>695</td>\n <td>5.0000</td>\n <td>B51 B53 B55</td>\n <td>S</td>\n </tr>\n <tr>\n <th>873</th>\n <td>874</td>\n <td>0</td>\n <td>3</td>\n <td>Vander Cruyssen, Mr. Victor</td>\n <td>male</td>\n <td>47.0</td>\n <td>0</td>\n <td>0</td>\n <td>345765</td>\n <td>9.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>874</th>\n <td>875</td>\n <td>1</td>\n <td>2</td>\n <td>Abelson, Mrs. Samuel (Hannah Wizosky)</td>\n <td>female</td>\n <td>28.0</td>\n <td>1</td>\n <td>0</td>\n <td>P/PP 3381</td>\n <td>24.0000</td>\n <td>NaN</td>\n <td>C</td>\n </tr>\n <tr>\n <th>875</th>\n <td>876</td>\n <td>1</td>\n <td>3</td>\n <td>Najib, Miss. Adele Kiamie \"Jane\"</td>\n <td>female</td>\n <td>15.0</td>\n <td>0</td>\n <td>0</td>\n <td>2667</td>\n <td>7.2250</td>\n <td>NaN</td>\n <td>C</td>\n </tr>\n <tr>\n <th>876</th>\n <td>877</td>\n <td>0</td>\n <td>3</td>\n <td>Gustafsson, Mr. Alfred Ossian</td>\n <td>male</td>\n <td>20.0</td>\n <td>0</td>\n <td>0</td>\n <td>7534</td>\n <td>9.8458</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>877</th>\n <td>878</td>\n <td>0</td>\n <td>3</td>\n <td>Petroff, Mr. Nedelio</td>\n <td>male</td>\n <td>19.0</td>\n <td>0</td>\n <td>0</td>\n <td>349212</td>\n <td>7.8958</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>878</th>\n <td>879</td>\n <td>0</td>\n <td>3</td>\n <td>Laleff, Mr. Kristo</td>\n <td>male</td>\n <td>NaN</td>\n <td>0</td>\n <td>0</td>\n <td>349217</td>\n <td>7.8958</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>879</th>\n <td>880</td>\n <td>1</td>\n <td>1</td>\n <td>Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)</td>\n <td>female</td>\n <td>56.0</td>\n <td>0</td>\n <td>1</td>\n <td>11767</td>\n <td>83.1583</td>\n <td>C50</td>\n <td>C</td>\n </tr>\n <tr>\n <th>880</th>\n <td>881</td>\n <td>1</td>\n <td>2</td>\n <td>Shelley, Mrs. William (Imanita Parrish Hall)</td>\n <td>female</td>\n <td>25.0</td>\n <td>0</td>\n <td>1</td>\n <td>230433</td>\n <td>26.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>881</th>\n <td>882</td>\n <td>0</td>\n <td>3</td>\n <td>Markun, Mr. Johann</td>\n <td>male</td>\n <td>33.0</td>\n <td>0</td>\n <td>0</td>\n <td>349257</td>\n <td>7.8958</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>882</th>\n <td>883</td>\n <td>0</td>\n <td>3</td>\n <td>Dahlberg, Miss. Gerda Ulrika</td>\n <td>female</td>\n <td>22.0</td>\n <td>0</td>\n <td>0</td>\n <td>7552</td>\n <td>10.5167</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>883</th>\n <td>884</td>\n <td>0</td>\n <td>2</td>\n <td>Banfield, Mr. Frederick James</td>\n <td>male</td>\n <td>28.0</td>\n <td>0</td>\n <td>0</td>\n <td>C.A./SOTON 34068</td>\n <td>10.5000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>884</th>\n <td>885</td>\n <td>0</td>\n <td>3</td>\n <td>Sutehall, Mr. Henry Jr</td>\n <td>male</td>\n <td>25.0</td>\n <td>0</td>\n <td>0</td>\n <td>SOTON/OQ 392076</td>\n <td>7.0500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>885</th>\n <td>886</td>\n <td>0</td>\n <td>3</td>\n <td>Rice, Mrs. William (Margaret Norton)</td>\n <td>female</td>\n <td>39.0</td>\n <td>0</td>\n <td>5</td>\n <td>382652</td>\n <td>29.1250</td>\n <td>NaN</td>\n <td>Q</td>\n </tr>\n <tr>\n <th>886</th>\n <td>887</td>\n <td>0</td>\n <td>2</td>\n <td>Montvila, Rev. Juozas</td>\n <td>male</td>\n <td>27.0</td>\n <td>0</td>\n <td>0</td>\n <td>211536</td>\n <td>13.0000</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>887</th>\n <td>888</td>\n <td>1</td>\n <td>1</td>\n <td>Graham, Miss. Margaret Edith</td>\n <td>female</td>\n <td>19.0</td>\n <td>0</td>\n <td>0</td>\n <td>112053</td>\n <td>30.0000</td>\n <td>B42</td>\n <td>S</td>\n </tr>\n <tr>\n <th>888</th>\n <td>889</td>\n <td>0</td>\n <td>3</td>\n <td>Johnston, Miss. Catherine Helen \"Carrie\"</td>\n <td>female</td>\n <td>NaN</td>\n <td>1</td>\n <td>2</td>\n <td>W./C. 6607</td>\n <td>23.4500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>889</th>\n <td>890</td>\n <td>1</td>\n <td>1</td>\n <td>Behr, Mr. Karl Howell</td>\n <td>male</td>\n <td>26.0</td>\n <td>0</td>\n <td>0</td>\n <td>111369</td>\n <td>30.0000</td>\n <td>C148</td>\n <td>C</td>\n </tr>\n <tr>\n <th>890</th>\n <td>891</td>\n <td>0</td>\n <td>3</td>\n <td>Dooley, Mr. Patrick</td>\n <td>male</td>\n <td>32.0</td>\n <td>0</td>\n <td>0</td>\n <td>370376</td>\n <td>7.7500</td>\n <td>NaN</td>\n <td>Q</td>\n </tr>\n </tbody>\n</table>\n<p>891 rows \u00d7 12 columns</p>\n</div>",
"text/plain": " PassengerId Survived Pclass \\\n0 1 0 3 \n1 2 1 1 \n2 3 1 3 \n3 4 1 1 \n4 5 0 3 \n5 6 0 3 \n6 7 0 1 \n7 8 0 3 \n8 9 1 3 \n9 10 1 2 \n10 11 1 3 \n11 12 1 1 \n12 13 0 3 \n13 14 0 3 \n14 15 0 3 \n15 16 1 2 \n16 17 0 3 \n17 18 1 2 \n18 19 0 3 \n19 20 1 3 \n20 21 0 2 \n21 22 1 2 \n22 23 1 3 \n23 24 1 1 \n24 25 0 3 \n25 26 1 3 \n26 27 0 3 \n27 28 0 1 \n28 29 1 3 \n29 30 0 3 \n.. ... ... ... \n861 862 0 2 \n862 863 1 1 \n863 864 0 3 \n864 865 0 2 \n865 866 1 2 \n866 867 1 2 \n867 868 0 1 \n868 869 0 3 \n869 870 1 3 \n870 871 0 3 \n871 872 1 1 \n872 873 0 1 \n873 874 0 3 \n874 875 1 2 \n875 876 1 3 \n876 877 0 3 \n877 878 0 3 \n878 879 0 3 \n879 880 1 1 \n880 881 1 2 \n881 882 0 3 \n882 883 0 3 \n883 884 0 2 \n884 885 0 3 \n885 886 0 3 \n886 887 0 2 \n887 888 1 1 \n888 889 0 3 \n889 890 1 1 \n890 891 0 3 \n\n Name Sex Age SibSp \\\n0 Braund, Mr. Owen Harris male 22.0 1 \n1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n2 Heikkinen, Miss. Laina female 26.0 0 \n3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n4 Allen, Mr. William Henry male 35.0 0 \n5 Moran, Mr. James male NaN 0 \n6 McCarthy, Mr. Timothy J male 54.0 0 \n7 Palsson, Master. Gosta Leonard male 2.0 3 \n8 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female 27.0 0 \n9 Nasser, Mrs. Nicholas (Adele Achem) female 14.0 1 \n10 Sandstrom, Miss. Marguerite Rut female 4.0 1 \n11 Bonnell, Miss. Elizabeth female 58.0 0 \n12 Saundercock, Mr. William Henry male 20.0 0 \n13 Andersson, Mr. Anders Johan male 39.0 1 \n14 Vestrom, Miss. Hulda Amanda Adolfina female 14.0 0 \n15 Hewlett, Mrs. (Mary D Kingcome) female 55.0 0 \n16 Rice, Master. Eugene male 2.0 4 \n17 Williams, Mr. Charles Eugene male NaN 0 \n18 Vander Planke, Mrs. Julius (Emelia Maria Vande... female 31.0 1 \n19 Masselmani, Mrs. Fatima female NaN 0 \n20 Fynney, Mr. Joseph J male 35.0 0 \n21 Beesley, Mr. Lawrence male 34.0 0 \n22 McGowan, Miss. Anna \"Annie\" female 15.0 0 \n23 Sloper, Mr. William Thompson male 28.0 0 \n24 Palsson, Miss. Torborg Danira female 8.0 3 \n25 Asplund, Mrs. Carl Oscar (Selma Augusta Emilia... female 38.0 1 \n26 Emir, Mr. Farred Chehab male NaN 0 \n27 Fortune, Mr. Charles Alexander male 19.0 3 \n28 O'Dwyer, Miss. Ellen \"Nellie\" female NaN 0 \n29 Todoroff, Mr. Lalio male NaN 0 \n.. ... ... ... ... \n861 Giles, Mr. Frederick Edward male 21.0 1 \n862 Swift, Mrs. Frederick Joel (Margaret Welles Ba... female 48.0 0 \n863 Sage, Miss. Dorothy Edith \"Dolly\" female NaN 8 \n864 Gill, Mr. John William male 24.0 0 \n865 Bystrom, Mrs. (Karolina) female 42.0 0 \n866 Duran y More, Miss. Asuncion female 27.0 1 \n867 Roebling, Mr. Washington Augustus II male 31.0 0 \n868 van Melkebeke, Mr. Philemon male NaN 0 \n869 Johnson, Master. Harold Theodor male 4.0 1 \n870 Balkic, Mr. Cerin male 26.0 0 \n871 Beckwith, Mrs. Richard Leonard (Sallie Monypeny) female 47.0 1 \n872 Carlsson, Mr. Frans Olof male 33.0 0 \n873 Vander Cruyssen, Mr. Victor male 47.0 0 \n874 Abelson, Mrs. Samuel (Hannah Wizosky) female 28.0 1 \n875 Najib, Miss. Adele Kiamie \"Jane\" female 15.0 0 \n876 Gustafsson, Mr. Alfred Ossian male 20.0 0 \n877 Petroff, Mr. Nedelio male 19.0 0 \n878 Laleff, Mr. Kristo male NaN 0 \n879 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) female 56.0 0 \n880 Shelley, Mrs. William (Imanita Parrish Hall) female 25.0 0 \n881 Markun, Mr. Johann male 33.0 0 \n882 Dahlberg, Miss. Gerda Ulrika female 22.0 0 \n883 Banfield, Mr. Frederick James male 28.0 0 \n884 Sutehall, Mr. Henry Jr male 25.0 0 \n885 Rice, Mrs. William (Margaret Norton) female 39.0 0 \n886 Montvila, Rev. Juozas male 27.0 0 \n887 Graham, Miss. Margaret Edith female 19.0 0 \n888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n889 Behr, Mr. Karl Howell male 26.0 0 \n890 Dooley, Mr. Patrick male 32.0 0 \n\n Parch Ticket Fare Cabin Embarked \n0 0 A/5 21171 7.2500 NaN S \n1 0 PC 17599 71.2833 C85 C \n2 0 STON/O2. 3101282 7.9250 NaN S \n3 0 113803 53.1000 C123 S \n4 0 373450 8.0500 NaN S \n5 0 330877 8.4583 NaN Q \n6 0 17463 51.8625 E46 S \n7 1 349909 21.0750 NaN S \n8 2 347742 11.1333 NaN S \n9 0 237736 30.0708 NaN C \n10 1 PP 9549 16.7000 G6 S \n11 0 113783 26.5500 C103 S \n12 0 A/5. 2151 8.0500 NaN S \n13 5 347082 31.2750 NaN S \n14 0 350406 7.8542 NaN S \n15 0 248706 16.0000 NaN S \n16 1 382652 29.1250 NaN Q \n17 0 244373 13.0000 NaN S \n18 0 345763 18.0000 NaN S \n19 0 2649 7.2250 NaN C \n20 0 239865 26.0000 NaN S \n21 0 248698 13.0000 D56 S \n22 0 330923 8.0292 NaN Q \n23 0 113788 35.5000 A6 S \n24 1 349909 21.0750 NaN S \n25 5 347077 31.3875 NaN S \n26 0 2631 7.2250 NaN C \n27 2 19950 263.0000 C23 C25 C27 S \n28 0 330959 7.8792 NaN Q \n29 0 349216 7.8958 NaN S \n.. ... ... ... ... ... \n861 0 28134 11.5000 NaN S \n862 0 17466 25.9292 D17 S \n863 2 CA. 2343 69.5500 NaN S \n864 0 233866 13.0000 NaN S \n865 0 236852 13.0000 NaN S \n866 0 SC/PARIS 2149 13.8583 NaN C \n867 0 PC 17590 50.4958 A24 S \n868 0 345777 9.5000 NaN S \n869 1 347742 11.1333 NaN S \n870 0 349248 7.8958 NaN S \n871 1 11751 52.5542 D35 S \n872 0 695 5.0000 B51 B53 B55 S \n873 0 345765 9.0000 NaN S \n874 0 P/PP 3381 24.0000 NaN C \n875 0 2667 7.2250 NaN C \n876 0 7534 9.8458 NaN S \n877 0 349212 7.8958 NaN S \n878 0 349217 7.8958 NaN S \n879 1 11767 83.1583 C50 C \n880 1 230433 26.0000 NaN S \n881 0 349257 7.8958 NaN S \n882 0 7552 10.5167 NaN S \n883 0 C.A./SOTON 34068 10.5000 NaN S \n884 0 SOTON/OQ 392076 7.0500 NaN S \n885 5 382652 29.1250 NaN Q \n886 0 211536 13.0000 NaN S \n887 0 112053 30.0000 B42 S \n888 2 W./C. 6607 23.4500 NaN S \n889 0 111369 30.0000 C148 C \n890 0 370376 7.7500 NaN Q \n\n[891 rows x 12 columns]"
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": "df_train"
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": " Pclass Survived\n0 1 0.629630\n1 2 0.472826\n2 3 0.242363\n"
}
],
"source": "# EFFECT OF CLASS ON SURVIVAL RATE\n\nprint (df_train[['Pclass', 'Survived']].groupby(['Pclass'], as_index=False).mean())\n"
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": " Sex Survived\n0 female 0.742038\n1 male 0.188908\nSex also has an effect\n"
}
],
"source": "# EFFECT OF SEX ON SURVIVAL RATE\n\nprint (df_train[[\"Sex\", \"Survived\"]].groupby(['Sex'], as_index=False).mean())\nprint(\"Sex also has an effect\")"
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": " FamilySize Survived\n0 1 0.303538\n1 2 0.552795\n2 3 0.578431\n3 4 0.724138\n4 5 0.200000\n5 6 0.136364\n6 7 0.333333\n7 8 0.000000\n8 11 0.000000\n"
}
],
"source": "# ADD A NEW FEATURE: FAMILY SIZE\n\nfor dataset in df_train, df_test:\n dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1\nprint (df_train[['FamilySize', 'Survived']].groupby(['FamilySize'], as_index=False).mean())\n"
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": " IsAlone Survived\n0 0 0.505650\n1 1 0.303538\n"
}
],
"source": "# ADD A NEW FEATURE: ISALONE IFF FAMILYSIZE == 1\n\nfor dataset in df_train, df_test:\n dataset['IsAlone'] = 0\n dataset.loc[dataset['FamilySize'] == 1, 'IsAlone'] = 1\nprint (df_train[['IsAlone', 'Survived']].groupby(['IsAlone'], as_index=False).mean())\n\n"
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": " Embarked Survived\n0 C 0.553571\n1 Q 0.389610\n2 S 0.339009\n"
}
],
"source": "# FILL NAN VALUES IN EMBARKED\n\nfor dataset in df_train, df_test:\n dataset['Embarked'] = dataset['Embarked'].fillna('S')\nprint (df_train[['Embarked', 'Survived']].groupby(['Embarked'], as_index=False).mean())\n"
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": " CategoricalFare Survived\n0 (-0.001, 7.91] 0.197309\n1 (7.91, 14.454] 0.303571\n2 (14.454, 31.0] 0.454955\n3 (31.0, 512.329] 0.581081\n"
}
],
"source": "# FILL NAN VALUES IN FARE, CREATE QUANTILES CATEGORICAL FARES\n\nfor dataset in df_train, df_test:\n dataset['Fare'] = dataset['Fare'].fillna(df_train['Fare'].median())\ndf_train['CategoricalFare'] = pd.qcut(df_train['Fare'], 4)\nprint (df_train[['CategoricalFare', 'Survived']].groupby(['CategoricalFare'], as_index=False).mean())\n"
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": " CategoricalAge Survived\n0 (-0.08, 16.0] 0.521368\n1 (16.0, 32.0] 0.346847\n2 (32.0, 48.0] 0.384000\n3 (48.0, 64.0] 0.434783\n4 (64.0, 80.0] 0.090909\n"
},
{
"name": "stderr",
"output_type": "stream",
"text": "/opt/conda/envs/Python36/lib/python3.6/site-packages/ipykernel/__main__.py:10: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
}
],
"source": "# REPLACE NAN VALUES OF AGE BY A RANDOM VALUE BETWEEN MEAN AND STD\nimport numpy as np\n\nfor dataset in df_train, df_test:\n age_avg = dataset['Age'].mean()\n age_std = dataset['Age'].std()\n age_null_count = dataset['Age'].isnull().sum()\n \n age_null_random_list = np.random.randint(age_avg - age_std, age_avg + age_std, size=age_null_count)\n dataset['Age'][np.isnan(dataset['Age'])] = age_null_random_list\n dataset['Age'] = dataset['Age'].astype(int)\n \ndf_train['CategoricalAge'] = pd.cut(df_train['Age'], 5)\n\nprint (df_train[['CategoricalAge', 'Survived']].groupby(['CategoricalAge'], as_index=False).mean())\n"
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Sex female male\nTitle \nCapt 0 1\nCol 0 2\nCountess 1 0\nDon 0 1\nDr 1 6\nJonkheer 0 1\nLady 1 0\nMajor 0 2\nMaster 0 40\nMiss 182 0\nMlle 2 0\nMme 1 0\nMr 0 517\nMrs 125 0\nMs 1 0\nRev 0 6\nSir 0 1\n"
}
],
"source": "# EXTRACT TITLE FROM NAME FIELD\nimport re\ndef get_title(name):\n title_search = re.search(' ([A-Za-z]+)\\.', name)\n # If the title exists, extract and return it.\n if title_search:\n return title_search.group(1)\n return \"\"\n\nfor dataset in df_train, df_test:\n dataset['Title'] = dataset['Name'].apply(get_title)\n\nprint(pd.crosstab(df_train['Title'], df_train['Sex']))"
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": " Title Survived\n0 Master 0.575000\n1 Miss 0.702703\n2 Mr 0.156673\n3 Mrs 0.793651\n4 Rare 0.347826\n"
}
],
"source": "# DIVIDE TITLE INTO ONLY MAJOR PARTS\n\nfor dataset in df_train, df_test:\n dataset['Title'] = dataset['Title'].replace(['Lady', 'Countess','Capt', 'Col',\\\n 'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Rare')\n\n dataset['Title'] = dataset['Title'].replace('Mlle', 'Miss')\n dataset['Title'] = dataset['Title'].replace('Ms', 'Miss')\n dataset['Title'] = dataset['Title'].replace('Mme', 'Mrs')\n\nprint (df_train[['Title', 'Survived']].groupby(['Title'], as_index=False).mean())\n"
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": " Survived Pclass Sex Age Fare Embarked IsAlone Title\n0 0 3 1 1 0 0 0 1\n1 1 1 0 2 3 1 0 3\n2 1 3 0 1 1 0 1 2\n3 1 1 0 2 3 0 0 3\n4 0 3 1 2 1 0 1 1\n5 0 3 1 1 1 2 1 1\n6 0 1 1 3 3 0 1 1\n7 0 3 1 0 2 0 0 4\n8 1 3 0 1 1 0 0 3\n9 1 2 0 0 2 1 0 3\n"
}
],
"source": "# CLEAN DATA BY NORMALIZING THE DATA\n\nfor dataset in df_train, df_test:\n # Mapping Sex\n dataset['Sex'] = dataset['Sex'].map( {'female': 0, 'male': 1} ).astype(int)\n \n # Mapping titles\n title_mapping = {\"Mr\": 1, \"Miss\": 2, \"Mrs\": 3, \"Master\": 4, \"Rare\": 5}\n dataset['Title'] = dataset['Title'].map(title_mapping)\n dataset['Title'] = dataset['Title'].fillna(0)\n \n # Mapping Embarked\n dataset['Embarked'] = dataset['Embarked'].map( {'S': 0, 'C': 1, 'Q': 2} ).astype(int)\n \n # Mapping Fare\n dataset.loc[ dataset['Fare'] <= 7.91, 'Fare'] = 0\n dataset.loc[(dataset['Fare'] > 7.91) & (dataset['Fare'] <= 14.454), 'Fare'] = 1\n dataset.loc[(dataset['Fare'] > 14.454) & (dataset['Fare'] <= 31), 'Fare'] = 2\n dataset.loc[ dataset['Fare'] > 31, 'Fare'] = 3\n dataset['Fare'] = dataset['Fare'].astype(int)\n \n # Mapping Age\n dataset.loc[ dataset['Age'] <= 16, 'Age'] = 0\n dataset.loc[(dataset['Age'] > 16) & (dataset['Age'] <= 32), 'Age'] = 1\n dataset.loc[(dataset['Age'] > 32) & (dataset['Age'] <= 48), 'Age'] = 2\n dataset.loc[(dataset['Age'] > 48) & (dataset['Age'] <= 64), 'Age'] = 3\n dataset.loc[ dataset['Age'] > 64, 'Age'] = 4\n\n# Feature Selection\ndrop_elements = ['PassengerId', 'Name', 'Ticket', 'Cabin', 'SibSp',\\\n 'Parch', 'FamilySize']\ndf_train = df_train.drop(drop_elements, axis = 1)\ndf_train = df_train.drop(['CategoricalAge', 'CategoricalFare'], axis = 1)\n\ndf_test = df_test.drop(drop_elements, axis = 1)\n\nprint (df_train.head(10))\n\ndf_train = df_train.values\ndf_test = df_test.values\n"
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": "/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/ensemble/forest.py:246: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n FutureWarning)\n"
},
{
"data": {
"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x7f5dc924fac8>"
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": "import matplotlib.pyplot as plt\nimport seaborn as sns\n\nfrom sklearn.model_selection import StratifiedShuffleSplit\nfrom sklearn.metrics import accuracy_score, log_loss\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.svm import SVC\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier\nfrom sklearn.naive_bayes import GaussianNB\nfrom sklearn.discriminant_analysis import LinearDiscriminantAnalysis, QuadraticDiscriminantAnalysis\nfrom sklearn.linear_model import LogisticRegression\n\nclassifiers = [\n KNeighborsClassifier(3),\n SVC(probability=True),\n DecisionTreeClassifier(),\n RandomForestClassifier(),\n AdaBoostClassifier(),\n GradientBoostingClassifier(),\n GaussianNB(),\n LinearDiscriminantAnalysis(),\n QuadraticDiscriminantAnalysis(),\n LogisticRegression()]\n\nlog_cols = [\"Classifier\", \"Accuracy\"]\nlog = pd.DataFrame(columns=log_cols)\n\nsss = StratifiedShuffleSplit(n_splits=10, test_size=0.1, random_state=0)\n\nX = df_train[0::, 1::]\ny = df_train[0::, 0]\n\nacc_dict = {}\n\nfor train_index, test_index in sss.split(X, y):\n X_train, X_test = X[train_index], X[test_index]\n y_train, y_test = y[train_index], y[test_index]\n \n for clf in classifiers:\n name = clf.__class__.__name__\n clf.fit(X_train, y_train)\n train_predictions = clf.predict(X_test)\n acc = accuracy_score(y_test, train_predictions)\n if name in acc_dict:\n acc_dict[name] += acc\n else:\n acc_dict[name] = acc\n\nfor clf in acc_dict:\n acc_dict[clf] = acc_dict[clf] / 10.0\n log_entry = pd.DataFrame([[clf, acc_dict[clf]]], columns=log_cols)\n log = log.append(log_entry)\n\nplt.xlabel('Accuracy')\nplt.title('Classifier Accuracy')\n\nsns.set_color_codes(\"muted\")\nsns.barplot(x='Accuracy', y='Classifier', data=log, color=\"b\")\n"
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": "/opt/conda/envs/Python36/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n \"avoid this warning.\", FutureWarning)\n"
}
],
"source": "# SVC GOT THE HIGHEST VALUE -> PREDICT WITH SVC\n\ncandidate_classifier = SVC()\ncandidate_classifier.fit(df_train[0::, 1::], df_train[0::, 0])\nsvc_list = candidate_classifier.predict(df_test)"
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": "# PREPARE DATA FOR DEEP LEARNING\n\ny_train = df_train[:, 0]\nx_train = df_train[:, 1:]\n\nx_test = df_test"
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Epoch 1/20\n891/891 [==============================] - 8s 9ms/step - loss: 0.5872 - acc: 0.6947\nEpoch 2/20\n891/891 [==============================] - 6s 6ms/step - loss: 0.4916 - acc: 0.7677\nEpoch 3/20\n891/891 [==============================] - 6s 6ms/step - loss: 0.4787 - acc: 0.7834\nEpoch 4/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4666 - acc: 0.7969\nEpoch 5/20\n891/891 [==============================] - 7s 7ms/step - loss: 0.4732 - acc: 0.7800\nEpoch 6/20\n891/891 [==============================] - 7s 8ms/step - loss: 0.4506 - acc: 0.7957\nEpoch 7/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4354 - acc: 0.8025\nEpoch 8/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4323 - acc: 0.8126\nEpoch 9/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4300 - acc: 0.8025\nEpoch 10/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4263 - acc: 0.8103\nEpoch 11/20\n891/891 [==============================] - 7s 8ms/step - loss: 0.4280 - acc: 0.8058\nEpoch 12/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4211 - acc: 0.8103\nEpoch 13/20\n891/891 [==============================] - 7s 7ms/step - loss: 0.4171 - acc: 0.8171\nEpoch 14/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4133 - acc: 0.8238\nEpoch 15/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4106 - acc: 0.8193\nEpoch 16/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4077 - acc: 0.8182\nEpoch 17/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4073 - acc: 0.8249\nEpoch 18/20\n891/891 [==============================] - 6s 6ms/step - loss: 0.4074 - acc: 0.8193\nEpoch 19/20\n891/891 [==============================] - 6s 6ms/step - loss: 0.4022 - acc: 0.8260\nEpoch 20/20\n891/891 [==============================] - 6s 7ms/step - loss: 0.4017 - acc: 0.8238\n"
}
],
"source": "import tensorflow as tf\nfrom tensorflow import keras\nfrom keras import optimizers\nfrom keras import models, layers\nfrom keras.callbacks import LearningRateScheduler\nimport math\n\nadamop = optimizers.Adam(lr=0.001)\n\nmodel = models.Sequential([\n layers.Dense(128, activation='relu', input_shape=(7,)),\n layers.Dense(256, activation='relu'),\n layers.Dense(1, activation='sigmoid')\n])\n\ndef scheduler(epoch):\n if epoch < 10:\n return 0.002\n else:\n return 0.002 * math.exp(0.1 * (10 - epoch))\n\ncallback = LearningRateScheduler(scheduler)\n\n\nmodel.compile(loss='binary_crossentropy', optimizer=adamop, metrics=['accuracy'])\nhistory = model.fit(x_train, y_train, batch_size=128, epochs = 20, callbacks=[callback])"
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "dict_keys(['loss', 'acc', 'lr'])\n"
},
{
"data": {
"image/png": "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\n",
"text/plain": "<Figure size 432x288 with 1 Axes>"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": "<Figure size 432x288 with 1 Axes>"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": "import matplotlib.pyplot as plt\n%matplotlib inline\n\n\n# list all data in history\nprint(history.history.keys())\n# summarize history for accuracy\nplt.plot(history.history['acc'])\nplt.title('model accuracy')\nplt.ylabel('accuracy')\nplt.xlabel('epoch')\nplt.show()\n# summarize history for loss\nplt.plot(history.history['loss'])\nplt.title('model loss')\nplt.ylabel('loss')\nplt.xlabel('epoch')\nplt.show()"
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"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, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 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, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0]\n"
}
],
"source": "DL = model.predict(x_test)\nDL_list = [item for sublist in DL.round().astype(int).tolist() for item in sublist]"
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "[0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 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, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0]\n[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 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, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0]\n"
}
],
"source": "print(svc_list.tolist())\nprint(DL_list)"
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [],
"source": "# FORMAT IT ACCORDINGLY TO SAVE CSV\nourRange = [i for i in range(892,1310)]\nsvc_df = pd.DataFrame({'PassengerId': ourRange,\n 'Survived': svc_list})\n\nDL_df = pd.DataFrame({'PassengerId': ourRange,\n 'Survived': DL_list})\n\nsvc_df.to_csv('svc.csv')\nDL_df.to_csv('DL.csv')"
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "--2020-03-31 18:44:11-- http://dl.csv/\nResolving dl.csv (dl.csv)... failed: Name or service not known.\nwget: unable to resolve host address \u2018dl.csv\u2019\n"
}
],
"source": ""
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Collecting pyspark\n\u001b[?25l Downloading https://files.pythonhosted.org/packages/9a/5a/271c416c1c2185b6cb0151b29a91fff6fcaed80173c8584ff6d20e46b465/pyspark-2.4.5.tar.gz (217.8MB)\n\u001b[K |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 217.8MB 197kB/s eta 0:00:01 |\u2588 | 7.5MB 20.0MB/s eta 0:00:11 |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 71.5MB 53.1MB/s eta 0:00:03\ufffd\ufffd\u2588\u2588\u2588 | 191.0MB 11.9MB/s eta 0:00:03\ufffd\u2588\u2588\u258b| 215.0MB 11.9MB/s eta 0:00:01\n\u001b[?25hCollecting py4j==0.10.7 (from pyspark)\n\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n\u001b[K |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 204kB 52.0MB/s eta 0:00:01\n\u001b[?25hBuilding wheels for collected packages: pyspark\n Building wheel for pyspark (setup.py) ... \u001b[?25ldone\n\u001b[?25h Stored in directory: /home/dsxuser/.cache/pip/wheels/bf/db/04/61d66a5939364e756eb1c1be4ec5bdce6e04047fc7929a3c3c\nSuccessfully built pyspark\nInstalling collected packages: py4j, pyspark\nSuccessfully installed py4j-0.10.7 pyspark-2.4.5\n"
},
{
"data": {
"text/plain": "{'file_name': 'DL.csv',\n 'message': 'File saved to project storage.',\n 'bucket_name': 'default-donotdelete-pr-n6fp7qydil3rpx',\n 'asset_id': '9af76fb4-8ca1-4ec8-a302-f21cb395aaba'}"
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": "from project_lib import Project\n!pip install pyspark\nimport pyspark\n\nsc = pyspark.SparkContext()\n\n\nproject = Project(sc,\"ce495158-5e69-41c6-9802-9168b632ae62\",\"p-7d211dc6334b3d8c35a43ebdf4f27d683ca35278\")\nproject.save_data(file_name = \"svc.csv\",data = svc_df.to_csv(index=False))\nproject.save_data(file_name = \"DL.csv\",data = DL_df.to_csv(index=False))\n"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": ""
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.6",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment