{ "cells": [ { "cell_type": "code", "execution_count": 64, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# warningsを無視する\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 5.3 モデルの改良" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# カーネルの場合\n", "#df_train = pd.read_csv('../input/train.csv')\n", "#df_test = pd.read_csv('../input/test.csv')\n", "\n", "# 本レポジトリの場合\n", "df_train = pd.read_csv(\"./titanic_csv/train.csv\")\n", "df_test = pd.read_csv(\"./titanic_csv/test.csv\")" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "% matplotlib inline\n", "\n", "# 日本語表示用 ##カーネルでは日本語表示できない\n", "plt.rcParams[\"font.size\"] = 18\n", "plt.rcParams['font.family'] = 'IPAPGothic' \n", "\n", "# サイズの設定\n", "plt.rcParams['figure.figsize'] = (8.0, 6.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5.3.1 年齢の補完方法を変更する" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n5JMkSZKkS/kXKAoEmQZl1ecAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.boxplot(x='Pclass', y='Age', data=df_train)\n", "plt.xticks([0.0,1.0,2.0], ['1st','2nd','3rd'], fontsize = 20)\n", "plt.title('チケットクラスごとの年齢の箱ひげ図', fontsize = 20)\n", "plt.xlabel('Pclass(チケットクラス)', fontsize = 20)\n", "plt.ylabel('Age(年齢)', fontsize = 20)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Pclass\n", "1 38.233441\n", "2 29.877630\n", "3 25.140620\n", "Name: Age, dtype: float64" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# PclassごとにAgeの平均を算出\n", "df_train.groupby('Pclass').mean()['Age'] " ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Embarkedの補完\n", "df_train.loc[df_train['PassengerId'].isin([62, 830]), 'Embarked'] = 'C'\n", "\n", "# Fareの補完\n", "df_test.loc[df_test['PassengerId'] == 1044, 'Fare'] = 13.675550\n", "\n", "#Age変換のための関数\n", "def impute_age(cols):\n", " Age = cols[0]\n", " Pclass = cols[1]\n", " \n", " if pd.isnull(Age): \n", " if Pclass == 1:\n", " return 39\n", " elif Pclass == 2:\n", " return 30\n", " else:\n", " return 25 \n", " else:\n", " return Age\n", "\n", "\n", "data = [df_train, df_test]\n", "for df in data:\n", " # Ageの補完\n", " df['Age'] = df[['Age','Pclass']].apply(impute_age, axis = 1) \n", "\n", " # 性別の変換\n", " df['Sex'] = df['Sex'].map({\"male\": 0, \"female\": 1})\n", " \n", " # Embarked\n", " df['Embarked'] = df['Embarked'].map( {'S': 0, 'C': 1, 'Q': 2} ).astype(int)\n", " \n", " " ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train = pd.get_dummies(df_train, columns = ['Embarked'])\n", "df_test = pd.get_dummies(df_test, columns = ['Embarked'])" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train.drop(['Name', 'Cabin', 'Ticket'], axis=1, inplace=True)\n", "df_test.drop(['Name', 'Cabin', 'Ticket'], axis=1, inplace=True)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "collapsed": true }, "outputs": [], "source": [ "X_train = df_train.drop([\"PassengerId\", \"Survived\"], axis=1) # 不要な列を削除\n", "Y_train = df_train['Survived'] # Y_trainは、df_trainのSurvived列\n", "X_test = df_test.drop('PassengerId', axis=1).copy()" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestClassifier\n", "\n", "# 学習と予測を行う\n", "forest = RandomForestClassifier(random_state=1)\n", "forest.fit(X_train, Y_train)\n", "Y_prediction = forest.predict(X_test)\n", "submission = pd.DataFrame({\n", " 'PassengerId': df_test['PassengerId'],\n", " 'Survived': Y_prediction\n", " })\n", "submission.to_csv('submission.csv', index=False)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "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.5.2" }, "toc": { "colors": { "hover_highlight": "#DAA520", "running_highlight": "#FF0000", "selected_highlight": "#FFD700" }, "moveMenuLeft": true, "nav_menu": { "height": "318px", "width": "252px" }, "navigate_menu": true, "number_sections": false, "sideBar": true, "threshold": 4, "toc_cell": false, "toc_section_display": "block", "toc_window_display": true, "widenNotebook": false } }, "nbformat": 4, "nbformat_minor": 1 }