{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd\n", "from sklearn.ensemble import RandomForestClassifier\n", "\n", "# カーネルの場合\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\")\n", "\n", "# 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", " 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", " # Fareのカテゴリ変数化\n", " df.loc[ df['Fare'] <= 7.91, 'Fare'] = 0\n", " df.loc[(df['Fare'] > 7.91) & (df['Fare'] <= 14.454), 'Fare'] = 1\n", " df.loc[(df['Fare'] > 14.454) & (df['Fare'] <= 31), 'Fare'] = 2\n", " df.loc[ df['Fare'] > 31, 'Fare'] = 3\n", " df['Fare'] = df['Fare'].astype(int)\n", "\n", " # Ageのカテゴリ変数化\n", " df.loc[ df['Age'] <= 16, 'Age'] = 0\n", " df.loc[(df['Age'] > 16) & (df['Age'] <= 32), 'Age'] = 1\n", " df.loc[(df['Age'] > 32) & (df['Age'] <= 48), 'Age'] = 2\n", " df.loc[ df['Age'] > 48, 'Age'] = 3\n", " df['Age'] = df['Age'].astype(int)\n", " \n", " # FamilySizeとIsAloneの作成\n", " df['FamilySize'] = df['SibSp'] + df['Parch'] + 1\n", " df['IsAlone'] = 0\n", " df.loc[df['FamilySize'] == 1, 'IsAlone'] = 1 \n", " \n", "# 不要な列の削除 \n", "df_train.drop(['Name', 'Cabin', 'Ticket','SibSp','Parch'], axis=1, inplace=True)\n", "df_test.drop(['Name', 'Cabin', 'Ticket','SibSp','Parch'], axis=1, inplace=True) \n", "\n", "# X_train、Y_train、X_testを作成\n", "X_train = df_train.drop([\"PassengerId\",\"Survived\"], axis=1)\n", "Y_train = df_train[\"Survived\"]\n", "X_test = df_test.drop(\"PassengerId\", axis=1).copy()\n", "\n", "# 学習\n", "forest = RandomForestClassifier(random_state=1)\n", "forest.fit(X_train, Y_train)\n", "Y_pred = forest.predict(X_test)\n", "\n", "# 提出データの作成\n", "submission = pd.DataFrame({\n", " \"PassengerId\": df_test[\"PassengerId\"],\n", " \"Survived\": Y_pred})\n", "submission.to_csv('submit.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 }