{"cells":[{"metadata":{"_uuid":"c06291503c3b2007610d27ea1f00ef1f44b6a216","trusted":true},"cell_type":"code","source":"# warningsを無視する\nimport warnings\nwarnings.filterwarnings('ignore')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"4eb45114181e3277a16117d0246c6322514c04d1"},"cell_type":"markdown","source":"# 5.3 モデルの改良"},{"metadata":{"_uuid":"dce556b5b581847f0689f92f18b768640c1cade6","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"960d49101b9b2d2131e5a2ad5f5ae869303959de","trusted":true},"cell_type":"code","source":"df_train = pd.read_csv('../input/train.csv')\ndf_test = pd.read_csv('../input/test.csv')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"b108a367b10b58ffcb3de5a04aeddcfab7b8c00d","trusted":true},"cell_type":"code","source":"import matplotlib as mpl\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport japanize_matplotlib\n\n# 文字のサイズ\nplt.rcParams[\"font.size\"] = 18\n# サイズの設定\nplt.rcParams['figure.figsize'] = (8.0, 6.0)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"95e38929f6e889997b6f4ef6f7495f2436913b8c"},"cell_type":"markdown","source":"## 5.3.1 年齢の補完方法を変更する"},{"metadata":{"_uuid":"b4617f437721ea45d94624852d12578d2b187e39","trusted":true},"cell_type":"code","source":"sns.boxplot(x='Pclass', y='Age', data=df_train)\nplt.xticks([0.0,1.0,2.0], ['1st','2nd','3rd'])\nplt.title('チケットクラスごとの年齢の箱ひげ図')\nplt.xlabel('Pclass(チケットクラス)')\nplt.ylabel('Age(年齢)')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"65ea4c0a0592745c5bef7d47d4840b9b89438582","trusted":true},"cell_type":"code","source":"# PclassごとにAgeの平均を算出\ndf_train.groupby('Pclass').mean()['Age'] ","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"aebd4754637bc2f3190c03c96483667e61dd7fcd","trusted":true},"cell_type":"code","source":"# Ageがnullの場合に、Pclassに応じてAgeに代入する関数\ndef 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# Embarkedの補完\ndf_train.loc[df_train['PassengerId'].isin([62, 830]), 'Embarked'] = 'C'\n\n# Fareの補完\ndf_test.loc[df_test['PassengerId'] == 1044, 'Fare'] = 13.675550\n\ndata = [df_train, df_test]\nfor 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    ","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"2b044af42baea0d4bde31f96dbe5fb123906d13f","trusted":true},"cell_type":"code","source":"df_train.drop(['Name', 'Cabin', 'Ticket'], axis=1, inplace=True)\ndf_test.drop(['Name', 'Cabin', 'Ticket'], axis=1, inplace=True)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"84f386d9085e9807029919f71a6d74f51463fb0c","trusted":true},"cell_type":"code","source":"X_train = df_train.drop([\"PassengerId\", \"Survived\"], axis=1) # 不要な列を削除\nY_train = df_train['Survived'] # Y_trainは、df_trainのSurvived列\nX_test  = df_test.drop('PassengerId', axis=1).copy()","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"f201ce180fab5067bd27f76d31a6b171a63c78a1","trusted":true},"cell_type":"code","source":"from sklearn.ensemble import RandomForestClassifier","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"00fce593b12f79ac0e5b6945e609b3da6984f772","trusted":true},"cell_type":"code","source":"# 学習と予測を行う\nforest = RandomForestClassifier(n_estimators=10, random_state=1)\nforest.fit(X_train, Y_train)\nY_prediction = forest.predict(X_test)\nsubmission = pd.DataFrame({\n        'PassengerId': df_test['PassengerId'],\n        'Survived': Y_prediction\n    })\nsubmission.to_csv('submission.csv', index=False)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1bbcfcb2557f6754a9362ab19d9e69494f9bcf02"},"cell_type":"code","source":"forest.feature_importances_","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"aecf296678b65b576fc21bef90902158f7024769"},"cell_type":"code","source":"for i,k in zip(X_train.columns,forest.feature_importances_):\n    print(i,round(k,4))","execution_count":null,"outputs":[]}],"metadata":{"toc":{"toc_cell":false,"nav_menu":{"width":"252px","height":"318px"},"toc_window_display":true,"toc_section_display":"block","widenNotebook":false,"colors":{"hover_highlight":"#DAA520","selected_highlight":"#FFD700","running_highlight":"#FF0000"},"moveMenuLeft":true,"sideBar":true,"number_sections":false,"threshold":4,"navigate_menu":true},"anaconda-cloud":{},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":1}