{"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":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-04T16:44:08.064195Z","iopub.execute_input":"2022-07-04T16:44:08.064624Z","iopub.status.idle":"2022-07-04T16:44:08.073893Z","shell.execute_reply.started":"2022-07-04T16:44:08.064590Z","shell.execute_reply":"2022-07-04T16:44:08.072514Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**GET TRAIN AND TEST DATA**","metadata":{}},{"cell_type":"code","source":"train_csv = pd.read_csv(\"/kaggle/input/titanic/train.csv\")\ntest_csv = pd.read_csv(\"/kaggle/input/titanic/test.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:08.824841Z","iopub.execute_input":"2022-07-04T16:44:08.825601Z","iopub.status.idle":"2022-07-04T16:44:08.839492Z","shell.execute_reply.started":"2022-07-04T16:44:08.825565Z","shell.execute_reply":"2022-07-04T16:44:08.838683Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_csv.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:08.971271Z","iopub.execute_input":"2022-07-04T16:44:08.972429Z","iopub.status.idle":"2022-07-04T16:44:08.989351Z","shell.execute_reply.started":"2022-07-04T16:44:08.972387Z","shell.execute_reply":"2022-07-04T16:44:08.988200Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**EXPLORE TRAIN DATA**","metadata":{}},{"cell_type":"markdown","source":"Check data if it includes nan data.","metadata":{}},{"cell_type":"code","source":"nan_keys = []\nfor key in train_csv.keys():\n    for i in range(len(train_csv[key].isna())):\n         if train_csv[key].isna()[i] :\n                nan_keys.append(key)\n                break\nprint(f\"Nan keys : {nan_keys}\")","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:09.750223Z","iopub.execute_input":"2022-07-04T16:44:09.750613Z","iopub.status.idle":"2022-07-04T16:44:10.426780Z","shell.execute_reply.started":"2022-07-04T16:44:09.750583Z","shell.execute_reply":"2022-07-04T16:44:10.425802Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Drop \"cabin\" column ,Fill \"Age\" column with its mean,Convert \"Embarked\" column convert categorical to numeric and fill it with most iterative. ","metadata":{}},{"cell_type":"code","source":"#Convert train and test data to dataframe.\ntrain_csv = pd.DataFrame(train_csv,columns = train_csv.columns)\ntest_csv = pd.DataFrame(test_csv,columns = test_csv.columns)\n#Drop \"cabin\" column from both of them.\ntrain_csv = train_csv.drop(columns = [\"Cabin\"])\ntest_csv = test_csv.drop(columns = [\"Cabin\"])\n","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:10.428213Z","iopub.execute_input":"2022-07-04T16:44:10.428571Z","iopub.status.idle":"2022-07-04T16:44:10.436562Z","shell.execute_reply.started":"2022-07-04T16:44:10.428542Z","shell.execute_reply":"2022-07-04T16:44:10.435307Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Fill \"Age\" column with its mean.\ntrain_csv = train_csv.fillna(value = train_csv[\"Age\"].mean())\ntest_csv = test_csv.fillna(value = test_csv[\"Age\"].mean())","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:10.845669Z","iopub.execute_input":"2022-07-04T16:44:10.846038Z","iopub.status.idle":"2022-07-04T16:44:10.857046Z","shell.execute_reply.started":"2022-07-04T16:44:10.846008Z","shell.execute_reply":"2022-07-04T16:44:10.855495Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Describe \"Embarked\" column and fillna.\ntrain_csv = train_csv.fillna(value = train_csv[\"Embarked\"].value_counts().index[0])\ntest_csv = test_csv.fillna(value = test_csv[\"Embarked\"].value_counts().index[0])\n#Convert embarked data categorical to numeric for train\nfor i in range(len(train_csv[\"Embarked\"])):\n    if train_csv[\"Embarked\"][i] == 29.69911764705882:\n        train_csv[\"Embarked\"][i] = \"S\"\nfrom sklearn.preprocessing import OrdinalEncoder\nencoder = OrdinalEncoder()\nembarked_train = encoder.fit_transform(train_csv[\"Embarked\"].values.reshape(-1,1))\ntrain_csv =train_csv.drop(columns = [\"Embarked\"])\ntrain_csv = pd.concat([train_csv,pd.DataFrame(embarked_train,columns = [\"Embarked\"])],axis = 1)","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:11.339929Z","iopub.execute_input":"2022-07-04T16:44:11.340354Z","iopub.status.idle":"2022-07-04T16:44:11.365969Z","shell.execute_reply.started":"2022-07-04T16:44:11.340310Z","shell.execute_reply":"2022-07-04T16:44:11.364898Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Do same thing above for test datas.\nembarked_test = encoder.fit_transform(test_csv[\"Embarked\"].values.reshape(-1,1))\ntest_csv = test_csv.drop(columns = [\"Embarked\"])\ntest_csv = pd.concat([test_csv,pd.DataFrame(embarked_test,columns = [\"Embarked\"])],axis = 1)","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:11.871631Z","iopub.execute_input":"2022-07-04T16:44:11.872043Z","iopub.status.idle":"2022-07-04T16:44:11.883355Z","shell.execute_reply.started":"2022-07-04T16:44:11.872000Z","shell.execute_reply":"2022-07-04T16:44:11.882042Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Convert \"Sex\" column categorical to numeric.\n#For train\nsex_train = encoder.fit_transform(train_csv[\"Sex\"].values.reshape(-1,1))\ntrain_csv = train_csv.drop(columns = [\"Sex\"])\ntrain_csv = pd.concat([train_csv,pd.DataFrame(sex_train,columns = [\"Sex\"])],axis = 1)\n#For test\nsex_test = encoder.fit_transform(test_csv[\"Sex\"].values.reshape(-1,1))\ntest_csv = test_csv.drop(columns = [\"Sex\"])\ntest_csv = pd.concat([test_csv,pd.DataFrame(sex_test,columns = [\"Sex\"])],axis = 1)\n","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:12.386407Z","iopub.execute_input":"2022-07-04T16:44:12.386772Z","iopub.status.idle":"2022-07-04T16:44:12.406931Z","shell.execute_reply.started":"2022-07-04T16:44:12.386744Z","shell.execute_reply":"2022-07-04T16:44:12.405758Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Drop \"Name\" column.\n#For train and test.\ntrain_csv = train_csv.drop(columns = [\"Name\"])\ntest_csv = test_csv.drop(columns = [\"Name\"])","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:12.981565Z","iopub.execute_input":"2022-07-04T16:44:12.981993Z","iopub.status.idle":"2022-07-04T16:44:12.991685Z","shell.execute_reply.started":"2022-07-04T16:44:12.981956Z","shell.execute_reply":"2022-07-04T16:44:12.990738Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Drop \"ticket\" column.\n#For train and test.\ntrain_csv = train_csv.drop(columns = [\"Ticket\"])\ntest_csv = test_csv.drop(columns = [\"Ticket\"])","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:13.453521Z","iopub.execute_input":"2022-07-04T16:44:13.453915Z","iopub.status.idle":"2022-07-04T16:44:13.461502Z","shell.execute_reply.started":"2022-07-04T16:44:13.453873Z","shell.execute_reply":"2022-07-04T16:44:13.460225Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Seperate \"PassengerId\" from data.\npassengerId_train = train_csv[\"PassengerId\"]\npassengerId_test = test_csv[\"PassengerId\"]\n#Drop \"PassengerId\" from data\ntrain_csv = train_csv.drop(columns = [\"PassengerId\"])\ntest_csv = test_csv.drop(columns = [\"PassengerId\"])","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:14.025339Z","iopub.execute_input":"2022-07-04T16:44:14.025717Z","iopub.status.idle":"2022-07-04T16:44:14.033269Z","shell.execute_reply.started":"2022-07-04T16:44:14.025688Z","shell.execute_reply":"2022-07-04T16:44:14.032059Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Seperate \"Survived\" column from data,assign it as \"y\".\ntrain_y = train_csv[\"Survived\"]\ntrain_x = train_csv.drop(columns = [\"Survived\"])\nprint(train_x)","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:14.507819Z","iopub.execute_input":"2022-07-04T16:44:14.508206Z","iopub.status.idle":"2022-07-04T16:44:14.522230Z","shell.execute_reply.started":"2022-07-04T16:44:14.508172Z","shell.execute_reply":"2022-07-04T16:44:14.520866Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_x = test_csv\ntest_x","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:15.578627Z","iopub.execute_input":"2022-07-04T16:44:15.579443Z","iopub.status.idle":"2022-07-04T16:44:15.595931Z","shell.execute_reply.started":"2022-07-04T16:44:15.579408Z","shell.execute_reply":"2022-07-04T16:44:15.594771Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**STANDARTIZE DATA**","metadata":{}},{"cell_type":"code","source":"from sklearn.preprocessing import StandardScaler\nSS = StandardScaler()\n#Standartization of train and test data.\nscaled_train_x = SS.fit_transform(train_x)\nscaled_test_x = SS.fit_transform(test_x)\n#Convert them to dataframe.\nscaled_train_x = pd.DataFrame(scaled_train_x,columns = train_x.columns)\nscaled_test_x = pd.DataFrame(scaled_test_x,columns = test_x.columns)","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:44:18.593398Z","iopub.execute_input":"2022-07-04T16:44:18.593879Z","iopub.status.idle":"2022-07-04T16:44:18.608939Z","shell.execute_reply.started":"2022-07-04T16:44:18.593832Z","shell.execute_reply":"2022-07-04T16:44:18.607843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**VISUALIZATION**","metadata":{}},{"cell_type":"code","source":"import seaborn as sns\nimport matplotlib.pyplot as plt \nsns.scatterplot(data = scaled_train_x,x=\"Age\",y=\"Pclass\",hue = train_y)\nplt.xlabel(\"Age\")\nplt.ylabel(\"PClass\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:45:19.019602Z","iopub.execute_input":"2022-07-04T16:45:19.019966Z","iopub.status.idle":"2022-07-04T16:45:19.255188Z","shell.execute_reply.started":"2022-07-04T16:45:19.019937Z","shell.execute_reply":"2022-07-04T16:45:19.254105Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**FIT MODEL**","metadata":{}},{"cell_type":"code","source":"from sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.naive_bayes import GaussianNB\nfrom sklearn.neural_network import MLPClassifier\nfrom sklearn.ensemble import RandomForestClassifier\n\"\"\"KNN\"\"\"\nknn = KNeighborsClassifier(n_neighbors = 3,)\nknn.fit(scaled_train_x,train_y)\n\"\"\"DECISION TREE\"\"\"\ndec_clf = DecisionTreeClassifier(criterion=\"entropy\",splitter = \"best\",max_depth=20)\ndec_clf.fit(scaled_train_x,train_y)\n\"\"\"Gaussian Bayes.\"\"\"\ngnb = GaussianNB()\ngnb.fit(scaled_train_x,train_y)\n\"\"\"MLP Classifier\"\"\"\nmlp = MLPClassifier(hidden_layer_sizes = (64,128,64,),activation = \"relu\",solver = \"rmsprop\",learning_rate = 0.0005)\n\"\"\"Random Forest with PCA\"\"\"\nrfc_clf = RandomForestClassifier(n_estimators = 100,criterion = \"entropy\",max_depth = 30)\nrfc_clf.fit(scaled_train_x,train_y)","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:45:44.494892Z","iopub.execute_input":"2022-07-04T16:45:44.495408Z","iopub.status.idle":"2022-07-04T16:45:44.694906Z","shell.execute_reply.started":"2022-07-04T16:45:44.495371Z","shell.execute_reply":"2022-07-04T16:45:44.693703Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**PREDICTION**","metadata":{}},{"cell_type":"code","source":"preds = rfc_clf.predict(scaled_test_x)","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:45:53.059956Z","iopub.execute_input":"2022-07-04T16:45:53.060341Z","iopub.status.idle":"2022-07-04T16:45:53.086061Z","shell.execute_reply.started":"2022-07-04T16:45:53.060309Z","shell.execute_reply":"2022-07-04T16:45:53.085100Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"result = pd.DataFrame({\"PassengerId\" : passengerId_test,\"Survived\" : preds})\nresult.to_csv(\"predictions_titanic.csv\",index = False)","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:45:56.136014Z","iopub.execute_input":"2022-07-04T16:45:56.136962Z","iopub.status.idle":"2022-07-04T16:45:56.145434Z","shell.execute_reply.started":"2022-07-04T16:45:56.136914Z","shell.execute_reply":"2022-07-04T16:45:56.144171Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"result","metadata":{"execution":{"iopub.status.busy":"2022-07-04T16:45:56.645182Z","iopub.execute_input":"2022-07-04T16:45:56.645607Z","iopub.status.idle":"2022-07-04T16:45:56.657749Z","shell.execute_reply.started":"2022-07-04T16:45:56.645572Z","shell.execute_reply":"2022-07-04T16:45:56.656672Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}