{"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":"from unicodedata import category\nimport  pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:21.164666Z","iopub.execute_input":"2022-08-10T17:07:21.165159Z","iopub.status.idle":"2022-08-10T17:07:21.171421Z","shell.execute_reply.started":"2022-08-10T17:07:21.165122Z","shell.execute_reply":"2022-08-10T17:07:21.170283Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data = pd.read_csv('../input/spaceship-titanic/train.csv')\ntest_data = pd.read_csv('../input/spaceship-titanic/test.csv')","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:24.449914Z","iopub.execute_input":"2022-08-10T17:07:24.450712Z","iopub.status.idle":"2022-08-10T17:07:24.504191Z","shell.execute_reply.started":"2022-08-10T17:07:24.450665Z","shell.execute_reply":"2022-08-10T17:07:24.503160Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data.info()","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:27.089936Z","iopub.execute_input":"2022-08-10T17:07:27.090941Z","iopub.status.idle":"2022-08-10T17:07:27.119493Z","shell.execute_reply.started":"2022-08-10T17:07:27.090888Z","shell.execute_reply":"2022-08-10T17:07:27.118207Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data.describe()","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:29.975868Z","iopub.execute_input":"2022-08-10T17:07:29.976357Z","iopub.status.idle":"2022-08-10T17:07:30.014868Z","shell.execute_reply.started":"2022-08-10T17:07:29.976320Z","shell.execute_reply":"2022-08-10T17:07:30.014064Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data = train_data.drop(\"Name\" , axis=1)\ntest_data = test_data.drop(\"Name\", axis=1)\n\np_id = test_data[\"PassengerId\"]","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:32.632298Z","iopub.execute_input":"2022-08-10T17:07:32.632717Z","iopub.status.idle":"2022-08-10T17:07:32.643102Z","shell.execute_reply.started":"2022-08-10T17:07:32.632681Z","shell.execute_reply":"2022-08-10T17:07:32.642213Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def bar_plot(variable):\n\n    feature = train_data[variable]\n    featureValue = feature.value_counts()\n\n    plt.bar(featureValue.index, featureValue)\n    plt.xticks(featureValue.index, featureValue.index.values)\n    plt.ylabel(\"Frequency\")\n    plt.title(variable)\n    plt.show()\n    plt.figure(figsize=(6,3))\n\n    #print(\"{}: \\n {}\".format(feature, featureValue))","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:35.665844Z","iopub.execute_input":"2022-08-10T17:07:35.666236Z","iopub.status.idle":"2022-08-10T17:07:35.673895Z","shell.execute_reply.started":"2022-08-10T17:07:35.666204Z","shell.execute_reply":"2022-08-10T17:07:35.672339Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"category1 = [\"HomePlanet\",\"CryoSleep\",\"Destination\",\"VIP\",\"Transported\"]\nfor i in category1:\n    bar_plot(i)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:38.432732Z","iopub.execute_input":"2022-08-10T17:07:38.433115Z","iopub.status.idle":"2022-08-10T17:07:39.113761Z","shell.execute_reply.started":"2022-08-10T17:07:38.433083Z","shell.execute_reply":"2022-08-10T17:07:39.112573Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data[\"HomePlanet\"] = train_data[\"HomePlanet\"].fillna(\"Earth\")\ntest_data[\"HomePlanet\"] = test_data[\"HomePlanet\"].fillna(\"Earth\")\n\ntrain_data[\"CryoSleep\"] = train_data[\"CryoSleep\"].fillna(False)\ntest_data[\"CryoSleep\"] = test_data[\"CryoSleep\"].fillna(False)\n\ncabintemp1 = train_data['Cabin'].str.split(pat = \"/\", expand=True)\ntrain_data[['deck', 'temp','side']] = cabintemp1\ncabintemp2 = test_data['Cabin'].str.split(pat = \"/\", expand=True)\ntest_data[['deck', 'temp','side']] = cabintemp2\ntrain_data[\"deck\"] = train_data[\"deck\"].fillna(\"F\")\ntrain_data[\"side\"] = train_data[\"side\"].fillna(\"S\")\ntest_data[\"deck\"] = test_data[\"deck\"].fillna(\"F\")\ntest_data[\"side\"] = test_data[\"side\"].fillna(\"S\")\n\ntrain_data[\"Destination\"] = train_data[\"Destination\"].fillna(\"TRAPPIST-1e\")\ntest_data[\"Destination\"] = test_data[\"Destination\"].fillna(\"TRAPPIST-1e\")\n\ntrain_data[\"Age\"] = train_data[\"Age\"].fillna(train_data[\"Age\"].mean())\ntest_data[\"Age\"] = test_data[\"Age\"].fillna(train_data[\"Age\"].mean())\n\ntrain_data[\"VIP\"] = train_data[\"VIP\"].fillna(False)\ntest_data[\"VIP\"] = test_data[\"VIP\"].fillna(False)\n\ntrain_data[[\"RoomService\",\"FoodCourt\",\"ShoppingMall\",\"Spa\",\"VRDeck\"]] = train_data[[\"RoomService\",\"FoodCourt\",\"ShoppingMall\",\"Spa\",\"VRDeck\"]].fillna(0.0)\ntest_data[[\"RoomService\",\"FoodCourt\",\"ShoppingMall\",\"Spa\",\"VRDeck\"]] = test_data[[\"RoomService\",\"FoodCourt\",\"ShoppingMall\",\"Spa\",\"VRDeck\"]].fillna(0.0)\n\ntrain_data = train_data.drop(['Cabin', 'temp', 'PassengerId'], axis=1)\ntest_data = test_data.drop(['Cabin', 'temp', 'PassengerId'], axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:41.845793Z","iopub.execute_input":"2022-08-10T17:07:41.848330Z","iopub.status.idle":"2022-08-10T17:07:41.913179Z","shell.execute_reply.started":"2022-08-10T17:07:41.848292Z","shell.execute_reply":"2022-08-10T17:07:41.912282Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data = pd.get_dummies(train_data,columns=[\"HomePlanet\"])\ntest_data = pd.get_dummies(test_data,columns=[\"HomePlanet\"])\n\ntrain_data = pd.get_dummies(train_data,columns=[\"Destination\"])\ntest_data = pd.get_dummies(test_data,columns=[\"Destination\"])\n\ntrain_data = pd.get_dummies(train_data,columns=[\"deck\"])\ntest_data = pd.get_dummies(test_data,columns=[\"deck\"])\n\ntrain_data = pd.get_dummies(train_data,columns=[\"side\"])\ntest_data = pd.get_dummies(test_data,columns=[\"side\"])\n\ntrain_data.replace({False: 0, True: 1}, inplace=True)\ntest_data.replace({False: 0, True: 1}, inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:48.796124Z","iopub.execute_input":"2022-08-10T17:07:48.796508Z","iopub.status.idle":"2022-08-10T17:07:48.853165Z","shell.execute_reply.started":"2022-08-10T17:07:48.796477Z","shell.execute_reply":"2022-08-10T17:07:48.852319Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split, StratifiedKFold, GridSearchCV\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.svm import SVC\nfrom sklearn.ensemble import RandomForestClassifier, VotingClassifier\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.metrics import accuracy_score","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:52.504722Z","iopub.execute_input":"2022-08-10T17:07:52.505130Z","iopub.status.idle":"2022-08-10T17:07:52.511269Z","shell.execute_reply.started":"2022-08-10T17:07:52.505097Z","shell.execute_reply":"2022-08-10T17:07:52.510210Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y = train_data[\"Transported\"]\nx = train_data.drop(['Transported'], axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:55.305265Z","iopub.execute_input":"2022-08-10T17:07:55.305660Z","iopub.status.idle":"2022-08-10T17:07:55.312620Z","shell.execute_reply.started":"2022-08-10T17:07:55.305629Z","shell.execute_reply":"2022-08-10T17:07:55.311436Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(x, y, test_size = 0.33, random_state = 42)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T17:07:57.890275Z","iopub.execute_input":"2022-08-10T17:07:57.890640Z","iopub.status.idle":"2022-08-10T17:07:57.899648Z","shell.execute_reply.started":"2022-08-10T17:07:57.890610Z","shell.execute_reply":"2022-08-10T17:07:57.898782Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_state = 42\nclassifier = [DecisionTreeClassifier(random_state = random_state),\n             SVC(random_state = random_state),\n             RandomForestClassifier(random_state = random_state),\n             LogisticRegression(random_state = random_state),\n             KNeighborsClassifier()]\n\ndt_param_grid = {\"min_samples_split\" : range(10,500,20),\n                \"max_depth\": range(1,20,2)}\n\nsvc_param_grid = {\"kernel\" : [\"rbf\"],\n                 \"gamma\": [0.001, 0.01, 0.1, 1],\n                 \"C\": [1,10,100,1000]}\n\nrf_param_grid = {\"max_features\": [1,3,10],\n                \"min_samples_split\":[2,3,10],\n                \"min_samples_leaf\":[1,3,10],\n                \"bootstrap\":[False],\n                \"n_estimators\":[100,300],\n                \"criterion\":[\"gini\"]}\n\nlogreg_param_grid = {\"C\":np.logspace(-3,3,7),\n                    \"penalty\": [\"l1\",\"l2\"]}\n\nknn_param_grid = {\"n_neighbors\": np.linspace(1,19,10, dtype = int).tolist(),\n                 \"weights\": [\"uniform\",\"distance\"],\n                 \"metric\":[\"euclidean\",\"manhattan\"]}\nclassifier_param = [dt_param_grid,\n                   svc_param_grid,\n                   rf_param_grid,\n                   logreg_param_grid,\n                   knn_param_grid]","metadata":{"execution":{"iopub.status.busy":"2022-08-10T18:10:07.650818Z","iopub.execute_input":"2022-08-10T18:10:07.651253Z","iopub.status.idle":"2022-08-10T18:10:07.661679Z","shell.execute_reply.started":"2022-08-10T18:10:07.651216Z","shell.execute_reply":"2022-08-10T18:10:07.660489Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cvresults = []\nbestEstimator = []\n\nfor i in range (len(classifier)):\n    clf = GridSearchCV(classifier[i], param_grid=classifier_param[i], cv = StratifiedKFold(n_splits = 10), scoring = \"accuracy\", n_jobs = -1, verbose = 1)\n    clf.fit(X_train, y_train)\n    cvresults.append(clf.best_score_)\n    bestEstimator.append(clf.best_estimator_)\n    print(cvresults[i])","metadata":{"execution":{"iopub.status.busy":"2022-08-10T18:10:09.415433Z","iopub.execute_input":"2022-08-10T18:10:09.415826Z","iopub.status.idle":"2022-08-10T18:23:18.221116Z","shell.execute_reply.started":"2022-08-10T18:10:09.415794Z","shell.execute_reply":"2022-08-10T18:23:18.219241Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cvresults = pd.DataFrame({\"Cross Validation Means\":cvresults, \"ML Models\":[\"DecisionTreeClassifier\", \"SVM\",\"RandomForestClassifier\",\n             \"LogisticRegression\",\n             \"KNeighborsClassifier\"]})\n\ng = sns.barplot(\"Cross Validation Means\", \"ML Models\", data = cvresults)\ng.set_xlabel(\"Mean Accuracy\")\ng.set_title(\"Cross Validation Scores\")","metadata":{"execution":{"iopub.status.busy":"2022-08-10T18:26:15.492838Z","iopub.execute_input":"2022-08-10T18:26:15.493267Z","iopub.status.idle":"2022-08-10T18:26:15.720697Z","shell.execute_reply.started":"2022-08-10T18:26:15.493234Z","shell.execute_reply":"2022-08-10T18:26:15.719718Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"votingC = VotingClassifier(estimators = [(\"rfc\",bestEstimator[2]),\n                                        (\"lr\",bestEstimator[3]),\n                                        (\"knn\",bestEstimator[4])],\n                                        voting = \"soft\", n_jobs = -1)\nvotingC = votingC.fit(X_train, y_train)\nprint(accuracy_score(votingC.predict(X_test),y_test))","metadata":{"execution":{"iopub.status.busy":"2022-08-10T18:53:46.809167Z","iopub.execute_input":"2022-08-10T18:53:46.810224Z","iopub.status.idle":"2022-08-10T18:53:50.610709Z","shell.execute_reply.started":"2022-08-10T18:53:46.810184Z","shell.execute_reply":"2022-08-10T18:53:50.609240Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_transported = pd.Series(votingC.predict(test_data), name = \"Transported\").astype(int)\nresults = pd.concat([p_id, test_transported],axis = 1)\nresults.replace({0: False, 1: True}, inplace=True)\nresults.to_csv(\"spaceship.csv\", index = False)","metadata":{"execution":{"iopub.status.busy":"2022-08-10T18:53:55.343474Z","iopub.execute_input":"2022-08-10T18:53:55.343930Z","iopub.status.idle":"2022-08-10T18:53:56.192445Z","shell.execute_reply.started":"2022-08-10T18:53:55.343889Z","shell.execute_reply":"2022-08-10T18:53:56.191330Z"},"trusted":true},"execution_count":null,"outputs":[]}]}