{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Report02 - 泰坦尼克号的生存预测\n", "\n", "* 沈键\n", "* 2021200082\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. 任务简介\n", "\n", " 泰坦尼克号沉船事故是世界上最著名的沉船事故之一。1912年4月15日,在她的处女航期间,泰坦尼克号撞上冰山后沉没,造成2224名乘客和机组人员中超过1502人的死亡。这一轰动的悲剧震惊了国际社会,并因此建立了更好的船舶安全法规。 事故中导致死亡的一个原因是许多船员和乘客没有足够的救生艇。然而在被获救群体中也有一些比较幸运的因素;一些人群在事故中被救的几率高于其他人,比如妇女、儿童和上层阶级。 这个任务中,我们需要分析和判断出什么样的人更容易获救,然后要利用机器学习来预测出在这场灾难中哪些人会最终获救。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. 分析数据" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 本次任务中,给了一个名为train.csv的数据集文件,里面有891名乘客的数据。首先,我们使用pandas读取该文件,查看有哪些变量。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
5603Moran, Mr. JamesmaleNaN003308778.4583NaNQ
6701McCarthy, Mr. Timothy Jmale54.0001746351.8625E46S
7803Palsson, Master. Gosta Leonardmale2.03134990921.0750NaNS
8913Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)female27.00234774211.1333NaNS
91012Nasser, Mrs. Nicholas (Adele Achem)female14.01023773630.0708NaNC
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass \\\n", "0 1 0 3 \n", "1 2 1 1 \n", "2 3 1 3 \n", "3 4 1 1 \n", "4 5 0 3 \n", "5 6 0 3 \n", "6 7 0 1 \n", "7 8 0 3 \n", "8 9 1 3 \n", "9 10 1 2 \n", "\n", " Name Sex Age SibSp \\\n", "0 Braund, Mr. Owen Harris male 22.0 1 \n", "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", "2 Heikkinen, Miss. Laina female 26.0 0 \n", "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", "4 Allen, Mr. William Henry male 35.0 0 \n", "5 Moran, Mr. James male NaN 0 \n", "6 McCarthy, Mr. Timothy J male 54.0 0 \n", "7 Palsson, Master. Gosta Leonard male 2.0 3 \n", "8 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female 27.0 0 \n", "9 Nasser, Mrs. Nicholas (Adele Achem) female 14.0 1 \n", "\n", " Parch Ticket Fare Cabin Embarked \n", "0 0 A/5 21171 7.2500 NaN S \n", "1 0 PC 17599 71.2833 C85 C \n", "2 0 STON/O2. 3101282 7.9250 NaN S \n", "3 0 113803 53.1000 C123 S \n", "4 0 373450 8.0500 NaN S \n", "5 0 330877 8.4583 NaN Q \n", "6 0 17463 51.8625 E46 S \n", "7 1 349909 21.0750 NaN S \n", "8 2 347742 11.1333 NaN S \n", "9 0 237736 30.0708 NaN C " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "train_df = pd.read_csv(\"./data/train.csv\")\n", "train_df.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "通过查看前几行,可以看到,每一行数据包括乘客的id、乘客等级、名字、性别、年龄、和该乘客一起旅行的兄弟姐妹和配偶的数量、和该乘客一起旅行的父母和孩子的数量、船票号、船票价格、船舱号、登船港口(S=英国南安普顿Southampton(起航点)/C=法国 瑟堡市Cherbourg(途经点)/Q=爱尔兰 昆士Queenstown(途经点))以及该乘客对应的最终是否存活。通过观察各列数据,还可以看出,某些列上存在缺失值,pandas带入数据集文件后,缺失值处会显示为NaN。通过热力图,可以更加直观的展示缺失值的分布情况。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline\n", "\n", "sns.heatmap(train_df.isnull(), yticklabels=False, cbar=False, cmap='CMRmap')\n", "plt.tight_layout() \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "通过将缺失值处的位置通过热力图高亮显示,可以看到,年龄(Age)、船舱号(Cabin)和登船港口(Embarked)列存在缺失值,并且,年龄和船舱号的缺失值很多。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 891 entries, 0 to 890\n", "Data columns (total 12 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 PassengerId 891 non-null int64 \n", " 1 Survived 891 non-null int64 \n", " 2 Pclass 891 non-null int64 \n", " 3 Name 891 non-null object \n", " 4 Sex 891 non-null object \n", " 5 Age 714 non-null float64\n", " 6 SibSp 891 non-null int64 \n", " 7 Parch 891 non-null int64 \n", " 8 Ticket 891 non-null object \n", " 9 Fare 891 non-null float64\n", " 10 Cabin 204 non-null object \n", " 11 Embarked 889 non-null object \n", "dtypes: float64(2), int64(5), object(5)\n", "memory usage: 83.7+ KB\n" ] } ], "source": [ "train_df.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "年龄列的缺失率为(891-714)/891\\*100%=19.9%, 船舱号列的缺失率为(891-204)/891\\*100%=77.1%, 登船港口列的缺失率为(891-889)/891\\*100%=0.2%。可以看出船舱号列的缺失率很高,所以我们将其忽略,同时,乘客id和船票号意义不大,我们也将其忽略。接下里,我们分别研究其余因素对获救率的影响。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "train_df.drop('PassengerId', axis=1, inplace=True)\n", "train_df.drop('Ticket', axis=1, inplace=True)\n", "train_df.drop('Cabin', axis=1, inplace=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.1 乘客等级对获救率的影响" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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v9GGzVMS+YyIbXx62reyyjai19ukVRZR+/Y2g/DXWeXftGnT9ABxbKrhYNhUHitXrkz/DrvskrlfCAAk1wX0slX+vv6aT31rScA08c/NVbYRvc8khd0go6K8fOMzmezIv2XLlkFW/sa+t33/kFtAAGpXArhLFdP+Pv/6QL/7kfX3Z2ZKXOTT2maXfSO1sfJfu/Zr84blVW38/gDCTQC/UNzl0/4+4zfm6KKKym4EPkJxr0/bm11WlL74wnqzlM169PjqSPzwww//6rnMjKv33XdfdNNNN0VXX213Soyi4cOHR08/nbnnNwCUwBiAKrxX/Uygr/hZPsf4zTjerqqsunYeYbdxrTmLfm27V7UPP/wwGjx4cNSwYcNowYIF0XHHHZcuf+ONN6L+/funWwI333xz1KRJk+iTTz6J1q9fH33++efRsmXLomeeeSb6zW9+k95+w4YNUZ06XJYBpI3ernR/iNF2/kvtULArgX3e8j9urqzYtGjRIho/fnzUqVOn6PLLL4+uvfbaqF69eun1ESNGRM2aNYuWLFkSXXjhhdHSpUvTZy116NAhmj59ejoJWKvhrbfeiq677rrojDPOSPrrAAhIUU0FUVu98sorUZ8+faLzzz8/fSqmHc0/+eST0d577x0tXLgwuvjii6Ojjz46aty4cbRmzZpo1apV0bRp06Jrrrkm6tatW3TbbbdR+QMoOPocqsmO3m+99dZ0BW7n4x9//PFR7969091Bd955Z/Twww+nu4mswreK/8Ybb4xee+21aI899kgnDksQu+++e038LQFgq9ACqKaOHTumB3eti8e6d+69916bfS/d///II4+k+/XtLJ2rrroqOu2006Kddtopfc7+1KlTo0GDBqVfc8EFF1R3NwBgq9ECqCYb7B0yZEh05ZVXpgd8rf/fWgTnnntu+owfSwB33313dMkll6RbCQMHDox69uwZ3X///dGBBx4YPfvss9Guu9p9wQGgsEgA1dS5c+evundscPeOO+5I9/XbEf8TTzyRrvyPPfbYaMaMGekBY0sINjjcvXv3aObMmenTRO31AFBoJdcFtLnTNmuade9MnDgxevHFF6OhQ4emT/mcPHlyuty6gy666KL0mMCsWbPSZwZZt9D8+fPTp47aGIF1IVkLwk4PtS4hAChY/ZW5SKkYVFRUpLJvCGODrXvuuWdCe/TNWXdR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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from pylab import *\n", "\n", "mpl.rcParams['font.sans-serif'] = ['SimHei']\n", "matplotlib.rcParams['axes.unicode_minus'] = False\n", "\n", "fig = plt.figure()\n", "fig.set(alpha=0.2)\n", "\n", "Suvived_0 = train_df.Pclass[train_df.Survived == 0].value_counts()\n", "Suvived_1 = train_df.Pclass[train_df.Survived == 1].value_counts()\n", "df = pd.DataFrame({u\"获救\": Suvived_1, u\"未获救\": Suvived_0})\n", "df.plot(kind='bar', stacked=True)\n", "plt.xticks(rotation=360)\n", "plt.title(u'各乘客等级的获救情况')\n", "plt.xlabel(u'乘客等级')\n", "plt.ylabel(u'人数')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看到,乘客等级为1的获救率最高,乘客等级为2的次之,乘客等级为3的获救率最低。显然,富人的获救率比穷人的获救率更高,且等级高的对应舱的救援设备一般都会好于等级低的船舱。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 名字对获救率的影响" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "观察乘客名字列,可以发现,乘客名字的中间部分对应了乘客目前的社会头衔或者已婚情况。" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mr 517\n", "Miss 182\n", "Mrs 125\n", "Master 40\n", "Dr 7\n", "Rev 6\n", "Major 2\n", "Mlle 2\n", "Col 2\n", "Countess 1\n", "Lady 1\n", "Mme 1\n", "Jonkheer 1\n", "Don 1\n", "Ms 1\n", "Capt 1\n", "Sir 1\n", "Name: Name, dtype: int64\n" ] } ], "source": [ "import re\n", "\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", "titles = train_df[\"Name\"].apply(get_title)\n", "print(pd.value_counts(titles))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "例如Miss表示未婚的女士,而Mrs为已婚的女士,Capt、Col、Major、Dr、Rev头衔的可认为是政府官员,Don、Sir、Countess、Lady头衔的可认为是皇室成员,Master和Jonkheer表示有技能的人,如果出现其他头衔,则分到Others类。" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# 将Name列改名为Title\n", "train_df.rename(columns={'Name':'Title'}, inplace=True)\n", "train_df['Title'] = train_df['Title'].apply(get_title)\n", "title_classification = {'Officer':['Capt', 'Col', 'Major', 'Dr', 'Rev'],\n", " 'Royalty':['Don', 'Sir', 'Countess', 'Lady'],\n", " 'Mrs':['Mme', 'Ms', 'Mrs'],\n", " 'Miss':['Mlle', 'Miss'],\n", " 'Mr':['Mr'],\n", " 'Master':['Master','Jonkheer']}\n", "title_map = {}\n", "for title in title_classification.keys():\n", " title_map.update(dict.fromkeys(title_classification[title], title))\n", "\n", "train_df['Title'] = train_df['Title'].map(title_map)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Suvived_0 = train_df.Title[train_df.Survived == 0].value_counts()\n", "Suvived_1 = train_df.Title[train_df.Survived == 1].value_counts()\n", "df = pd.DataFrame({u\"获救\": Suvived_1, u\"未获救\": Suvived_0})\n", "df.plot(kind='bar', stacked=True)\n", "plt.xticks(rotation=30)\n", "plt.title(u'各头衔的获救情况')\n", "plt.xlabel(u'乘客头衔')\n", "plt.ylabel(u'人数')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看到,不同头衔对应的获救情况不同,其中,已婚女士和未婚女士的获救率较高,而男士的获救率较低,这与社会上提倡女士优先有着密切的关系,同时,\n", "皇室和有技能的人的获救率也很高,这与他们的社会地位有关,社会地位高的人往往会被优先救援。\n", "\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassTitleSexAgeSibSpParchFareEmbarked
003Mrmale22.0107.2500S
111Mrsfemale38.01071.2833C
213Missfemale26.0007.9250S
311Mrsfemale35.01053.1000S
403Mrmale35.0008.0500S
503MrmaleNaN008.4583Q
601Mrmale54.00051.8625S
703Mastermale2.03121.0750S
813Mrsfemale27.00211.1333S
912Mrsfemale14.01030.0708C
\n", "
" ], "text/plain": [ " Survived Pclass Title Sex Age SibSp Parch Fare Embarked\n", "0 0 3 Mr male 22.0 1 0 7.2500 S\n", "1 1 1 Mrs female 38.0 1 0 71.2833 C\n", "2 1 3 Miss female 26.0 0 0 7.9250 S\n", "3 1 1 Mrs female 35.0 1 0 53.1000 S\n", "4 0 3 Mr male 35.0 0 0 8.0500 S\n", "5 0 3 Mr male NaN 0 0 8.4583 Q\n", "6 0 1 Mr male 54.0 0 0 51.8625 S\n", "7 0 3 Master male 2.0 3 1 21.0750 S\n", "8 1 3 Mrs female 27.0 0 2 11.1333 S\n", "9 1 2 Mrs female 14.0 1 0 30.0708 C" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3 性别对获救率的影响" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Suvived_0 = train_df.Sex[train_df.Survived == 0].value_counts()\n", "Suvived_1 = train_df.Sex[train_df.Survived == 1].value_counts()\n", "df = pd.DataFrame({u\"获救\": Suvived_1, u\"未获救\": Suvived_0})\n", "df.plot(kind='bar', stacked=True)\n", "plt.xticks(rotation=30)\n", "plt.title(u'不同性别的获救情况')\n", "plt.xlabel(u'性别')\n", "plt.ylabel(u'人数')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "如同在头衔分析中提到的一样,女士的获救率高于男士,与社会上提倡女士优先有着密切的关系。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.4 年龄对获救率的影响" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdkAAADSCAYAAAAG97p1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA6TUlEQVR4nO2dB2BUVfbGv0nvlZBGQgKEGnroRVBRLKCCHVnrYsG2u/b1v+u6rLq6y9p1sa2rLIoFQSmKItKR0HtNSEjvvWf+5768aAiBTEIm076f++178+bOm8PLzJx3zz33XIPRaAQhhBBCOh6njj8lIYQQQuhkCSGEEDPCniwhhBBCJ0sIIYTYFuzJEkIIIXSyhBBCiG3hYmkDzMHUqVONq1atsrQZhBBCTMdgelPbwS7Dxbm5uZY2gRBCCLFPJ0sIIYRYA3SyhBBCCJ0sIYQQYluwJ0sIIYTQyRJCCCG2BXuyxOKolaDKqmq1LSGE2BN2OU+WWDfFlTVYczAb3+3PxK7UQuSWVsNgAOrqjQjwcsWACH+M6RmMi/uFoldXH0ubSwgh7YZOlnQapdJbfX99Et7fmIS4UB8MiQrElP5hCPJ2g5uLE2rq6lFUUYPj2aXYmVKAf/90HLFdvHH7uFhcMTAcTk52OVedEGLHGOwxRJeQkGBMTEy0tBmkCVtO5OHBRTvRO9QXM4ZFItzfs9XrU1tfjx0nC7FiXwbqpZf7xGV9cZH0bgkhdonB0gaYAzpZYlbUTdwbPx7DexuSMGdiT+m9BrTrHNtPFuDTxFT0C/fD366OR1c/DzNYSwixIAZ7vPpMfCJmQznHPy3dj692peOvV8W3y8EqDDJgmxATJM51IHzdXXDpy+uwfE9GB1tLCCEdD8dkiVkd7NakPDwpYV4vt/P/qKlx2+sSojCseyD++s0B7dxPX9FfO04IIdYIf52IWfjX6iPaOOzjUzvGwTalZ4gP5knI+FBmCW5YsBl5pVUden5CCOko6GRJh7P6QBYW/ZyC30/p3eEOthFvCRs/dFEcugd54+o3NuJ4TqlZ3ocQQuzKycr4W5BoiqiLpW0hbeeEOLtHP9+NBy6MQ4CXm1kvoZOM1d4wIgqXDQzHdW9vxt5TRWZ9P0IIsRonK07yPdEm0dOmtpFtuGyWi0aKfpTHIaaei1geNc917sId2hSduFDfTnvfyX264raxMZj9/lZsS87vtPclhBCLOFlxhjNk4yzJL2NlGyGP40xsM0D0Ozn2N9l+KxpmyrmIdaCKR7i7OuPivp0/l3WEZB/fe0FP/PbDRGyVsWBCCLHnnuwk0WJ9f41ovCltxJF+L9oijnSi3pvdbOK5iIU5ll2Cd9Yn4Y5xsdqUG0swqFsA5k7uhbs/3o4dKQUWsYEQQjrDyXqL0vT9YlFLXZsW2xgafqFvENWI6kw8l3rdHFGiUk5OTkf8G4iJqGpMj3y2BzMlTBzi627R6xYf6Y+7J/bAnf/Zhn1pHKMlhNink1Wpno1183zO8j4ttpGerGKu7G4SXWniudTrFogSlEJCtKFc0kl8vSddq0tsLSUPVU3kW2WM9vYPtiE1v9zS5hBCHBhzOdntTcK6g0XJprSRXujjot/ox1R5oEITz0UsRGVNHV5YeQg3j4zWsn2thVGxwZg2JByz3t3KebSEELur+PSVaL04zAjZXia6UfbnSS/z6XO0Ga07/cVy7C7Z7hN9J/JtoR2xElRN4uggL62msLUxpV8YCstqcLuEjhffPQYekpRFCCF2sUCAOMVA2UwRrZP3yGxvm7a0a4Sr8HQO+WXVmPyPtfjztP4mrapjsQUK1h5HgKcLXr95mMWSsgghrWKXX04nM/64FYgWn8spmtKmLe1I5/LOuhMSlg2yWgerUE51zoQekv1chvmrj1jaHEKIg2F1FZ+IbVBYXo2FW0/iykEqim/dqAUEHr44Dp9uS8XKvVy9hxDSedDJknaPxaoCEJaesmMqqsSjqnX85Jd7cTizxNLmEEIcBDpZ0maKK2vw380nMW2w9fdim9IjxAc3j4rGXR9uQ1G5moZNCCHmhevJkjbzkThYtQB7qJ+H5a5efS08i47DvSxNlA6X6iIY5Jg8gVo3f9S6B6HKJxLlAX1Q5/Zr5vOEuBAk5Zbhd4t34d3fJMDJyS5zLQghVgKdLGnzIgAfbkrWlrHrVCRL2Dt/P4JSv4Nf5ibZP4gajyBUe4WiRhxqvas3jCowI4lOnrXH4FJTCteKLHiUpKBW2hWGjUNh5AUojJiozemdt/wg3v7pOO6b3Ktz/x2EEIeCTpa0iRWSOBQmPdjuwarapflxLc9G16OfIPTYp9rj4pDhyI+6FGkD7tUca6sY67Wernf+XkQceA89Nz+Bgm4X40+DrsX96yowrHsgRvcINvO/ghDiqNDJkjbNOV2w7gSmxoeZ/ap5FJ9At92vIDBtLYpDR+HUwAdQ6dtd66m2CYOThI27acqPvgzOElYOyNiI4TsexyqfADy/8CrEPfwQgn0tGPomhNgtdLLEZNTKNqoAxbAoVRvEfD3X6J1/R+CpNeIUp+Lo+H+h3sWrw85fJ+O1ed0vR56c2y9rK/546EPkv7YEgbe+DafIIR32PoQQomB2MTGZd9cn4ZIBoeZJFpKkpbAD72Pw15fCICHeY2P/idzYqzrUwTbv4RaHjUHGxOex29AHVR9MB775HVDF6T2EkI6DTpaYRE5JFdYfzcVEyc41R2h44Mpr0CV5KZIT/g/ZvW6Q8VYzOddmODu5IGLENXii9m4UZSUDb40FUrZ2ynsTQuwfOlliEp9vT8XI2EB4uXXgCIOM8XY9sgjxK2eiuOtIpAx9AtXenT/31t/TFRPie+DprMmoir8Z+OQmYO2LaqHcTreFEGJf0MkSkxZl/3hLCib36dphV8tQV4Wemx6RjN93kDz8aRRETWl7UlMHolYRigr0xL9PhgJXzAcOfCXOVhwuw8eEkPOATpa0ysbjuXB3cULPEJ8OuVpu5ZmIX3Wdtk0a8SdU+0RaxV9hSv8wHM0qxYZ0I3DJvAanv2AyUJhqadMIITYKnSxplY+3nMSkPiEdskycZ9ExCQ/PQFnQAKTF3w+js4dVLSRw1ZBI/GdTMnIqJFQ8+j6ghzjZ96SXnXXA0uYRQmwQOllyTvJKq7DxWB7G9epy3lfKJ2cnBnx7I3J6XKNlDlsyPHw2wv09tOX7XltzDHVqreX+knU8ZBbw4ZVA6s+WNo8QYmPQyZJzsnRXOoZFB5x3wpOak9p3zZ1I738XisInWPVVVxWgVPnIZbvSGg70mASMfRD43w10tIQQ63CyElp8T7RJ9LSpbWTrL1opWi1aInITuYhSRGt1DTSXzeRMFiemYvx5TttRDrb32ntxauD9KO1i/QUfnKSHPX1QBJbvycSJnLKGg5HDgXEP0dESQtr2e9Km1iYijnCGbJyNRuNY2UbI4zgT20hcDvPlmAyCIVM0VTRItEiOTdK11xw2kzM5mFGshYsHSOZte/HN3qY52LSBc1Ee1N9mLrOfpyumDAjFq2uOoKq2/kxHm7HHsgYSQhy6JyvxNSzW99eIxpvSRhzom6LV+jHVfcoWjRZdI054g2ih6tm29IZyfI4oUSknJ6fD/iGOzGd6L7a9FZ68Cg6hz9q7JcHpXi3RydaIj/BHiK8HPtqS/OtB5WhHzgEWXgvkJ1nOOEKIQztZtTyKPqCFYlFoW9qIoxwjm0BxuFtku010gewrR10ourylN5TnF4gSlEJCOr4qkaOhxiS/kvHY8e1MeHIrTUO/H25DZu9bUBZsuxH+qQPCkJhcgJ2p6qOnEyMfxfiZwH8leatU3QcSQkjnOtlSkae+73OW92mxjTjYINm8JrpDf26POM4Mff+Q6IzQM+l4NhzNRYiPOyICGv9EpuNcVYT+38/WivAXh6nRANvFw9UZ0wZH4O21x1FUUfPrE33kXq+7/Nv+d73ckVRYzkBCiEM62e1NQsSDRU3ibWdvoxKd9BDyk+JYT+rPfSTHB4ucZf8a0W4z2Uya8OWOUxjTM7hdhf77/HQfygL7aavo2AMxwd7oH+mHBeuOwyj//cLgm8UL+wNL7tVKRBJCSGc52a9Es8Uxzpet3Opjv+zPa6XNctGdIhn0wh/1TGLJMMGzoo9Eu0Sbxfl+byabiU55dS1+PJzTrsXMYxL/Cqe6CmTFiQOyIyb1DkFaYQV+PNRkvF/N8x3zAJArAZa1z1vOOEKIY60nK46wWBykSmxSWcIvyuPM5j3QFtoUyfYtXc1RGcakk1h9IAu9Q320wvltQRX7Dzz1I5JGPCO3byrwYD+4ODVUg1q4JQX9Jds6zF+vVOXiLh74KWDFI0C4BGT6XmFZQwkhjjFPVpxmgWix7mDb3YZ0Pkt2pLW5F+udtxfRO19E6uCHO22Zus6mq2Qaj4sLxqtrjqK2vkl42DMQmPgYsPR+6dUetZyBhBCrgxWfyGnkl1VjW3I+Erqr/DPTE516yzhsZt9bLbJUXWeiroua0vSFjFmfRkgfYOgsYNFNXLmHEPILdLLkNFbszcDgqAB4upkY7pWEn7iNv0dp8CAUh6opzfaNqgZ15aBwLaR+OLPk9CfjLgWCewLLHmQiFCGk4TdD+39CdJbualuoOOzQf+BeegrZcdKDcxB83V1x+cAwLWxcJklipzHit0CG5Oht/9AyxhFCrAo6WfIL2cWVOJhRgsHdAky6Kl4FB9Ftz6taRSejk1ly6KyWPqF+iO3ijXfWnTh9Wo9KhJr4KPCDJH9l7rOcgYQQq4BOlpwWKh7ePVBbV7XVD05tJeLWPYCs3jej2ivMIa/ixf1CkZRbhp8ONyvj6R8lg7d3AItnA9X6AgOEEIeETpactqzdyFjTEp6idzwvzjUcRWEtlaV2DFydnXDV0Eh8vCUF6UXNqj6pxd4DewArH7eMcYQQq4BOlmikF1bgeE4pBkX6t3pF/DI3I/jkSmRINrE1LrzemYT6emBC7y54efVRVNfpq/U0ohYSOP4DcGCZZYwjhFgcOlnyS6g4ISYQLtI7O+cHpqYUvTY+Kg72dtS7qpLTZHh0IHw8nPHR5sZKoDpuXsD4PwDfPAwUNa6FQQhxJOhkya+h4pjWs4pjEv+GssA+KA0ZyiunY5De/BUDI7D9ZAG2JuWdOX9WLSaw5G6gvllPlxBi99DJEq0m78m8MgyIPPfi7H4ZmxB46gdkxc3iVWthtZ6rZXz2nfVJyJQs7dOIvxYoF+f787953QhxMOhkCVbsSceImCCtPu+5sol7bnkCmX1utduyiedLZICntv7u/O+OnD4+q+o4j5OQ8U9/B3IOW85AQkinQydL8PWeDM3Jnotuu19GpU80SrqqRZLI2UjoHghfTxe8vyHp9Cf8IoAhEgH44k6grsm6tIQQu4ZO1sFRWcXJuecOFXvlH0DXY4uR2Xt2J1pm2+Oz+9OLseZQ9pllF108gHX/sIxxhJBOh07Wwfklq/hsoeL6OvTc/Diye12POvfWp/cQwN3FCdcO64aFW1NwLKf010uipjuNntswNpuulkcmhNg7dLIOzte7G8Zjz0bo0UUwGOtRGDGxE62yfbr4uuOy+DBtfLaookl42LtLQzWoL38L1FZZzkBCiG07WQmbvSfaJHra1Day9RetFK0WLRG5mXou0r5QsSoLGB/Rcg/VtSIHUbvmI0OSnWDg/Vhb6Rfuh/4Rfpi/+ghq6prUN46dBPh0BdbM48eWEDvHLL+c4gxnyMbZaDSOlW2EPI4zsY2aGzJfjk2RrVrIfaop5yLtY9W+TK1W8dkKUHRPnCc92Amo8o3mJW4nF/QO0bbvb0z6dSEBFTYeeQ+wayGQuo3XlhA7xlzdE7lVx2J9f42opQK3Z7QRR/qmaLV+TP06ZZt4LtIOvt6TLuOxLYeKfbN+hn/mZuTGXsNre57rz04fEoED6UX4Vm5qfsEzoGFZvCVzgJpmdY8JIXaDuZyst6ixjlyxKLQtbaS3OkY2geJwt5h4LvWaOaJEpZycZquikDPIKq7EsexSDGypVnF9LXps/ROy4m5GvcqGJeeFh4szrkuIwhc707AzpfDXJ2LkftFfogTf/4VXmBA7xVxOVqVUeur7Pmd5nxbbiJNUXavXRHe04VwQh7xAlKAUEtIQoiPnDhUPiw7UVpJpTtiRhah3dkNx6Chewg4i0MsNMyXj+I21x5CcV376IgJ7PwNObua1JsQRnaw4Pfdmj11EjQ7wbGxvEtYdLEo2pY2e6KRCw0+KszzZhnORdmQVq6k7zXGpzEO33a8gs89vHH6FnY4mKtALl/QPxd9XHURuqZ5Z7OEHjJLx2SUirj1LiGM5WXF6zrJZJ9u/iBS3yeM/iFobqPtKNFvaz5ft9aL9sj+vlTbLRXeKVEmhP8rxtaIbztKOnAfZJZU4lFmCQZEyLtiM6J3/QFHYGFT5dOM1NgMDJJNbVYV6bsVBlFbV6hd9NBDcU8LGz/CaE+JITlZ6k3WyUVkZx0VXi9TSK4tEta28rlhPWFJjqpPl8W7R0620KRK9JVJjsZN0fdpSu3b9S8kvqAScodEBcHNxOqOyU1DKt8jpwWQnczIqNhjRQd548dvDv9Y4HnGX3IrK/WTSen5SCXGwMVmjnni0QqTii6omnLHVFxmNBaLFoiYplW1v05Z2xDSWtVSAwmhE7M9/Rk7PmVwnthNKL17UryvcZTxczaGtrZevk7svMPpeidtI2LiqxNwmEEKsJFx8g+5Qo0SfiBaI1LhppDx3vehm85tIOpKckioczCjG4G6nh4qDUlbCtSofBZGTecE7aWrPtCHhKJeQ8ZuSDFUvNznoNgIIjZestCf5NyDEQXqyarqMqkTQQ6SKQEgqJOSWG2peR7iIA3c2xqr9KlQceFqoWC1jpxZjz4y7hZWdOhFngxNmSMaxqryl1qHVilUMl5zCY6uBo43TxQkh9jwm+6psUkUnRGWit0VqTPS4PPeK6EXzm0g6vFZx99NDxeEH3kWlb3eUB/Xjxe5k1BSq6xOicTy7FO9vSIbRzRMY8wCwdC5Qns+/ByEOMCar2qjqDreKrtQzgIkNoqaNqMpDg6N+DRW7lmchQpxsVi81MkAstWrPDSOjcEDC+B9uOglj+CCJH42VO6KHtLFyQoj9jsm66IUgRoqS9Dmsz+nHiA0WoBgSdXqoOHrnizIOOwk1Xi0W0iKdWBXqppHR2JtW1NCjHToLyNzTUKiCEGK34eJa0UjRn0VVIrUI5uNNagkTG8sqHtkkq9g7by8C035Cbux0C1pFGvF0dcbNo6JxOLMECzalo27sw8BK+boVqhEbQoi9VnxSqFCxhpq3KvpAf07NnSU2UoDiQHrxr6FiCUPGbPsLcnrOQL2Ll2WNI6f1aG+UHm1ybile321EXd9pDWvP1qsp64Q4HgaDwVtf+vQn0UciQwec8+XzfP0zIlW/4fydrDhUNSj0opzwBdHtohj9Tabr2cbEBli5NxPDuv8aKm6YslOAggiTPieks8doR0Qjv6waL50agPoqyTnc8C/+DYijMlu0WVzRBbJV9UgTzveEci4JE1nHmOwY/a5BVXx6V6SKQTwghzbI9inRjeY3kXQES3elYZQeKjbUVSEm8TltlR0uxm69Wcczh0eiXr5+/yy/HPWbXgfSVBlvQhyONNE14nfixDneJftXNPYiZXubkr6vSvG+JPpWf/xUY7RVtk+IVFleNLZtsn9GO5GX6HORKiv8hv5coOh70Y/y0OTeSWs9WWXUZn1O7Cj9xGq+rPpHVOvzZ4mVk1nUsKzdoG4Ny9qFH3wflT7dUBY0wMKWkdbm0U4bFAH3gFB8WHcpaj+VUZtKVWWUEMfBaDR+LRsVyvlSHJyaVqpq6rfEaL3He6n++HPRZfr+Beeoe99SOxWl3SfnmijbcHnfQfqxb+SYqthT01GJT7+TzVV6RvFNentV2PaoSI3T/lfPQCZWzHJtcfZAuEjvyLUiB5H7FyCbU3ZspjLURX1DYYgZj/Ul4Sj85G5O6yEOhUF6sLJZJRoiUuuY3tLk6aYzXZRT/LLxgewf0asT+slW1cZXtR7O4Czt+ui957V6ZzJSFCvao78ssaPCxX+UzVyR8tzf69We1Ko40WKImtJzo2zPuVgAsTxLtaziYG0/eudLKAwfj2pvFZwgtoKqNV004BYUJe/E/mXnlbNBiK1xl+ga8TUq+2+f6D+6L1JMbdJOrT3enJ9Favx1WSvv0bzdYdHL8p4qeqsWt0kRqeVX++vPK4ffIeHiAr0QRXd9f4RIOdVMccDqbkJfQoRYKyl55UjNL0d8pD+88vcj8NQPyIllUrgtEhfeBafi70e3nf/AomXfqDtwS5tESGfwiug2vVepajYsET0qj1UFwrxWXvu57jxVyLkt7d4RXSbvsU6294hS9WMzdTtUr9ckWgv1qn+Alx5/VkuDvCW6V7+LKNC78Fq2MbFOlu5Ow+gewTK+J7GOn59BTo8ZqHf1trRZpJ0EhMciq2Y2Ju/8HR4v8sWzN46Hh+vZhqgIsX2MRmO6bJqvXDKxhXZnJCPJsQOyCWqtbfN2esj4l0SpJrR5BZXWxmQ/1Ze4U1nFPnrXXI3FThOp5x5s6xuSzkP+fvhyR4OT1absVOZxyo4dUBM9AU7dhmPWqWcx4431SCtUSz4TQmy1drHq9vxe76L/QX64VUz8I72Hu8mMtpHzRNXCraiuRZ8gZ8QkzkNm71nyF2evxx7I6X0TenqV4xH3JZj+2gZsOpZraZMIIe1IfFK/yG/q3fU/6L1X1UNaqPdmnznHa98TbRKpQWOT28h+qGh9k8cq6+uUioPrUtllxAS+2pmOMT27IPLAAlT4xaKcU3bsBycXpA28H+OLluOFfkm4f9FOvLX2GMdpCbEyWgsXq2yuaj21+ZioWPadRCpMPFPv4Z6BPD9DNs7y+rGyjdBTsFttIwqU/Q9FTQcN1fzcv6kYui6ViEVaob7eqBWguCisCuGHPkR2LzUDi9gTte4BSB38MCYdmYeXZYRqyc40/Pa/iSiqMHkKHyHEUk5WHJ6r6mXK7hjRE3rCkypnlSEKEmc3U6QKUrTEpCaLCKwRjTexjXLqas214mYTjO8TWzaLWFvORLacyIOPuwvGHPsn8qIuQY1nF1NfSmyISolQZPS9HaO2zMWzk4Ph4mTAla+ux740tewzIcTSnDW7WByouh0eK47ta9lXZaeUQ/5OL6d4j155Q43RtnTb7K2XwoLuMHuZ0kbOpTlXOXfTditFf5XnSuT4ctEg2W+cEPwLcnxOYy3l6Ojos/6DHYXFian4Tdfj8MncjeOjX7C0OcSMlISOhHt5BgauvQN3XLoY61N9MevdrXjs0j7aqj7Nvk+E2CwxTyxX81WjOvCUqckvXGFWh3HOKTzy5XSTjVE5WHFs9bLNl8eJsn+H7Kss449FLa32XdqkEofPWXrMprRRbJL3U0WhFYdEKvR8hpOVNgtko4SEhASHnkBYVlWLdQdP4Tnv+ZLsNBtGZ/VnJPZMbsx0uFTlo8/ae1B/0QeICe6P19YcxabjuXhh5iD4erha2kRCOoKo9kyjOQeqDnGrqPwh2fQTrRBfM68js4t/0MPFz8ubqMQnNTF3keyrTOOhojfP8rrtTULEg0XJ7Wyj+FbeT9WOVNnMqialym4m52Dlvkw87rMSNb6RKA1RfyZi90hvNbOP3Pcaa9Fr4yOI8HfHX6bHo6q2Hle8uoHhY0LaiSk5RueT+DRBXyBAhYgf0Cfr1upjtCrT+I6zvFSVXpwtxszXJ/Tul/15rbQ5W/Hmv+h3G1tEb4tNqtwVOQc/bdmKqyqXIStuFq+TIyEjOmnx98GjJBk9tjwFN2cD7hzfA9MHR2jh4w83JTH7mJC2Y0qO0XlN4fEQ9RQ9KlJO9yHR66Ldus5AH1udpDvGyfJ4t+jpVtoUtVSNQ/Z/FPUVqbFY9b7kHJzKL8MtOf9EfuyVTHZyQIzO7pJx/Hv45O5GzLZntMUExvXqgj9P64//bj6JOR9tZ/YxIW2jef5QaEdP4blBtkdEn8n+3bJVs97vk225aP45XlsgWixS1aLa3Ya0jf0r3ka0awkKul/OS+eg1Lt4IGXIo/DP3CyOVgJBxnqE+3uKox2gZR9f9so67ExRVVEJISZgav5Qi7TaWDnCJvsn9K1a6o5YGXXFWRh17F9I7XM7Kzs5OPWuXjg59HH4Zf+MnpsflwN12kLwvxkTgxsSonH7B9uw4KfjDB8T0jqm5g+1CNeCtSPyFj+Ava7DEBaulkIkjo5aCCJlyGOI2vMyeq9/AEfH/0sLJ4+MDZLsYy+8sfYYNp/Iw79uGIIAL2agE5sg1dSM4DacrzVU/tB6GT6N0Bd3V7UbTMagisjbG2oKT2KiyWvq2gd7P0fO0qewOvYJDI5p05ABsXMMddWIOPBvONVW4fCF76DWXRVWkwzGunp8kpiKHScL8MasYRgW3XCcEAthsNYrr1cjnCJa19bhzTbFlomVUpyO+uWP4K3aaejXjaWdyemoedJp8XNR5ROJgSuugUexNuoDFwkf3zKqO24eGY07JHz8zroTDB8T0sH5Q3Syto6KRCy5B4f8J8AzrC/cXPgnJS1P78mOuwn50ZcgftW1CExd/ctTCTFB+Mv0AVqVsDn/3Y7iStY+JqSj4C+yrbPlLRhLs/B6zhAM637G2sSEnEZB5IXaFJ8eW55G1I4XYahvcKhd/Tzwf1f2h5P8IlzxynrsT2ftY0I6AjpZW+aUjDuvexG7Yu6En7cHwuSHkpDWqPDvhROjnoV/1latV+teclI7rrKPbxsbi6uGROLmd7biM+nZEkLOD2YX2yrl+cDi2ZLndh++3FmH4ezFkjZQ5+Yvmcd/QJCEjQeuuBqpQx5BVu+btLCyKl4RHeSFV344isTkAjx79QC4u6i6NIRYmGf8O3yBADxT1OoCAWqdc9l8rldBbBN0srZIfR3wxZ3yURuDJO9ByC4+iD5hao40IW1AHGp+9KUoCxqA8IPvokvSVzg+9u+o9OuBKHGyz06Px4L1xzHzrU1YMDsBEQGN8/EJcZwFAgwtr3NuMgwX2yKrnpSYXwEwbDZW7c3UerHO2kqEhLSdKp9uSE74kzjb/hi4coaM1b4Ep5pyeLo548EL4zAoMgDTXtugrehDiANS18I65ybDX2ZbY8vbwJFVwAWPI7+yHj+fzMeQ6ABLW0Xsold7GY6Peg4++XsxZOlF6HLiKxhgxLTBEbjngp6Yu3AHp/kQh8NoNBaL2p0JSCdrSxz8WhKdXgIu/D/AzQfL92RgYIQ/vN0Y9ScdQ61HkLaST/qAuxG5720M+uZK+KevR3yEnzbN55NtKXhw0U5UVKube0JIa9DJ2gqHlgPLHhQH+zTgG4bSqlr8eDgbo3sEW9oyYoeUB/ZF0og/a2O2atm8Ad9ejx7le7RpPkUVNbjmzY04VVBuaTMJsXroZG2Bg98AS+8HLvoTENxLO/Td/kz0DvWFv6erhY0j9rwQfHHoKBwf/QKKu45A3IaHMfSHWXisTw5Gdg/E9Nc3YvPxPEtbSYhVwzijtVdz2vpvbS5sUwdbVVuPleJkZ41sNfOckPPHyRlFERNRFDYW/pmbELf5UTzqGYox8Xfgvo8T8eDFvXHb2BiVhcmrTexxgQCNpuuctwUuEGCt1FYDK/4AJG8AJj2lhYgbWborDXvSijBjaDcLGkgcFmM9/DK3oMvJb1BtcMP8qqtR1mMq5s0YAg9Xzqcl7cZgj9fObE5W7mrfk00/0Qp5j3mmtmk+6Vceq3joEpGqGfiuHH/frKvwqCIPhSmSrJ0midvVDX93V88GJ+cXCXjJGKi579jTdwFf3Qt4BgLjHpL39/rlqbLqWjz0yS7MHt0dXXzczWsHIa04W9+cnQhK/holpaX41ON63HjnIwgL8uV1I+3BYI+XzSzhYnGMM2TjLA5xrOy/KYprvtB7S23kcW4Lk34fECVKu2ekzZeiz2S/pEN7jIdXAEe/A078BFQWikMNFwvEmTrra2zWVjY439IsCZ3JJes6AIgYCnQfA0SNkrZdOsaWMvnnb/gXsOt/wPDbgB6Tz3Do3+zOQK+uPnSwxCqm/ZR0HY6SkGHwyt+PmQe+gPHVj5E85neIuei38uvCm0BCzDUmq2LXi/X9Nfqq8qc52bO0+UKf9Lu0Wbsn9P1NooSWYvLifOfIRgnR0SaMVZaIw9zyJrDzI8A/qsFZTn6qYf9sPVXV668QZ5ufBOQdbXCI2QcberkxYn7MhIbzBLSh6pc6Z84huY34ANi9qOE8015p6MU2Q2V1fnsgE3eOizX9/ISYG/m+lAfHAxPikZe0E/6b/4PyHa/A86LHYRg2m86WODTmcrKqJyrxVg1VJaMhY6eVNmrSr3rQLIGiebsWVySX1y6QzYLGcPFZLasuF1f9mjjYN4DYC4BL5jU4VlNQdqlwsVI35ev1EocF4nQz94qjlEj2ikelBywR7rCBokFAl97ihMVk7xB5vYxX1dc2VGtSTjrrAHBsdUNvWjnX6a81nPssfJqYivgIfwR46T1sQqyM4NihyOvaH29v24yZP76H6A3zYZj0JDD4JvleMM+SOB7m+tSXihoLnfqcZaqQKW2ativS26nH7SN5I/ClhLGCewKX//O0ZKLzybzUsn71zF+tZ1qS2eB4C08CGbsbQtAVIhgbHK2bjLH6RsgYr4SlJzwCBMa2Os6blFuGn5Pytco7hFgzwd7umDR+Ij7c0xNdK07gji3/htt6+b5d/AzQ/yrz5zQQ4gBOdrse/t0iGiw63M42Tdt9rrdT7dtGXY0EpKXHuvNjbdUaRI1s8ylMRv2AKOep1H1sh5zSKP+9tzEJF/QOgSezN4kN4O7ipGW/bz7hifuTwvDkkErErvkrsFGGQi59riGfgRAHwFxO9ivRegn7SncNl4lulP15EtJ9+hxtRp/lXCoRaoW0U9nG/UVb22SJSlj6ZFZDmPbKl6VPbHt1fjccy0V5VS2GRNme7cRxUcM+Y3t2Qbi/J57bnYbLBvweV/sdhdNnt8pwi9zoXio3voExljaTEJudwqMyd6aI1sl7SPy0fW30dhF6b/ZbUwo1/zKFJ+cIsPC6hvHTobMbQrs2RqEkOz36+W5cN7wbIgN+ncpDiC1RLJ/jJTvTEOjthgcmRsHn+NcNtbgT7gIm/kGGUNq1ihixLwyWNsAc2G8xiqULGhzsUOnF9lJ+3PZQYeJ/fHsEHq5OuLBvi/lehNgMdcZ6rDmUgyOZJXjo4jj08akCdnzYkF0/9XmJU13N8VrHxmBpA8yBfTrZQf2MibMqG8Zfo88WhbaNMPFiySi+Y1wsXJ1ZZprYB4ezirFibyauGBiG6UMi4Zy1D/hZbooDuwNXzG9ITCSOiMHSBpgD+3Sy3dyNiZ/8HYgcbmlT2k12SRWeWrIXNyREISKgMQmbEPsJHy+VcVqVyPfAhXEI8pSbyIPLgH1fys3xXBkcelgyRjhVzcEwWNoAc2Cf3SOfUJt2sNV19RImPixJI8F0sMQu8fN0xaxR3RHq54HHvtiDTUmSajFgRkNP9vgPwFtjgZS2TyQgxNqwTyfbpNavLfLehiT5EXLByBhVrpkQ+8RJso8nxIXgeonW/G9rCl754ShKXOQzP/mPQPxM4NNbgK+lR1up1aghxCaxTydrw3y9Jx2HMoplvCqCS4cRhyBShkPumhCLehm6euSzXfg5uUAvL/paQ2GXN0bIQO5KS5tJSLuwzzHZgX2NicvesbQZbWb90Rx8LHf0t42J0cJphDgaKfllWL4nE7EhXrhdEv6CVAnRzD0NdcYjE4DL/yHDQSGWNpOYB4M9Xlj2ZK2EHSkF+HDzSdw4IooOljgs0UHeWq9WrUv72Gd7JAs5A3VdBwJXvtKwAtabo4DdnzaULyXEBmBP1grYfCJPG4e9PoEFJwhpJKekEt8dyEJVbT3uHB+L/uF+QO5R+cK83jDdZ9qrbVvxilg7BksbYA7Yk7Uwqw9m4YONSbh5ZDQrOhHShBBfD+17MbpHMF5bcxQvfXsI6a7dJAP5n5KeLNu3Zdx2y9sNK2ERYqWwJ2shauqM+GBTEvaeKsJ10oNVK5cQQs72fanHtuR8LeozOjYY1w7vhqDaLOnVvtmwtORVbwChqrQ5sWEMljbAHNDJWoDM4kq8vuYYnJ0MmD4kAh4utldTmRBLUFFdJ442FztTCzG+VxdcNTgMwWlrgV0LgRF3AhMfA1w9+MexTQyWNsAc0Ml2ImqKwncHMvFZYppWaGJkbJA2V5AQ0jZKq2qwJSkfu8TZjo4JxvQ+7gg//BFQdErGaiVJqsckXlLbw2BpA8wBnWwncTCzBP+RsVeVFHnFoHB08WF4mJDzpayqFttP5osKERfqgxvCMtD9xEIYuo8DLn0e8OXCGjaEwdIGmAM6WTNzNLsEX2xPQ3JeGSb36YoBEX4sMkGIGcZsVX7D9pR8uBlrMCdgG3oUbYHTpCckjHyXjNuaa+ls0oEY7PFq0smagbp6o3Z3vWJfJjKLKjFGQsODuwVwJR1CzIwqrnMyv1wLI5dnJ2GOx2p0kSFaj6tfgXOs9G6JNWOwtAG2tmj7e7LpJ1oh7zHP1DbNj8ljdQt6QpfiATm+1xorPqUVluOnIzlYdyQX/p6uGBYdiH7hvpLgxJlShHQ25dW12J9WBOfUjZhatQpZAcOAS+ZhQL/+jCZZJwZLG2AOzBJDEcc4QzbO4gzHyv6bojjZP9paG3k8sIVjvqJFcuxxc9h6vmRIT3VLUi42HctHUUW1hIP9cf2IKIT6MsOREEvi5eaCEbHBQOx0HCqaBI/DS9B38RS853wFcgbdi0uGxGJoVACcnOzyt51YCeYaqFCpfYv1/TWi8aLTnOxZ2gxt4ZhaTPUacbgq1nNSdKs43Foz2d0qRvnvRE4ZEpMLsDUpDyWSeNE31BeT+oQgOsiL2cKEWCFB/n7AyFuRXn4Zrjz0CTz3Xos39s/CvXUTcNGAMFwqUsM67pxOR2zEyXqL0vR9tU5VLxPbtHTsB9EF4lgzxNG+IfuXi5Y1P5k8N0c2SoiO6NiMwloZYz2YUYyfxaluE+fq6uykZTJeIl9MtYIIp+EQYhvUenVF3rAH4Vl4BA8dXYS5dSvxRcl9+PuqXkjNr9Cm1qnv9WS5aQ7mDABixU62VO+BKnxELQ1KttSmpWN7xMFW6ccOiVQI+QykzQLZLGgck+0Ix7pXxnM2H8/VpgcEeruid1df3DQiGl18Of2GEFumIqA3khP+BL/snzHr2EuY6dsd+y9+BOtKvfH59lP487J96Bnigyn9Q3FR31Att0Ju5C1tNrFBzOVkt+uh3i2iwaLDJrY51cKxj+TD/TfZ7hNdI3rOnKHg4xIK/vFQtoSC87VltvqE+WrFyVUiEyHEjhCnWRw6CsUhwxGY9iNGbPgt+oSORErCIyiZNFyLXu0+VYhFW1O0m+4L+3bVnO7Ynl3g6cYqbcSC2cXiFGUABOv1UO9lohtF18l7PX2ONqNFypjmx9QyG/9TLxEtk3P8sbX3b2t2camMq6qs4NUHsrT5dgMj/REvClRrWRJCHAJDXSWCUr5DcMpKFHS7GKmDH0a1T6Q2LUglOO5MLcDu1CK5ES/FiJighl5uv64I928MvpHz/RPADjHnFJ5A2UwRrZP3yDS1jSmv6ygnm5RXhhV7MpB4skDGWH0l09AfUYFeDAsR4sA41ZQi+ORKBJ36AbkxVyJt0P2o9go7rcqU6uHuTi3U5uNGBnrikv5hmtNlsZnzwnCefzqrxOGKUaiQ8O5TRVi6Mw3phRUY3j0IQ6ID4O3GijCEkF9xri4WZ7tcQsk/IafHVUiPv/c0Z9tYeOZwVgl2phRgh6i2zoiL+4VK8lQos5XbjqEdr7F6HMbJquL8atqNSmqoqqvTlssaEOkHZwMLRRBCzo5zVRG6pCxHgHK2sbqz9Q4/o536LU2XsLKq9qbCyin55RjXK1ibHqRKqgZ6c/ipFehkbdHJqp6ryg7+dFuq3HXWa8tjqdAwp90QQtrrbLUwcvx92pjt2SiqqNF6uCqkvC+tCH3D/SSsHIqLRSpzmZwBnaytOdl96UVYuPWktgblxN4h2hQcpuETQs4/jLxCwshrkR81BWkD70OlX+w5X1NdW6/9HimHqxyvqkalspVVaHlEbCCLYDRAJ2srDOrf23jDfY8gragCF8SFoH+EH3uuhJAOxVkSpAJTv0NQ6moUhY0VZzsX5UH9W32dCisn56lFDBqylU8VlmtrS6v5uBdIZyAqyMtR/1IGSxtgDuxyTDYkIsr40kvPYZgkNLE4PyHEnDjVVkivdo2WkVwWNEDr2RZ3HanNwzWF4soabZk+Vfxmj2Qt+3q4YkJcFy36NrpHsCPN0TdY2gBzYJdOtn+fXsbP3n/F0mYQQhwIQ101AjI2IChlJWrdg2TM9h4JJ18iXtj0whUqQVMlTKkx3P3pxTicWSLjt96SQNUFY0UJ3QPh7W63MyEMljbAHNilkx3QN864+L2XLW0GIcQRMdbDNztRK2rhXFOG9P53IafnTNS7qtLsbUON5R7NLtGqTx0Sh6sWJ4nr6qNND1K93OExgfCTnq+dYLC0AeaATpYQQsyEZ+FhcbbfwrvgILJ6XofMvreeMyPZFKd7JKtEerjFOJJdiqNZpdrqX6N6BGFUbLCWRNXVdpfZNFjaAHNAJ0sIIWbGtSJbS5AKSF8v47UJmrMtCh8nv8DnN0+/tq4eJ3LLpJdbjGPidFVvV43hjowJ0nq6IyShKibYZqrYGSxtgDmgkyWEkE7CqbYS/jJuqxKlDMY6ZPaehZweM1Dr2aVDzq/GdE8VVGhOV/Vy1VaNCKrsZRViVr1dFW620oXqDZY2wBzQyRJCSGcjns+z6Kg219Y3exuKw8Ygu9f1KIyYCKNzx1WGUjk3OSVVWg/3cJaM62aUoKy6DiNkLFetJqR6u33DfK3F6RosbYA5oJMlhBAL4lRbDv/MLfDL3AT3snTkdb8cubHTURIyvE2ZyaaSX1atJVIpp3sgvQQllTXS0w3WSkAqp9sn1GJO12CJNzU3dLKEEGJFY7f+4mz9pHerKkupKUAFoqKw0dLDdTfLeyqne0A5XQktH0gv1nq6Krw8TmUwi1SlvE5yuobOeJPOhk6WEEKsELeyDPjmJMI3dxc8SlIkYWoECrpNEoc7vqGMo5mSmfJKqzSnq7KY1Vatt53QPUjCy5JIJQlVqoKeq7NZFlYxmOOkloZOlhBCrBzVq/XO2wef/H3wLtgPQ32d5nRLJFO5pMsQlAcNQL2Lh9l6uiqBShXGOJJdguziKvQP90OCjOuqpUIHR/l31LQhQ0ecxNqgkyWEEFtCkplcK3PgVXAInsUnRMelp5uKKu8IlAf2Q3lAb1T490SlbwwqfaJQ5+7foW+verZqutAxcbhJuWU4Kvuers6Ij/TH4G7+6CcOWCkywLOtYWY62TZdLYPhPdn0E62QDLd5prYx9di5YMUnQogjYaivlfBymhZWdivPgLvIrTwbbhVZMBqcUOMZgmrPUNR4dBEFi4JQ5+aHOlcfkTfqnT21nnC9wUXGfl3lNS56OFrJqP1P/Z+admQw1sv71WjvqbYQFZdVILeoFPnFpSgpK0dRaRnqamsQ5u2EUG9ndBEFeRjg767kBE91ejmPfuIGpj5vl07WxRwnFac4QzbO4hDHyv6bojjZP9paG3k80JRjzc91xvvLH921PMsc/zRCCLFK6p09tF6sUiMGcWJONWVwrSqAi1J1kTjfdHgVHdEWNtBUV/WLIE7USZynKg0pZ1ShzoazaO7PSXO8ymkrJ2yUzGejQbKfG/edlHOWrbM8DnCBnAmV9QZUVQKV5bKtA07JqY/VGVEjx91cXETOIid4uDph6trlf0x+4Yq/Wejy2Va4WBzhq7JZJedeIfvXyr6v7H/QWhvRUFOONT+Xfr45slFSae9DXQLCSjr8H2ZG6ivL3Jw8vKstbUdbod283vyMWBc28Z00GJwMBukyOzm7yK6L6jAba6pRnXvS7nqzZunJCqoSdpq+XyzqZWIbU4+dgTjeBbJZoDvcxJq8Uwnn90/oXJTNdWUFNmWzgnbzevMzYl3Y8ncSdohZ8rCFUpGnvu9zlvdpqY2pxwghhBCrx1wOa7tovL4/WJRsYhtTjxFCCCEOGy7+SrReuv8Rsr1MdKPsz5OQ7tPnaDNapAaITTnWGlrY2MawRZsVtJvXm58R64LfSUeYJytOMVA2U0Tr5D0yTW1j6jFCCCHE2rHLYhSEEEKINcAkIuIQSDQkSDRF1DELdxJCiKM5WVUZSrRJ1HTs12oRO0NF6/V9V9E3uv13WNq2lhC7/EUrRatFS0RutnDNxbZw2SwXjRT9KI9DbMHuZp+Tnfq+1dsttrmIUkRrdQ0U/UW0TfS6pe1rDb3ozTRbuN5i171NrvMu0b+t3ebGIUCRqn2g8m3e1o9Zvd0O7WSbVpCSbYReLcpq0ceZP9TnASseECXq9l8pz6tCHNbGLNF8sVGNj6ux8Rtt5JoPEP1O7FTVZL4VXWgjdjfyD5GnDX3GB4kWiZ2TlGTfXZ8hoG5yTondF1vUunMgtk2QTZjY/bUtXG+x7a0m11ndsB+xdpt1Zos+FjvV9fYVOx+zEbsd18kK6kO2WN9f02Taj7VSJ7pBL7DR3P5NIqubTC5fgDdFq/WHIaJbbOGai83fi7bIF3ei/kN/qS3YrRCb1Q1BmX5TYyufcTUD4BqxfYNooeyrf8MXxoYEkO9F6ofV6lDRJNm8I0qW/ats6Hor2yNlEyrqbiM254n6iN0Bso0SxdiI3Q7tZJtXhlIfOKtFfm+KRUW2aL98McbIRvXEU23IZoN+U1OjHtqC3SocL5s/iZ6wsc/INtEF8vlWP5SFejEZW7D7N6IDohf1m7G5NmI3dFvfsqHPyAaR6q0+KDqkRztswW6HdrK2XhnKJuxXCUSyeU10h63YrFC9KGGuHiUYbSN2K+f6htitHBVs6HrvEZsz9P1DNmS3qpO+QJ8m+LFonY18J5Vdk8XuH23oWj8nukdsflb/jNxsI3a3Gbv5h9hBZSirt1/vWamQzpPy5ThpCzbrdj8uUr0UhQpPvWALdgtq7HKuSmqR7RDRNBux+yOxebDIWfav0XtXtmD3MVEPfT9BD2Hagt0q/L5V37eJ76TgJRqof0ZG2dB30nHnycofy08f+P+hsTJUs3CsVaJ+QFXSgmzVWMoKfcxqrG6/Gre1qkxG/Q50t35IrYb0e2u/5nqS2WI9JLVP9KTeS7Fqu5uiO9rptvAZF1vjZfM/tStaJvo/3W5VAH6qktidZDkLW0ZPNnxfD1W66ol9y2zgej+nJ01+aSu/gwaDYaT++6F+9zaLZtqC3Q7tZO2hMpReOlLdzX1rKx8wW73mtLvTr7cKBV4h2iGfkxOd/PYO9TmxRZsVtmq3QzlZQgghxJqwpzFZQgghxKqgkyWEEELoZAmxf2Rcyl3Us42vaZz6QAixMtiTJcS6uFmfh3w2h9pNX+jg7iaHVc1XlbVLCLEymPhEiJUgjlKVqtwlOq5XvVELG2ToN8OekqQ4Wdos1iv7qEL7X4lUPeaFeunF30ibekvYTghpGTpZQqwAcZ6u+kpBa8RRvqAf2yL7o5s54bf0OahRelUi1aNVK/RU6XMNH5bXqNKRhBArgE6WECtAHGiMXqpSFRPopR8ep0/Ud9GLIuwXDdR7uKqnW6dXx1mrF1xXPV4PcbLK+RJCrAA6WUKsy9mqFUguEUdZ20JPtofuiFWi039EqgLXEpGqVBSr1wxuXCWJEGIFMPGJECtAHKizkuy2WB1GnnPSyxTW63V1L9BrApfovVpvPVxMCLEiVBiKEGJ55ojUGqYVoq/EqUJfb/Mb/Xlnvdd6iegjkYfukP1FamWkiXqtXUKIFcFwMSFWijjYrRL+HdXksZo/+3fRRlGYPjZ7u+hzUbq+lB8hxIpguJgQ60Wtq9mUXD2z+DuRWofTVV+paZZokDjh4E62jxDSCuzJEmIHqPFca1sakRBCJ0sIIYSYDYaLCSGEEDpZQgghxLZgT5YQQggxE3SyhBBCCJ0sIYQQYlv8P2WuAkZah5tHAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "facet = sns.FacetGrid(train_df, hue=\"Survived\",aspect=2)\n", "facet.map(sns.kdeplot,'Age',shade= True)\n", "facet.set(xlim=(0, train_df['Age'].max()))\n", "facet.add_legend()\n", "plt.xlabel(u'年龄') \n", "plt.ylabel(u'获救率') \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "从上图中可以看出,年龄(<=15)小存活率高,年龄大(>=60)的存活率低,这与社会对小孩的保护以及老年人体力不行有关。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.5 家庭成员数量对获救率的影响" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "家庭成员包括一起旅行的兄弟姐妹和配偶的数量以及一起旅行的父母和孩子的数量。" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "train_df['FamilySize'] = train_df['SibSp'] + train_df['Parch'] + 1\n", "Suvived_0 = train_df.FamilySize[train_df.Survived == 0].value_counts()\n", "Suvived_1 = train_df.FamilySize[train_df.Survived == 1].value_counts()\n", "df = pd.DataFrame({u\"获救\": Suvived_1, u\"未获救\": Suvived_0})\n", "df.plot(kind='bar', stacked=True)\n", "plt.xticks(rotation=30)\n", "plt.title(u'不同家庭成员数量的获救情况')\n", "plt.xlabel(u'家庭成员数量')\n", "plt.ylabel(u'人数')\n", "plt.show()\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "train_df.drop('SibSp', axis=1, inplace=True)\n", "train_df.drop('Parch', axis=1, inplace=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "船上家庭成员在3~4个左右的获救率最高,家庭成员太少或太多存活率都不高。一般而言,一个家庭里的成员会优先救自己本家庭中的人,但如果家庭人员太多,也会出现耽误了太多时间救援家庭成员而导致自己未及时离开的问题。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.6 票价对获救率的影响" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "facet = sns.FacetGrid(train_df, hue=\"Survived\",aspect=2)\n", "facet.map(sns.kdeplot,'Fare',shade= True)\n", "facet.set(xlim=(0, train_df['Fare'].max()))\n", "facet.add_legend()\n", "plt.xlabel(u'票价') \n", "plt.ylabel(u'获救率') \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "一般而言,票价高的往往位置比较好,救援设施也更好,获救率也越高。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.7 登船港口对获救率的影响" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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DT0DIgEAqBFCbfw35u8nAQBAHn37bWV/RC7/GAPIZXjOGYtrhuH2OypAzdRmqP2sctV591KbmXvdvv/++6h27dpRt27dohkzZsQDs/vss0/09NNPx+tq1aoVH6lPmjQp7rP/7LPPogsuuCA644wzooEDB0Z77WU/T104JAAAqALWmB9xxBFRvXr1otdeey06/PDD4/qFCxdGhxxySHwmMGbMmKhhw4bRV199Fa1evTr65ptvoo8//jhOEFdeeWW8/Q8//BBtsklhOmdIAABQBZo0aRJdd911Ufv27aNzzz03uuSSS+KzAVseOnRo1Lhx42jRokXRkCFDosWLF8eXrrZu3TqaMmVKnATsrOGtt96KLrvssuj444+vgj1aNxIAAFSRl19+OTrwwAOjU089Nb4e347mZ82aFe24447Rm2++GZ155pnRQQcdFDVo0CBauXJltGzZsujBBx+MRowYEe2xxx7RzTffXLDG3zAIDABVwI7eb7zxxrgBt75/69Pv1atX3B00YcKEaNq0aXE3kTX41vCPGjUqWrBgQbT99tvHicMSRMeOa/0cdl5xBgAAVaBdu3bx4K518Vj3zl133WVTMcf9/9OnT4/79W0A+KKLLoqOPfbYqGXLlvGNWw888EA0YMCA+DmnnWY/b104nAEAQBWwwd5BgwbFV/XYgK/1/9sZwSmnnBKNHj06TgB33HFHdNZZZ8VnCf3794/23nvv6J577ol222236Nlnn4222267KtiT9ccZAIAaZ30v26xKHTp0iLt35s+fHw/u3nbbbXFfvx3xH3bYYfaDVlHfvn3jK4UmT54cXwVkg8Nvv/12dMMNN8SXidrzDz300KrcrR/FGQAAVAHr3hk7dmzcmNvR/cMPPxxf2mn11h301FNPxZd9Tp06Nb4yqKKiInr11Vejfv36Rddcc0306KOPxs+97777CrfPNolQqdAHlirYL4JxIxhQMmygdYcddij2blSKdRfVrVs3Xrb22KKy9wFk+xyUgObpNSuybU8XEAAUUbrxN3a2UMg5jegCAoBA5TUBKJONUfT15fGKOYphifVr1QEASjwBqFHfW8XW6nv6m5YHaLmWlruqbKHHHbLV5WtfAKA6+7ZIM4bmZQxAjbn9JtlNiqlatmuaeigm++qZim6Kzlnq3sjH/gAITFVfxDF8w2fPHTZsWNS1a9d46ofK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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Suvived_0 = train_df.Embarked[train_df.Survived == 0].value_counts()\n", "Suvived_1 = train_df.Embarked[train_df.Survived == 1].value_counts()\n", "df = pd.DataFrame({u\"获救\": Suvived_1, u\"未获救\": Suvived_0})\n", "df.plot(kind='bar', stacked=True)\n", "plt.xticks(rotation=30)\n", "plt.title(u'不同登船港口的获救情况')\n", "plt.xlabel(u'登船港口')\n", "plt.ylabel(u'人数')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "船港口不同,生存率不同。在C港口上船的获救率最高,而在S港口上船的获救率最低。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. 逻辑回归模型" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 这是一个二分类问题,可以使用逻辑回归模型进行学习和预测。线性模型假设输出值与输入值之间满足:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$ Y=X \\times W^T + b $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "其中,$Y$为输出值,$X$为输入特征量,$W$为输入特征量的权重系数矩阵,$b$为偏置项。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "当系数矩阵$W$和偏置项$b$确定后,输入一个特征向量,即可计算出一个值。但这样获得值是连续的,可能很大,也可能会很小,而分类范围,需要在[0,1],逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,其回归方程与回归曲线如下图所示。逻辑曲线在z=0时,十分敏感,在z>>0或z<<0处,都不敏感,将预测值限定为(0,1)。常用的逻辑回归函数为Sigmoid函数,其表达式为:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "g(z)=\\frac{1}{1+e^{-z}}\n", "$$" ] }, { "attachments": { "linear_logistic_regression.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![linear_logistic_regression.png](attachment:linear_logistic_regression.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "接着,再通过定义一个损失函数来描述预测值与真实值之间的误差,当预测值与真实值之间的误差越大时,损失函数也越大,通过梯度下降法可以得到系数矩阵和偏置项的优化趋势,再设立合适的学习率迭代求解,可得到对应较小损失函数值下的系数矩阵和偏置项的值,模型训练结束。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. 模型训练" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.1 处理缺失值" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "    目前的数据中,剔除船舱号后,年龄列和和登船港口列存在缺失值,需要进行补充。对于年龄,可以采用使用平均年龄进行填充,而对于登船港口,可以使用人数最多的登船港口(S)进行填充。此外,由于年龄是一个一个的数字,在数据量不够大的情况,这样一个一个的数字没太大意义,我们要按照年龄段进行划分,票价也是如此。" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def handle_age(age):\n", " if age <= 15:\n", " return 0\n", " elif age <= 60:\n", " return 1\n", " else:\n", " return 2\n", " \n", "def handle_fare(fare):\n", " if fare <= 32:\n", " return 0\n", " elif fare <= 100:\n", " return 1\n", " elif fare <= 200:\n", " return 2\n", " else:\n", " return 3\n", " \n", "train_df['Age'] = train_df['Age'].fillna(train_df['Age'].mean()).map(handle_age)\n", "train_df['Embarked'] = train_df['Embarked'].fillna('S')\n", "train_df['Fare'] = train_df['Fare'].map(handle_fare)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 891 entries, 0 to 890\n", "Data columns (total 8 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Survived 891 non-null int64 \n", " 1 Pclass 891 non-null int64 \n", " 2 Title 891 non-null object\n", " 3 Sex 891 non-null object\n", " 4 Age 891 non-null int64 \n", " 5 Fare 891 non-null int64 \n", " 6 Embarked 891 non-null object\n", " 7 FamilySize 891 non-null int64 \n", "dtypes: int64(5), object(3)\n", "memory usage: 55.8+ KB\n" ] } ], "source": [ "train_df.info()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassTitleSexAgeFareEmbarkedFamilySize
003Mrmale10S2
111Mrsfemale11C2
213Missfemale10S1
311Mrsfemale11S2
403Mrmale10S1
\n", "
" ], "text/plain": [ " Survived Pclass Title Sex Age Fare Embarked FamilySize\n", "0 0 3 Mr male 1 0 S 2\n", "1 1 1 Mrs female 1 1 C 2\n", "2 1 3 Miss female 1 0 S 1\n", "3 1 1 Mrs female 1 1 S 2\n", "4 0 3 Mr male 1 0 S 1" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.2 数字化数据" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 当前的数据集还还不能直接进行训练,因为数据集中部分列是由字符串表示的,无法参与到数值运算过程中,因此,我们需要将字符串处理成数字的形式。" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassTitleSexAgeFareEmbarkedFamilySize
003Mrmale10S2
111Mrsfemale11C2
213Missfemale10S1
311Mrsfemale11S2
403Mrmale10S1
\n", "
" ], "text/plain": [ " Survived Pclass Title Sex Age Fare Embarked FamilySize\n", "0 0 3 Mr male 1 0 S 2\n", "1 1 1 Mrs female 1 1 C 2\n", "2 1 3 Miss female 1 0 S 1\n", "3 1 1 Mrs female 1 1 S 2\n", "4 0 3 Mr male 1 0 S 1" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "在头衔对获救率影响的分析中,我们将头衔分类成了'Officer', 'Royalty', 'Mrs', 'Miss', 'Mr', 'Master',使用数字1-6分别表示上述类别。" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "title_map2num = {'Officer': 1, 'Royalty': 2, 'Mrs': 3, 'Miss': 4, 'Mr':5, 'Master': 6}\n", "train_df['Title'] = train_df['Title'].map(title_map2num)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassTitleSexAgeFareEmbarkedFamilySize
0035male10S2
1113female11C2
2134female10S1
3113female11S2
4035male10S1
\n", "
" ], "text/plain": [ " Survived Pclass Title Sex Age Fare Embarked FamilySize\n", "0 0 3 5 male 1 0 S 2\n", "1 1 1 3 female 1 1 C 2\n", "2 1 3 4 female 1 0 S 1\n", "3 1 1 3 female 1 1 S 2\n", "4 0 3 5 male 1 0 S 1" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "对于性别这列,将female映射为0, male映射为1。" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "sex_map2num = {'female': 0, 'male': 1}\n", "train_df['Sex'] = train_df['Sex'].map(sex_map2num)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassTitleSexAgeFareEmbarkedFamilySize
0035110S2
1113011C2
2134010S1
3113011S2
4035110S1
\n", "
" ], "text/plain": [ " Survived Pclass Title Sex Age Fare Embarked FamilySize\n", "0 0 3 5 1 1 0 S 2\n", "1 1 1 3 0 1 1 C 2\n", "2 1 3 4 0 1 0 S 1\n", "3 1 1 3 0 1 1 S 2\n", "4 0 3 5 1 1 0 S 1" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "将三个登船港口分别映射为0, 1, 2。" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "embarked_map2num = {'S': 0, 'C': 1, 'Q': 2}\n", "train_df['Embarked'] = train_df['Embarked'].map(embarked_map2num)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassTitleSexAgeFareEmbarkedFamilySize
003511002
111301112
213401001
311301102
403511001
\n", "
" ], "text/plain": [ " Survived Pclass Title Sex Age Fare Embarked FamilySize\n", "0 0 3 5 1 1 0 0 2\n", "1 1 1 3 0 1 1 1 2\n", "2 1 3 4 0 1 0 0 1\n", "3 1 1 3 0 1 1 0 2\n", "4 0 3 5 1 1 0 0 1" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.3 使用Pytorch搭建逻辑回归模型" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "import logging\n", "import pickle\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "from torch.utils.data import TensorDataset\n", "from torch.utils.data import DataLoader\n", "from torch.utils.data import random_split\n", "\n", "class Titanic_Model(nn.Module):\n", " def __init__(self, input_dim, num_classes):\n", " super().__init__()\n", " self.input_dim = input_dim\n", " self.num_classes = num_classes\n", "\n", " self.linear_layer = nn.Linear(input_dim, num_classes)\n", "\n", " def forward(self, inputs):\n", " outputs = self.linear_layer(inputs)\n", " return outputs\n", "\n", " @staticmethod\n", " def compute_accuracy(outputs, labels):\n", " _, preds = torch.max(outputs, dim=1)\n", " return torch.tensor(torch.sum(preds == labels).item() / len(preds))\n", "\n", " @staticmethod\n", " def log_epoch_loss_and_acc(prefix, epoch, epoch_loss, epoch_acc, interval=5):\n", " if epoch % interval == 0:\n", " logging.info(f'{prefix}_Epoch [{epoch}], loss: {epoch_loss:.4f},'\n", " f' acc: {epoch_acc:.4f}.')\n", "\n", " def evaluate(self, batch, loss_func, need_acc=False, no_grad=False):\n", " if no_grad:\n", " with torch.no_grad():\n", " inputs, labels = batch\n", " outputs = self(inputs)\n", " loss = loss_func(outputs, labels)\n", " else:\n", " inputs, labels = batch\n", " outputs = self(inputs)\n", " loss = loss_func(outputs, labels)\n", "\n", " if need_acc:\n", " acc = self.compute_accuracy(outputs, labels)\n", " return {'loss': loss, 'acc': acc}\n", " else:\n", " return {'loss': loss}\n", "\n", " def compute_epoch_loss_and_acc(self, dataloader, loss_func):\n", " results = [self.evaluate(batch, loss_func, need_acc=True, no_grad=True)\n", " for batch in dataloader]\n", " batch_losses = [r['loss'] for r in results]\n", " epoch_loss = torch.stack(batch_losses).mean()\n", " batch_accs = [r['acc'] for r in results]\n", " epoch_acc = torch.stack(batch_accs).mean()\n", " return {'epoch_loss': epoch_loss, 'epoch_acc': epoch_acc}\n", "\n", " def epoch_postprocess(self, prefix, data_loader, epoch,\n", " history, loss_func, log_interval):\n", " loss_and_acc = self.compute_epoch_loss_and_acc(data_loader, loss_func)\n", " epoch_loss = loss_and_acc['epoch_loss']\n", " epoch_acc = loss_and_acc['epoch_acc']\n", " history.append({'epoch_loss': epoch_loss,\n", " 'epoch_acc': epoch_acc})\n", " self.log_epoch_loss_and_acc(prefix, epoch,\n", " epoch_loss,\n", " epoch_acc,\n", " log_interval)\n", "\n", " def train(self, train_loader, val_loader, num_epochs, lr,\n", " loss_func=F.cross_entropy, opt_func=torch.optim.SGD,\n", " log_interval=5):\n", " optimizer = opt_func(self.parameters(), lr)\n", " self.history_train = [] # history of train set\n", " self.history_val = [] # history of validation set\n", "\n", " # initial loss and accuracy of training dataset\n", " self.epoch_postprocess('Train', train_loader, 0,\n", " self.history_train, loss_func, log_interval)\n", "\n", " # initial loss and accuracy of validation dataset\n", " self.epoch_postprocess('Val', val_loader, 0,\n", " self.history_val, loss_func, log_interval)\n", "\n", " # iteration\n", " for epoch in range(num_epochs):\n", " for batch in train_loader:\n", " loss = self.evaluate(batch, loss_func, need_acc=False)['loss']\n", " loss.backward()\n", " optimizer.step()\n", " optimizer.zero_grad()\n", "\n", " # training dataset loss and accuracy\n", " self.epoch_postprocess('Train', train_loader, epoch+1,\n", " self.history_train, loss_func, log_interval)\n", "\n", " # validation dataset loss and accuracy\n", " self.epoch_postprocess('Val', val_loader, epoch+1,\n", " self.history_val, loss_func, log_interval)\n", "\n", " def predict(self, inputs):\n", " outputs = self(inputs)\n", " _, preds = torch.max(outputs, dim=1)\n", " return [preds[i].item() for i in range(len(preds))]\n", "\n", " def save_model(self, save_file):\n", " torch.save(self.state_dict(), save_file)\n", " pickle.dump(self.history_train, open('titanic_history_train.pkl', 'wb'))\n", " pickle.dump(self.history_val, open('titanic_history_val.pkl', 'wb'))\n", "\n", "\n", " def recover_model(self, save_file):\n", " self.load_state_dict(torch.load(save_file))\n", " self.history_train = pickle.load(open('titanic_history_train.pkl', 'rb'))\n", " self.history_val = pickle.load(open('titanic_history_val.pkl', 'rb'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "在训练前,还需要将测试集划分为训练集和验证集,当前采用5:1的形式进行划分。" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "# convert pandas dataframe to numpy array\n", "train_data = train_df.to_numpy()\n", "# convert numpy array to tensor\n", "inputs = torch.from_numpy(train_data[:, 1:]).type(torch.float)\n", "labels = torch.from_numpy(train_data[:, 0]).type(torch.long)\n", "dataset = TensorDataset(inputs, labels)\n", "train_ds, val_ds = random_split(dataset, [742, 149])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "使用gpu加速计算,Pytorch中使用gpu计算十分简单,只需要将训练数据和模型参数转移到显存中即可(前提是配置好cuda驱动)。" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "def to_device(data, device):\n", " \"\"\"Move tensor(s) to chosen device\"\"\"\n", " if isinstance(data, (list,tuple)):\n", " return [to_device(x, device) for x in data]\n", " return data.to(device, non_blocking=True)\n", "\n", "class DeviceDataLoader():\n", " \"\"\"Wrap a dataloader to move data to a device (default: cpu)\"\"\"\n", " def __init__(self, dl, device):\n", " self.dl = dl\n", " self.device = device\n", "\n", " def __iter__(self):\n", " \"\"\"Yield a batch of data after moving it to device\"\"\"\n", " for b in self.dl:\n", " yield to_device(b, self.device)\n", "\n", " def __len__(self):\n", " \"\"\"Number of batches\"\"\"\n", " return len(self.dl)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "03/06/2022 10:43:48 PM INFO:Initializing linear regression model.\n", "03/06/2022 10:43:50 PM INFO:Start training...\n", "03/06/2022 10:43:51 PM INFO:Train_Epoch [0], loss: 0.7585, acc: 0.6144.\n", "03/06/2022 10:43:51 PM INFO:Val_Epoch [0], loss: 0.7717, acc: 0.5962.\n", "03/06/2022 10:43:51 PM INFO:Train_Epoch [10], loss: 0.5908, acc: 0.6755.\n", "03/06/2022 10:43:51 PM INFO:Val_Epoch [10], loss: 0.6045, acc: 0.6525.\n", "03/06/2022 10:43:52 PM INFO:Train_Epoch [20], loss: 0.5441, acc: 0.7176.\n", "03/06/2022 10:43:52 PM INFO:Val_Epoch [20], loss: 0.5625, acc: 0.7412.\n", "03/06/2022 10:43:52 PM INFO:Train_Epoch [30], loss: 0.5153, acc: 0.7699.\n", "03/06/2022 10:43:52 PM INFO:Val_Epoch [30], loss: 0.5365, acc: 0.7412.\n", "03/06/2022 10:43:53 PM INFO:Train_Epoch [40], loss: 0.5048, acc: 0.7699.\n", "03/06/2022 10:43:53 PM INFO:Val_Epoch [40], loss: 0.5287, acc: 0.7475.\n", "03/06/2022 10:43:53 PM INFO:Train_Epoch [50], loss: 0.4907, acc: 0.7996.\n", "03/06/2022 10:43:53 PM INFO:Val_Epoch [50], loss: 0.5201, acc: 0.7600.\n", "03/06/2022 10:43:54 PM INFO:Train_Epoch [60], loss: 0.4833, acc: 0.8001.\n", "03/06/2022 10:43:54 PM INFO:Val_Epoch [60], loss: 0.5168, acc: 0.7862.\n", "03/06/2022 10:43:54 PM INFO:Train_Epoch [70], loss: 0.4777, acc: 0.8036.\n", "03/06/2022 10:43:54 PM INFO:Val_Epoch [70], loss: 0.5135, acc: 0.7738.\n", "03/06/2022 10:43:55 PM INFO:Train_Epoch [80], loss: 0.4720, acc: 0.7983.\n", "03/06/2022 10:43:55 PM INFO:Val_Epoch [80], loss: 0.5098, acc: 0.7800.\n", "03/06/2022 10:43:55 PM INFO:Train_Epoch [90], loss: 0.4705, acc: 0.7948.\n", "03/06/2022 10:43:55 PM INFO:Val_Epoch [90], loss: 0.5083, acc: 0.7862.\n", "03/06/2022 10:43:56 PM INFO:Train_Epoch [100], loss: 0.4694, acc: 0.8001.\n", "03/06/2022 10:43:56 PM INFO:Val_Epoch [100], loss: 0.5098, acc: 0.7800.\n", "03/06/2022 10:43:56 PM INFO:Training finished.\n", "03/06/2022 10:43:56 PM INFO:Save model.\n" ] } ], "source": [ "logging.basicConfig(format='%(asctime)s %(levelname)s:%(message)s', \\\n", " level=logging.INFO, datefmt='%m/%d/%Y %I:%M:%S %p')\n", "x_dim = 7 # input dimension\n", "y_dim = 2 # label dimension\n", "train_sz = 742\n", "val_sz = 149\n", "batch_size = 16\n", "num_epochs = 100\n", "learning_rate = 0.005\n", "device = torch.device('cuda')\n", "\n", "train_loader = DataLoader(train_ds, batch_size, shuffle=True)\n", "val_loader = DataLoader(val_ds, batch_size)\n", "# move dataloader to gpu\n", "train_loader = DeviceDataLoader(train_loader, device)\n", "val_loader = DeviceDataLoader(val_loader, device)\n", "\n", "# initialize linear regression model\n", "logging.info(\"Initializing linear regression model.\")\n", "titanic_model = Titanic_Model(x_dim, y_dim)\n", "# move model parameters to gpu\n", "to_device(titanic_model, device)\n", "logging.info(\"Start training...\")\n", "titanic_model.train(train_loader, val_loader, num_epochs,\n", " learning_rate, log_interval=10, opt_func=torch.optim.SGD\n", ")\n", "logging.info(\"Training finished.\")\n", "\n", "logging.info(\"Save model.\")\n", "titanic_model.save_model('report02-titanic_model.pth')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "从运行结果中可以看到,训练得到的模型在测试集上的识别准确率为80.01%,在验证集上的识别准确率为78.00%。画出迭代过程中的损失函数值与准确率的变化趋势图:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "history_train = pickle.load(open('titanic_history_train.pkl', 'rb'))\n", "history_val = pickle.load(open('titanic_history_val.pkl', 'rb'))" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Loss vs. No. of epochs')" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "train_losses = [float(x['epoch_loss']) for x in history_train]\n", "val_losses = [float(x['epoch_loss']) for x in history_val]\n", "plt.plot(train_losses, '-x', val_losses, '-x')\n", "plt.xlabel('epoch')\n", "plt.ylabel('loss')\n", "plt.title('Loss vs. No. of epochs')" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "train_accs = [float(x['epoch_acc']) for x in history_train]\n", "val_accs = [float(x['epoch_acc']) for x in history_val]\n", "plt.plot(train_accs, '-x', val_accs, '-x')\n", "plt.xlabel('epoch')\n", "plt.ylabel('accuracy')\n", "plt.title('Accuracy vs. No. of epochs')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看到,模型在学习速率为0.005的情况下,训练到80步的时候,准确率在79%左右不再上升。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. 小结" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "    在这份报告中,我们使用Pytorch搭建逻辑回归模型进行了泰坦尼克号生存率预测。首先,我们分析并提炼了数据集的特征数据,在这个过程中,熟悉了pandas中的dataframe数据结构的基本操作,发现其在批量处理数据时十分方便,并将一些连续值的变量变成分段变量以提高数据的凝练度。此外,该任务中,由于样本中存在大量缺失值,所以还对如何处理缺失值进行了学习。" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" }, "main_language": "python" }, "nbformat": 4, "nbformat_minor": 2 }