{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Idea\n\nAdditionaly to the four features of utmost importance - **['Pclass', 'Sex', 'Age', 'Fare']**, I am going to enginner a feature that is going to tell whether the person had a sibling on the ship as I believe it is a feature that is going to bring a **high information gain**.","metadata":{}},{"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom sklearn.preprocessing import StandardScaler\nfrom xgboost import XGBClassifier\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = pd.read_csv(\"/kaggle/input/titanic/train.csv\")\ntest_df = pd.read_csv(\"/kaggle/input/titanic/test.csv\")\ndf_train = train_df.iloc[:712, :] # 80% of training data set\ndf_cv = train_df.iloc[712:, :] # 20% of training data set\ncombine = [df_train, df_cv, test_df]","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"age_mean = df_train['Age'].mean()\nfeatures = ['Pclass', 'Sex', 'Age', 'Fare', 'IsAlone']\nscaler = StandardScaler()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for dataset in combine:\n    dataset['Age'] = dataset['Age'].fillna(age_mean)\n    dataset['Sex'] = dataset['Sex'].map({'female': 0, 'male': 1})","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for dataset in combine:\n    dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch']","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for dataset in combine:\n    dataset['IsAlone'] = 0\n    dataset.loc[dataset['FamilySize'] == 1, 'IsAlone'] = 1","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = scaler.fit_transform(df_train[features].values)\ny_train = df_train['Survived'].values\n\nX_cv = scaler.fit_transform(df_cv[features].values)\ny_cv = df_cv['Survived'].values\n\nX_test = scaler.fit_transform(test_df[features].values)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T14:59:57.993688Z","iopub.execute_input":"2022-08-10T14:59:57.994402Z","iopub.status.idle":"2022-08-10T14:59:58.008057Z","shell.execute_reply.started":"2022-08-10T14:59:57.994363Z","shell.execute_reply":"2022-08-10T14:59:58.006806Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = XGBClassifier(max_depth=3)\nmodel.fit(X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T15:04:52.665442Z","iopub.execute_input":"2022-08-10T15:04:52.665868Z","iopub.status.idle":"2022-08-10T15:04:53.051271Z","shell.execute_reply.started":"2022-08-10T15:04:52.665835Z","shell.execute_reply":"2022-08-10T15:04:53.050239Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"1 - model.score(X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T15:04:55.483438Z","iopub.execute_input":"2022-08-10T15:04:55.483834Z","iopub.status.idle":"2022-08-10T15:04:55.497238Z","shell.execute_reply.started":"2022-08-10T15:04:55.483804Z","shell.execute_reply":"2022-08-10T15:04:55.496216Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"1 - model.score(X_cv, y_cv)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T15:06:08.356625Z","iopub.execute_input":"2022-08-10T15:06:08.357089Z","iopub.status.idle":"2022-08-10T15:06:08.370832Z","shell.execute_reply.started":"2022-08-10T15:06:08.357035Z","shell.execute_reply":"2022-08-10T15:06:08.369663Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_predictions = model.predict(X_test)\noutput = pd.DataFrame({'PassengerId': test_df.PassengerId, 'Survived': test_predictions})\noutput.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T15:01:04.706076Z","iopub.execute_input":"2022-08-10T15:01:04.706484Z","iopub.status.idle":"2022-08-10T15:01:04.723408Z","shell.execute_reply.started":"2022-08-10T15:01:04.706454Z","shell.execute_reply":"2022-08-10T15:01:04.721396Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Conclusion:\n\nAccording to the data:\n* **J train** = 0.08\n* **J cv** = 0.10\n\nThe model tends to underfit more than overfit.","metadata":{}}]}