{"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":"code","source":"import numpy as np\nimport pandas as pd\n\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-05T08:42:45.971211Z","iopub.execute_input":"2022-07-05T08:42:45.972458Z","iopub.status.idle":"2022-07-05T08:42:46.008635Z","shell.execute_reply.started":"2022-07-05T08:42:45.972302Z","shell.execute_reply":"2022-07-05T08:42:46.007252Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.ensemble import BaggingClassifier\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.svm import SVC\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.ensemble import GradientBoostingClassifier","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:43:36.904137Z","iopub.execute_input":"2022-07-05T08:43:36.904594Z","iopub.status.idle":"2022-07-05T08:43:37.784328Z","shell.execute_reply.started":"2022-07-05T08:43:36.904556Z","shell.execute_reply":"2022-07-05T08:43:37.783215Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_df = pd.read_csv('/kaggle/input/titanic/train.csv')\ntest_df = pd.read_csv('/kaggle/input/titanic/test.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:43:38.537475Z","iopub.execute_input":"2022-07-05T08:43:38.537910Z","iopub.status.idle":"2022-07-05T08:43:38.575897Z","shell.execute_reply.started":"2022-07-05T08:43:38.537876Z","shell.execute_reply":"2022-07-05T08:43:38.574525Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_df.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:43:43.794345Z","iopub.execute_input":"2022-07-05T08:43:43.794861Z","iopub.status.idle":"2022-07-05T08:43:43.822884Z","shell.execute_reply.started":"2022-07-05T08:43:43.794814Z","shell.execute_reply":"2022-07-05T08:43:43.822000Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_df.describe()","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:43:44.227406Z","iopub.execute_input":"2022-07-05T08:43:44.228092Z","iopub.status.idle":"2022-07-05T08:43:44.275771Z","shell.execute_reply.started":"2022-07-05T08:43:44.228041Z","shell.execute_reply":"2022-07-05T08:43:44.274657Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df.describe()","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:43:49.879388Z","iopub.execute_input":"2022-07-05T08:43:49.879874Z","iopub.status.idle":"2022-07-05T08:43:49.917557Z","shell.execute_reply.started":"2022-07-05T08:43:49.879837Z","shell.execute_reply":"2022-07-05T08:43:49.916262Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Data exploration ","metadata":{}},{"cell_type":"code","source":"men_train = sum([1 for i in data_df['Sex'] if i == 'male'])\nmen_test =  sum([1 for i in test_df['Sex'] if i == 'male'])\nwomen_train = data_df.shape[0] - men_train\nwomen_test = test_df.shape[0] - men_test\nentries_len = data_df.shape[0] + test_df.shape[0]\nprint(\"Rate of men: \", (men_train + men_test) / entries_len)\nprint(\"Rate of women: \", (women_train + women_test) / entries_len)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:43:58.763430Z","iopub.execute_input":"2022-07-05T08:43:58.764821Z","iopub.status.idle":"2022-07-05T08:43:58.776124Z","shell.execute_reply.started":"2022-07-05T08:43:58.764765Z","shell.execute_reply":"2022-07-05T08:43:58.775209Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"p1_train = sum([1 for i in data_df['Pclass'] if i == 1])\np2_train = sum([1 for i in data_df['Pclass'] if i == 2])\np3_train = sum([1 for i in data_df['Pclass'] if i == 3])\np1_test = sum([1 for i in test_df['Pclass'] if i == 1])\np2_test = sum([1 for i in test_df['Pclass'] if i == 2])\np3_test = sum([1 for i in test_df['Pclass'] if i == 3])\n\nentries_len = data_df.shape[0] + test_df.shape[0]\nprint(\"Rate of P1class: \", (p1_train + p1_test) / entries_len)\nprint(\"Rate of P2class: \", (p2_train + p2_test) / entries_len)\nprint(\"Rate of P3class: \", (p3_train + p3_test) / entries_len)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:43:59.473223Z","iopub.execute_input":"2022-07-05T08:43:59.474570Z","iopub.status.idle":"2022-07-05T08:43:59.486224Z","shell.execute_reply.started":"2022-07-05T08:43:59.474527Z","shell.execute_reply":"2022-07-05T08:43:59.485180Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Data Preprocessing","metadata":{}},{"cell_type":"code","source":"def preprocess(df):\n    data = pd.DataFrame()\n    class_rates = [0, 0.24, 0.211, 0.54]\n    data['Sex'] = df['Sex'].apply(lambda x: 0.644 if x == 'male' else 0.356)\n    data['Pclass'] = df['Pclass'].apply(lambda x: class_rates[x])\n    data['Age'] = df['Age']\n    data['SibSp'] = df['SibSp']\n    data['Parch'] = df['Parch']\n    data['Fare'] = df['Fare']\n    return data\n\nx = preprocess(data_df)\nx_test = preprocess(test_df)\nmy_imputer = SimpleImputer()\nx = my_imputer.fit_transform(x)\nx_test = my_imputer.transform(x_test)\n#train_data = tf.convert_to_tensor(train_data.astype('float32'))\n\ny = data_df['Survived']","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:44:15.522913Z","iopub.execute_input":"2022-07-05T08:44:15.523405Z","iopub.status.idle":"2022-07-05T08:44:15.556601Z","shell.execute_reply.started":"2022-07-05T08:44:15.523370Z","shell.execute_reply":"2022-07-05T08:44:15.555075Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Stacking Classifiers","metadata":{}},{"cell_type":"code","source":"tree = DecisionTreeClassifier(criterion='entropy',\n                              min_samples_leaf=1,\n                              max_leaf_nodes=40,\n                              random_state=195)\nbagging = BaggingClassifier(tree,\n                            n_estimators=100,\n                            random_state=195)\nbagging.fit(x, y)\nbagging.score(x, y)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:44:18.452389Z","iopub.execute_input":"2022-07-05T08:44:18.452849Z","iopub.status.idle":"2022-07-05T08:44:18.792994Z","shell.execute_reply.started":"2022-07-05T08:44:18.452814Z","shell.execute_reply":"2022-07-05T08:44:18.791889Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"svm = SVC(random_state=37, C=3)\nsvm.fit(x, y)\n\nsvm.score(x, y)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:44:30.113033Z","iopub.execute_input":"2022-07-05T08:44:30.113474Z","iopub.status.idle":"2022-07-05T08:44:30.192116Z","shell.execute_reply.started":"2022-07-05T08:44:30.113439Z","shell.execute_reply":"2022-07-05T08:44:30.190645Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"forest = RandomForestClassifier(n_estimators=30,\n                             criterion='entropy',\n                              min_samples_leaf=1,\n                              max_leaf_nodes=40,\n                              random_state=195)\n\nforest.fit(x, y)\n\nforest.score(x, y)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:44:20.109472Z","iopub.execute_input":"2022-07-05T08:44:20.110545Z","iopub.status.idle":"2022-07-05T08:44:20.195346Z","shell.execute_reply.started":"2022-07-05T08:44:20.110496Z","shell.execute_reply":"2022-07-05T08:44:20.194202Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.linear_model import LogisticRegression\n\nlr = LogisticRegression(solver='lbfgs', random_state=195)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:44:25.719244Z","iopub.execute_input":"2022-07-05T08:44:25.720353Z","iopub.status.idle":"2022-07-05T08:44:25.726268Z","shell.execute_reply.started":"2022-07-05T08:44:25.720299Z","shell.execute_reply":"2022-07-05T08:44:25.724493Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.ensemble import StackingClassifier\n\nbase_estimators = [('SVM', svm), ('Bagging DT', bagging), ('DecisionForest', forest)]\nsclf = StackingClassifier(estimators=base_estimators, final_estimator=lr, cv=2)\nsclf.fit(x, y)\nsclf.score(x, y)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:44:36.653368Z","iopub.execute_input":"2022-07-05T08:44:36.653844Z","iopub.status.idle":"2022-07-05T08:44:37.861469Z","shell.execute_reply.started":"2022-07-05T08:44:36.653810Z","shell.execute_reply":"2022-07-05T08:44:37.860521Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions = sclf.predict(x_test) #sclf.predict(x_test)\n\noutput = pd.DataFrame({'PassengerId': test_df.PassengerId, 'Survived': predictions})\noutput.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:45:54.076179Z","iopub.execute_input":"2022-07-05T08:45:54.076695Z","iopub.status.idle":"2022-07-05T08:45:54.110312Z","shell.execute_reply.started":"2022-07-05T08:45:54.076652Z","shell.execute_reply":"2022-07-05T08:45:54.109016Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Stacking submission score\n0.76794","metadata":{}},{"cell_type":"markdown","source":"# XGboost","metadata":{}},{"cell_type":"code","source":"xgclf = GradientBoostingClassifier(n_estimators=200, learning_rate=1,\n                                 max_depth=3, random_state=37).fit(x, y)\nxgclf.score(x, y)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:46:03.130127Z","iopub.execute_input":"2022-07-05T08:46:03.131484Z","iopub.status.idle":"2022-07-05T08:46:03.397961Z","shell.execute_reply.started":"2022-07-05T08:46:03.131428Z","shell.execute_reply":"2022-07-05T08:46:03.396481Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions = xgclf.predict(x_test)\n\noutput = pd.DataFrame({'PassengerId': test_df.PassengerId, 'Survived': predictions})\noutput.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:46:05.890809Z","iopub.execute_input":"2022-07-05T08:46:05.891294Z","iopub.status.idle":"2022-07-05T08:46:05.903805Z","shell.execute_reply.started":"2022-07-05T08:46:05.891259Z","shell.execute_reply":"2022-07-05T08:46:05.902415Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## XGBoost submission score\n0.72727","metadata":{}},{"cell_type":"markdown","source":"# NN model","metadata":{}},{"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Dense, BatchNormalization, Dropout\n\nmodel = Sequential()\nmodel.add(Dense(256, input_shape=(x.shape[1], ), activation='tanh'))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.3))\nmodel.add(Dense(128, activation='tanh'))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.3))\nmodel.add(Dense(1, activation='sigmoid'))\n\n\nopt = tf.keras.optimizers.Adam(\n    learning_rate=0.0001,\n    amsgrad=True\n)\n\nmodel.compile(optimizer=opt,\n                loss=tf.keras.losses.BinaryCrossentropy(),\n                metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:50:29.145056Z","iopub.execute_input":"2022-07-05T08:50:29.145501Z","iopub.status.idle":"2022-07-05T08:50:29.234421Z","shell.execute_reply.started":"2022-07-05T08:50:29.145468Z","shell.execute_reply":"2022-07-05T08:50:29.233115Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = tf.convert_to_tensor(x)\nY = tf.convert_to_tensor(y)\nmodel.fit(X, Y, epochs=50, batch_size=32)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:50:58.723283Z","iopub.execute_input":"2022-07-05T08:50:58.724125Z","iopub.status.idle":"2022-07-05T08:51:03.770344Z","shell.execute_reply.started":"2022-07-05T08:50:58.724083Z","shell.execute_reply":"2022-07-05T08:51:03.769014Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions = np.round(model.predict(x_test).squeeze()).astype(int)\n\noutput = pd.DataFrame({'PassengerId': test_df.PassengerId, 'Survived': predictions})\noutput.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T08:51:09.344442Z","iopub.execute_input":"2022-07-05T08:51:09.344931Z","iopub.status.idle":"2022-07-05T08:51:09.612284Z","shell.execute_reply.started":"2022-07-05T08:51:09.344891Z","shell.execute_reply":"2022-07-05T08:51:09.610583Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## NN submission score\n0.70813","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}