{"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":"# Imports","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)\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.preprocessing import StandardScaler, OneHotEncoder\nfrom sklearn.pipeline import make_pipeline\nfrom sklearn.compose import make_column_transformer\nfrom tensorflow import keras\nfrom tensorflow.keras import layers\nfrom tensorflow.keras import callbacks","metadata":{"execution":{"iopub.status.busy":"2022-08-02T10:28:18.984250Z","iopub.execute_input":"2022-08-02T10:28:18.984735Z","iopub.status.idle":"2022-08-02T10:28:27.383945Z","shell.execute_reply.started":"2022-08-02T10:28:18.984638Z","shell.execute_reply":"2022-08-02T10:28:27.382636Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Getting Data\n\n","metadata":{}},{"cell_type":"code","source":"X = pd.read_csv('../input/titanic/train.csv', index_col='PassengerId')\nX_test = pd.read_csv('../input/titanic/test.csv', index_col='PassengerId')\ntest_data = pd.read_csv('../input/titanic/test.csv')\n\ny = X.Survived\nX.drop(['Survived'], axis=1, inplace=True)\nfrom sklearn.preprocessing import OrdinalEncoder\n# Categorical columns in the training data\nobject_cols = [col for col in X.columns if X[col].dtype == \"object\"]\n# Numerical columns in the training data\nnumerical_cols = [cname for cname in X.columns if \n                X[cname].dtype in ['int64', 'float64']]       \n\n\ngood_label_cols = ['Embarked', 'Sex']\nbad_label_cols = ['Ticket', 'Cabin', 'Name']\n#X = X.drop(bad_label_cols, axis=1)\nX_test = X_test.drop(bad_label_cols, axis=1)\ntransformer_num = make_pipeline(\n    SimpleImputer(strategy=\"constant\"), \n    StandardScaler(),\n)\ntransformer_cat = make_pipeline(\n    SimpleImputer(strategy=\"constant\", fill_value=\"NA\"),\n    OneHotEncoder(handle_unknown='ignore'),\n)\npreprocessor = make_column_transformer(\n    (transformer_num, numerical_cols),\n    (transformer_cat, good_label_cols),\n)\n\nX_train, X_valid, y_train, y_valid = \\\n    train_test_split(X, y, stratify=y, train_size=0.75)\nX_train = preprocessor.fit_transform(X_train)\nX_valid = preprocessor.transform(X_valid)\nX_test = preprocessor.transform(X_test)\ninput_shape = [X_train.shape[1]]","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-08-02T10:28:27.386408Z","iopub.execute_input":"2022-08-02T10:28:27.387081Z","iopub.status.idle":"2022-08-02T10:28:27.472138Z","shell.execute_reply.started":"2022-08-02T10:28:27.387033Z","shell.execute_reply":"2022-08-02T10:28:27.471165Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Set and fit model ","metadata":{}},{"cell_type":"code","source":"model = keras.Sequential([\n    layers.BatchNormalization(input_shape=input_shape),\n    layers.Dense(64, activation='relu'),\n    layers.BatchNormalization(),\n    layers.Dropout(0.3),\n    layers.Dense(512, activation='relu'),\n    layers.BatchNormalization(),\n    layers.Dropout(0.3),\n    layers.Dense(2048, activation='relu'),\n    layers.BatchNormalization(),\n    layers.Dropout(0.3),\n    layers.Dense(1024, activation='relu'),\n    layers.BatchNormalization(),\n    layers.Dropout(0.3),\n    layers.Dense(256, activation='relu'),\n    layers.BatchNormalization(),\n    layers.Dropout(0.3),\n    layers.Dense(1, activation='sigmoid'),\n])\nmodel.compile(\n              optimizer='Nadam',\n              loss='binary_crossentropy',\n              metrics=['binary_accuracy'],\n)\nearly_stopping = keras.callbacks.EarlyStopping(\n    patience=5,\n    min_delta=0.0001,\n    restore_best_weights=True\n)\nhistory = model.fit(\n    X_train, y_train,\n    validation_data=(X_valid, y_valid),\n    batch_size=64,\n    epochs=200,\n    callbacks=[early_stopping]\n)\n","metadata":{"execution":{"iopub.status.busy":"2022-08-02T10:28:27.473430Z","iopub.execute_input":"2022-08-02T10:28:27.474489Z","iopub.status.idle":"2022-08-02T10:28:45.987604Z","shell.execute_reply.started":"2022-08-02T10:28:27.474445Z","shell.execute_reply":"2022-08-02T10:28:45.986648Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Accuracy","metadata":{}},{"cell_type":"code","source":"history_df = pd.DataFrame(history.history)\nhistory_df.loc[:, ['loss', 'val_loss']].plot(title=\"Cross-entropy\")\nhistory_df.loc[:, ['binary_accuracy', 'val_binary_accuracy']].plot(title=\"Accuracy\")","metadata":{"execution":{"iopub.status.busy":"2022-08-02T10:28:45.990269Z","iopub.execute_input":"2022-08-02T10:28:45.991040Z","iopub.status.idle":"2022-08-02T10:28:46.523213Z","shell.execute_reply.started":"2022-08-02T10:28:45.990975Z","shell.execute_reply":"2022-08-02T10:28:46.521995Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Get predictions","metadata":{}},{"cell_type":"code","source":"tp = []\ntest_predictions= model.predict(X_test)\nfor row in test_predictions:\n    for elem in row:\n        tp.append(round(elem))\ntest_preds = np.array(tp)\n# Run the code to save predictions in the format used for competition scoring\noutput = pd.DataFrame({'PassengerId': test_data.PassengerId,\n                       'Survived': test_preds})\noutput.to_csv('submission.csv', index=False)\nprint(output.head())","metadata":{"execution":{"iopub.status.busy":"2022-08-02T10:29:01.748324Z","iopub.execute_input":"2022-08-02T10:29:01.749698Z","iopub.status.idle":"2022-08-02T10:29:01.926763Z","shell.execute_reply.started":"2022-08-02T10:29:01.749653Z","shell.execute_reply":"2022-08-02T10:29:01.925760Z"},"trusted":true},"execution_count":null,"outputs":[]}]}