Skip to content

Instantly share code, notes, and snippets.

@okwrtdsh
Created April 20, 2019 18:55
Show Gist options
  • Save okwrtdsh/1c50ca860cd93c5c8494f3bd6145bd3f to your computer and use it in GitHub Desktop.
Save okwrtdsh/1c50ca860cd93c5c8494f3bd6145bd3f 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": [],
"source": [
"# これまでの処理をまとめた\n",
"%matplotlib inline\n",
"import numpy as np\n",
"import pandas as pd\n",
"from matplotlib import pyplot as plt\n",
"import seaborn as sns\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"\n",
"def load_data():\n",
" df_train = pd.read_csv(\"./titanic/train.csv\")\n",
" df_test = pd.read_csv(\"./titanic/test.csv\")\n",
" return df_train, df_test\n",
"\n",
"\n",
"def train(df_train, features, target='Survived', test_size=0.3, max_depth=5, n_estimators=10):\n",
" train, val = train_test_split(df_train[[target] + features], test_size=test_size)\n",
" X_train = train[features].fillna(0).values # 取り敢えず欠損値を0で埋める\n",
" y_train = train[target].values\n",
" X_val = val[features].fillna(0).values\n",
" y_val = val[target].values\n",
" clf = RandomForestClassifier(\n",
" n_estimators=n_estimators, # 木(決定木)の数\n",
" max_depth=max_depth, # 深さ\n",
" n_jobs=4, # 並列プロセス数\n",
" random_state=123, # 乱数を固定(再現性)\n",
" )\n",
" clf.fit(X_train, y_train)\n",
" print(\"val score: \", clf.score(X_val, y_val))\n",
" # 特徴量の重要度\n",
" sns.barplot(x=clf.feature_importances_, y=features)\n",
" plt.show()\n",
" return clf\n",
"\n",
"\n",
"def gen_submit_data(clf, df_test, features, output_filename='pred.csv'):\n",
" \"\"\"提出用データの生成\"\"\"\n",
" pred = clf.predict(df_test[features].fillna(0))\n",
" result = pd.DataFrame({'PassengerId': df_test['PassengerId'], 'Survived': pred})\n",
" result.to_csv(output_filename, index=False)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"val score: 0.7164179104477612\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# データの初期化\n",
"df_train, df_test = load_data()\n",
"# 特徴量を設定\n",
"features = ['Pclass', 'Age', 'Fare']\n",
"# パラメータを設定して学習\n",
"clf = train(df_train, features, test_size=0.3, max_depth=5, n_estimators=10)\n",
"# 良さそうな特徴量やパラメータの組み合わせを探そう"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# 良さそうなスコアがでたら提出してみよう\n",
"gen_submit_data(clf, df_test, features, output_filename='pred.csv')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 特徴量作成\n",
"* 数値化\n",
"* 欠損値の補完\n",
"* 1つ以上の系列から新たな特徴量"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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ERGRo4aDi/qKiIiIhK1wq8Hac9rr3vs6YxoUAgOttUWA1pIREREREREREfmO2jNCZqkx5g3gpYbtqcASY0w8UBKwzERERBwSbkdnREREREJBuNVg7emQuRqYApzesL0M6GqtrQTOClRiIiIiIiIiIiJHq/ac9toaYzbjXzPmh8BW4OVAJyYiIuIUJ097LSIiIhKuwq0GO2CHjDFmIHAZ8GNgL/ACYKy1GhUjIiJHtXA75aKIiIhIKAi3GuxgrV0PLAUusNZuAjDGXB+UrEREREREREREjmIH65CZin+EzAfGmLeB5wETlKxEREQcFG4LyomIiIiEgnCrwQ542mtr7avW2h8Bg4EPgeuBDGPMQ8aYHwQpPxERERERERGRo057FvWtBOYCc40xnYBLgZuBRQHOTURExBHhdnRGREREJBSEWw32nVbMsdYWAY80XERERI5K4VYMiIiIiISCcKvBDjhlSUREREREREREAiO8ziklIiLSDp4wOzojIiIiEgrCrQbTCBkRERERERERkSDTCBkREZEWvPp6FBEREQm6cKvBwqu1IiIi7RBuC8qJiIiIhIJwq8E0ZUlEREREREREJMg0QkZERKSFcDs6IyIiIhIKwq0G0wgZEREREREREZEg0wgZERGRFsLtlIsiIiIioSDcajCNkBERERERERERCbKAj5DZwKBAv0RISKHE6RSCYs6YaU6nEBRXbKt3OoWgmNkr0ukUgmLGYqczCI4Pxp3idApHjXA75aKIiIhIKAi3Giy8WisiItIO4bagnMjB7FqSz4rZK7E+S99L+3DM9MHN7vfWefn8pi8o/rqYqJQoTr1vNPE94gFY98h6tv5vK8ZlOO7PI+l6RibeWi/vT/sQb50P67VkTejOsGuHAlDwaQEr/74GfJaIuAhOuvtEEnslBL3NB9PR7wfAsluWs/PDXUSnRXPeGz9ofK68t7az9l/rKNtcxviXxtFpeKfgNfQ7stayY/a7lGVvxhUTQc+7LyBuaGaruKq1u8i95Q18NR6Sxvaj+63jMcZQvb6AvBlv46uqI6p7Mr3umYw7IZryj7ey894PsPVeTKSbbjeOI/GU3sFvYABdOGcOAydNorKwkIeGD3c6nYBb+kkcd9+bjtcHUyeXctXlxc3uf+HlZP77UgoulyUuzjLzTwX071tHSYmL627uxtp1MVw0qYw/31To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\n",
"text/plain": [
"<Figure size 1440x576 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 各列間の相関をプロット\n",
"# df.corr(): データフレームの型が数値の系列同士で相関係数を計算\n",
"def show_corr(df_train, df_test=None):\n",
" plt.figure(figsize=(20, 8))\n",
" if df_test is not None:\n",
" plt.subplot(1,2,1) # 1行2列の1つ目に表示\n",
" plt.title(\"train\")\n",
" sns.heatmap(df_train.corr(), vmin=-1, vmax=1, cmap='jet', center=0, annot=True, square=True)\n",
" \n",
" if df_test is not None:\n",
" plt.subplot(1,2,2) # 1行2列の2つ目に表示\n",
" plt.title(\"test\")\n",
" sns.heatmap(df_test.corr(), vmin=-1, vmax=1, cmap='jet', center=0, annot=True, square=True)\n",
" # 表示\n",
" plt.show()\n",
"\n",
"show_corr(df_train, df_test)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PassengerId 0\n",
"Survived 0\n",
"Pclass 0\n",
"Name 0\n",
"Sex 0\n",
"Age 177\n",
"SibSp 0\n",
"Parch 0\n",
"Ticket 0\n",
"Fare 0\n",
"Cabin 687\n",
"Embarked 2\n",
"dtype: int64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 欠損値の確認\n",
"df_train.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PassengerId 0\n",
"Pclass 0\n",
"Name 0\n",
"Sex 0\n",
"Age 86\n",
"SibSp 0\n",
"Parch 0\n",
"Ticket 0\n",
"Fare 1\n",
"Cabin 327\n",
"Embarked 0\n",
"dtype: int64"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_test.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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>Embarked</th>\n",
" <th>Survived</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C</td>\n",
" <td>0.553571</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Q</td>\n",
" <td>0.389610</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>S</td>\n",
" <td>0.336957</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Embarked Survived\n",
"0 C 0.553571\n",
"1 Q 0.389610\n",
"2 S 0.336957"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# まずEmbarkedの欠損値を埋めてみよう\n",
"# Embarkedの種類ごとで生存率を計算\n",
"df_train[['Embarked','Survived']].groupby(\n",
" ['Embarked'], as_index=False\n",
").mean().sort_values('Survived', ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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>Embarked</th>\n",
" <th>C</th>\n",
" <th>Q</th>\n",
" <th>S</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Pclass</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>85</td>\n",
" <td>2</td>\n",
" <td>127</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>17</td>\n",
" <td>3</td>\n",
" <td>164</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>66</td>\n",
" <td>72</td>\n",
" <td>353</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Embarked C Q S\n",
"Pclass \n",
"1 85 2 127\n",
"2 17 3 164\n",
"3 66 72 353"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# PclassごとのEmbarkedを表示\n",
"pd.crosstab(df_train['Pclass'], df_train['Embarked'])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# 関係なさそうなので最も多い\"S\"にしてみる, fillna('S')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"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>Pclass</th>\n",
" <th>Fare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>84.154687</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>20.662183</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>13.675550</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Pclass Fare\n",
"0 1 84.154687\n",
"1 2 20.662183\n",
"2 3 13.675550"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Fareの欠損値を埋めてみよう\n",
"# Fareと相関の高いPclass毎に平均値を計算\n",
"df_train[['Pclass','Fare']].groupby(['Pclass'], as_index=False).mean()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"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>152</th>\n",
" <td>1044</td>\n",
" <td>3</td>\n",
" <td>Storey, Mr. Thomas</td>\n",
" <td>male</td>\n",
" <td>60.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3701</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Pclass Name Sex Age SibSp Parch Ticket \\\n",
"152 1044 3 Storey, Mr. Thomas male 60.5 0 0 3701 \n",
"\n",
" Fare Cabin Embarked \n",
"152 NaN NaN S "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_test[df_test['Fare'].isnull()]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# Pclass: 3なので、fillna(13.675550)で良さそう"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# Ageの欠損値の補完"
]
},
{
"cell_type": "code",
"execution_count": 14,
"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>Sex</th>\n",
" <th>female</th>\n",
" <th>male</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Title</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Capt</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Col</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Countess</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Don</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dr</th>\n",
" <td>1</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jonkheer</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lady</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Major</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Master</th>\n",
" <td>0</td>\n",
" <td>40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Miss</th>\n",
" <td>182</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mlle</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mme</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mr</th>\n",
" <td>0</td>\n",
" <td>517</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mrs</th>\n",
" <td>125</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ms</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rev</th>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sir</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Sex female male\n",
"Title \n",
"Capt 0 1\n",
"Col 0 2\n",
"Countess 1 0\n",
"Don 0 1\n",
"Dr 1 6\n",
"Jonkheer 0 1\n",
"Lady 1 0\n",
"Major 0 2\n",
"Master 0 40\n",
"Miss 182 0\n",
"Mlle 2 0\n",
"Mme 1 0\n",
"Mr 0 517\n",
"Mrs 125 0\n",
"Ms 1 0\n",
"Rev 0 6\n",
"Sir 0 1"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 敬称を抽出してみる\n",
"import re\n",
"df_train['Title'] = df_train['Name'].apply(lambda x: re.search(' ([A-Z][a-z]+)\\.', x).group(1))\n",
"pd.crosstab(df_train['Title'], df_train['Sex'])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"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>Sex</th>\n",
" <th>female</th>\n",
" <th>male</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Title</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Col</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dona</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dr</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Master</th>\n",
" <td>0</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Miss</th>\n",
" <td>78</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mr</th>\n",
" <td>0</td>\n",
" <td>240</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mrs</th>\n",
" <td>72</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ms</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rev</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Sex female male\n",
"Title \n",
"Col 0 2\n",
"Dona 1 0\n",
"Dr 0 1\n",
"Master 0 21\n",
"Miss 78 0\n",
"Mr 0 240\n",
"Mrs 72 0\n",
"Ms 1 0\n",
"Rev 0 2"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_test['Title'] = df_test['Name'].apply(lambda x: re.search(' ([A-Z][a-z]+)\\.', x).group(1))\n",
"pd.crosstab(df_test['Title'], df_test['Sex'])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"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",
" </tr>\n",
" <tr>\n",
" <th>Title</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Mr</th>\n",
" <td>757</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Miss</th>\n",
" <td>260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mrs</th>\n",
" <td>197</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Master</th>\n",
" <td>61</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rev</th>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dr</th>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Col</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mlle</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ms</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Major</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mme</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Capt</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lady</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jonkheer</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dona</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Don</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Countess</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sir</th>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId\n",
"Title \n",
"Mr 757\n",
"Miss 260\n",
"Mrs 197\n",
"Master 61\n",
"Rev 8\n",
"Dr 8\n",
"Col 4\n",
"Mlle 2\n",
"Ms 2\n",
"Major 2\n",
"Mme 1\n",
"Capt 1\n",
"Lady 1\n",
"Jonkheer 1\n",
"Dona 1\n",
"Don 1\n",
"Countess 1\n",
"Sir 1"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 敬称毎の人数\n",
"pd.concat([df_train, df_test], ignore_index=True, sort=False)[['Title','PassengerId']].groupby(\n",
" ['Title']\n",
").count().sort_values('PassengerId', ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"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>Title</th>\n",
" <th>Survived</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Sir</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Countess</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Ms</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Mme</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Lady</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Mlle</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Mrs</td>\n",
" <td>0.792000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Miss</td>\n",
" <td>0.697802</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Master</td>\n",
" <td>0.575000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Col</td>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Major</td>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Dr</td>\n",
" <td>0.428571</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Mr</td>\n",
" <td>0.156673</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Jonkheer</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Don</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Rev</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Capt</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Title Survived\n",
"16 Sir 1.000000\n",
"2 Countess 1.000000\n",
"14 Ms 1.000000\n",
"11 Mme 1.000000\n",
"6 Lady 1.000000\n",
"10 Mlle 1.000000\n",
"13 Mrs 0.792000\n",
"9 Miss 0.697802\n",
"8 Master 0.575000\n",
"1 Col 0.500000\n",
"7 Major 0.500000\n",
"4 Dr 0.428571\n",
"12 Mr 0.156673\n",
"5 Jonkheer 0.000000\n",
"3 Don 0.000000\n",
"15 Rev 0.000000\n",
"0 Capt 0.000000"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 敬称毎の生存率\n",
"df_train[['Title','Survived']].groupby(\n",
" ['Title'], as_index=False\n",
").mean().sort_values('Survived', ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"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>Title</th>\n",
" <th>Age</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Capt</td>\n",
" <td>70.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Col</td>\n",
" <td>54.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Sir</td>\n",
" <td>49.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Major</td>\n",
" <td>48.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Lady</td>\n",
" <td>48.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Dr</td>\n",
" <td>43.571429</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Rev</td>\n",
" <td>41.250000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Don</td>\n",
" <td>40.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Dona</td>\n",
" <td>39.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Jonkheer</td>\n",
" <td>38.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Mrs</td>\n",
" <td>36.994118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Countess</td>\n",
" <td>33.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Mr</td>\n",
" <td>32.252151</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Ms</td>\n",
" <td>28.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Mlle</td>\n",
" <td>24.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Mme</td>\n",
" <td>24.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Miss</td>\n",
" <td>21.774238</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Master</td>\n",
" <td>5.482642</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Title Age\n",
"0 Capt 70.000000\n",
"1 Col 54.000000\n",
"17 Sir 49.000000\n",
"8 Major 48.500000\n",
"7 Lady 48.000000\n",
"5 Dr 43.571429\n",
"16 Rev 41.250000\n",
"3 Don 40.000000\n",
"4 Dona 39.000000\n",
"6 Jonkheer 38.000000\n",
"14 Mrs 36.994118\n",
"2 Countess 33.000000\n",
"13 Mr 32.252151\n",
"15 Ms 28.000000\n",
"11 Mlle 24.000000\n",
"12 Mme 24.000000\n",
"10 Miss 21.774238\n",
"9 Master 5.482642"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 敬称毎の平均年齢\n",
"pd.concat([df_train, df_test], ignore_index=True, sort=False)[['Title','Age']].groupby(\n",
" ['Title'], as_index=False\n",
").mean().sort_values('Age', ascending=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ググる\n",
"#### 女性\n",
"* Mrs: 既婚女性\n",
"* Miss: 未婚女性\n",
"* Ms: 既婚女性または未婚女性 -> Missに統合\n",
"* Mme: 既婚女性(フランス語) -> Mrsに統合\n",
"* Mlle: 未婚女性(フランス語) -> Missに統合\n",
"\n",
"#### 男性\n",
"* Mr: 男性\n",
"* Master: ミスターと呼ぶには若すぎる少年\n",
"\n",
"#### その他(数が少ないのですべて統合)\n",
"##### 男性?\n",
"* Sir: 男性(英語圏)\n",
"* Col: 大佐\n",
"* Major: 少佐\n",
"* Dr: 医者や博士号の資格を持っている人(データではほぼ男性)\n",
"* Jonkheer: オランダとベルギーで用いられる貴族の敬称で、爵位を保有しない貴族に用いられる敬称\n",
"* Don: スペイン語圏とポルトガル語圏で使われる貴人・高位聖職者に対する尊称(男性)\n",
"* Rev: 聖職者の名前の前に付ける敬称\n",
"* Capt: 船長\n",
"\n",
"##### 女性\n",
"* Countess: 女性(伯爵夫人, 女伯爵)\n",
"* Lady: 女性(イギリスで貴族夫人)\n",
"* Dona: スペイン語圏とポルトガル語圏で使われる貴人・高位聖職者に対する尊称(女性)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"df_train['Title'] = df_train['Title'].replace('Ms', 'Miss')\n",
"df_train['Title'] = df_train['Title'].replace('Mlle', 'Miss')\n",
"df_train['Title'] = df_train['Title'].replace('Mme', 'Mrs')\n",
"df_train['Title'] = df_train['Title'].replace([\n",
" 'Lady', 'Countess','Capt', 'Col', 'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'\n",
"], 'Other')\n",
"\n",
"df_test['Title'] = df_test['Title'].replace('Ms', 'Miss')\n",
"df_test['Title'] = df_test['Title'].replace('Mlle', 'Miss')\n",
"df_test['Title'] = df_test['Title'].replace('Mme', 'Mrs')\n",
"df_test['Title'] = df_test['Title'].replace([\n",
" 'Lady', 'Countess','Capt', 'Col', 'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'\n",
"], 'Other')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"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>Title</th>\n",
" <th>Age</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Other</td>\n",
" <td>45.178571</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Mrs</td>\n",
" <td>36.918129</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Mr</td>\n",
" <td>32.252151</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Miss</td>\n",
" <td>21.824366</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Master</td>\n",
" <td>5.482642</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Title Age\n",
"4 Other 45.178571\n",
"3 Mrs 36.918129\n",
"2 Mr 32.252151\n",
"1 Miss 21.824366\n",
"0 Master 5.482642"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.concat([df_train, df_test], ignore_index=True, sort=False)[['Title','Age']].groupby(\n",
" ['Title'], as_index=False\n",
").mean().sort_values('Age', ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"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>Family</th>\n",
" <th>Survived</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>0.303538</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0.552795</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>0.578431</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>0.724138</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>0.200000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>0.136364</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>6</td>\n",
" <td>0.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>7</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>10</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Family Survived\n",
"0 0 0.303538\n",
"1 1 0.552795\n",
"2 2 0.578431\n",
"3 3 0.724138\n",
"4 4 0.200000\n",
"5 5 0.136364\n",
"6 6 0.333333\n",
"7 7 0.000000\n",
"8 10 0.000000"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 関係があるものから別の特徴量を作成\n",
"df_train['Family'] = df_train['SibSp'] + df_train['Parch']\n",
"df_train[['Family', 'Survived']].groupby(['Family'], as_index=False).mean()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment