{"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\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":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","papermill":{"duration":0.041263,"end_time":"2022-07-08T11:04:48.807170","exception":false,"start_time":"2022-07-08T11:04:48.765907","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Approach\n1. Import libraries\n2. Load data\n2. Impute outliers with median (columns)\n3. Filling null values with `median`(num) & `most_frequent`(cat)\n3. Get best Mutual Information columns\n4. Create new columns with them\n5. Select useful features\n6. Extract numerical and categorical columns\n7. Make Pipeline\n8. Do hyperparameter tuning with cross-validation (`RandomForestClassifier`)\n9. Check MAE score\n10. Select best parameters\n11. Train model\n12. Predict `Survived` on `test_data`\n13. Submit predictions","metadata":{"papermill":{"duration":0.017797,"end_time":"2022-07-08T11:04:48.843381","exception":false,"start_time":"2022-07-08T11:04:48.825584","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"## 1. Importing required libraries","metadata":{"papermill":{"duration":0.018072,"end_time":"2022-07-08T11:04:48.881109","exception":false,"start_time":"2022-07-08T11:04:48.863037","status":"completed"},"tags":[]}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n%matplotlib inline\nfrom collections import Counter\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.preprocessing import OneHotEncoder\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.feature_selection import mutual_info_classif","metadata":{"papermill":{"duration":1.608587,"end_time":"2022-07-08T11:04:50.507650","exception":false,"start_time":"2022-07-08T11:04:48.899063","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 2. Load data","metadata":{"papermill":{"duration":0.018404,"end_time":"2022-07-08T11:04:50.544811","exception":false,"start_time":"2022-07-08T11:04:50.526407","status":"completed"},"tags":[]}},{"cell_type":"code","source":"data = pd.read_csv(\"../input/titanic/train.csv\", index_col=\"PassengerId\")\ntest_data = pd.read_csv(\"../input/titanic/test.csv\", index_col=\"PassengerId\")\n\ndata.head()","metadata":{"papermill":{"duration":0.078489,"end_time":"2022-07-08T11:04:50.641548","exception":false,"start_time":"2022-07-08T11:04:50.563059","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:43.800403Z","iopub.execute_input":"2022-07-08T13:40:43.800899Z","iopub.status.idle":"2022-07-08T13:40:43.830527Z","shell.execute_reply.started":"2022-07-08T13:40:43.800871Z","shell.execute_reply":"2022-07-08T13:40:43.829692Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 3. Imputing outliers with their column's median value","metadata":{"papermill":{"duration":0.017872,"end_time":"2022-07-08T11:04:50.679394","exception":false,"start_time":"2022-07-08T11:04:50.661522","status":"completed"},"tags":[]}},{"cell_type":"code","source":"plt.figure(figsize=(12, 6))\nsns.scatterplot(x=data[\"Fare\"], y=data.index, hue=\"Survived\", data=data)","metadata":{"papermill":{"duration":0.362377,"end_time":"2022-07-08T11:04:51.060735","exception":false,"start_time":"2022-07-08T11:04:50.698358","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:43.831758Z","iopub.execute_input":"2022-07-08T13:40:43.832265Z","iopub.status.idle":"2022-07-08T13:40:44.124272Z","shell.execute_reply.started":"2022-07-08T13:40:43.832236Z","shell.execute_reply":"2022-07-08T13:40:44.123146Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"outliers = data[data[\"Fare\"]>200].index\noutliers","metadata":{"papermill":{"duration":0.031705,"end_time":"2022-07-08T11:04:51.111956","exception":false,"start_time":"2022-07-08T11:04:51.080251","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.125697Z","iopub.execute_input":"2022-07-08T13:40:44.126041Z","iopub.status.idle":"2022-07-08T13:40:44.135228Z","shell.execute_reply.started":"2022-07-08T13:40:44.126009Z","shell.execute_reply":"2022-07-08T13:40:44.133957Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data.loc[outliers, \"Fare\"] = data[\"Fare\"].median()","metadata":{"papermill":{"duration":0.032289,"end_time":"2022-07-08T11:04:51.163733","exception":false,"start_time":"2022-07-08T11:04:51.131444","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.136502Z","iopub.execute_input":"2022-07-08T13:40:44.136880Z","iopub.status.idle":"2022-07-08T13:40:44.147913Z","shell.execute_reply.started":"2022-07-08T13:40:44.136847Z","shell.execute_reply":"2022-07-08T13:40:44.146984Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12, 6))\nsns.scatterplot(x=data[\"Fare\"], y=data.index, hue=\"Survived\", data=data)","metadata":{"papermill":{"duration":0.329336,"end_time":"2022-07-08T11:04:51.512958","exception":false,"start_time":"2022-07-08T11:04:51.183622","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.149083Z","iopub.execute_input":"2022-07-08T13:40:44.149997Z","iopub.status.idle":"2022-07-08T13:40:44.455778Z","shell.execute_reply.started":"2022-07-08T13:40:44.149959Z","shell.execute_reply":"2022-07-08T13:40:44.454803Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 4. Filling null values with `median`(num) & `most_frequent`(cat)","metadata":{"papermill":{"duration":0.020961,"end_time":"2022-07-08T11:04:51.556263","exception":false,"start_time":"2022-07-08T11:04:51.535302","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def impute_data(data, num_strategy=\"median\", cat_strategy=\"most_frequent\"):\n    X = data.copy()\n    index = X.index\n    num_cols = X.select_dtypes(exclude=\"object\").columns\n    cat_cols = X.select_dtypes(\"object\").columns    \n    \n    num_imputer = SimpleImputer(strategy=num_strategy)\n    cat_imputer = SimpleImputer(strategy=cat_strategy)\n    \n    X[num_cols] = pd.DataFrame(num_imputer.fit_transform(X[num_cols]), index=index, columns=num_cols)\n    X[cat_cols] = pd.DataFrame(cat_imputer.fit_transform(X[cat_cols]), index=index, columns=cat_cols)\n    return X","metadata":{"papermill":{"duration":0.034158,"end_time":"2022-07-08T11:04:51.611605","exception":false,"start_time":"2022-07-08T11:04:51.577447","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.463679Z","iopub.execute_input":"2022-07-08T13:40:44.464359Z","iopub.status.idle":"2022-07-08T13:40:44.472988Z","shell.execute_reply.started":"2022-07-08T13:40:44.464319Z","shell.execute_reply":"2022-07-08T13:40:44.471613Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = data.copy()\nY = X.pop(\"Survived\")\nX = impute_data(X)\ntest_data = impute_data(test_data)\n\nX.head()","metadata":{"papermill":{"duration":0.073176,"end_time":"2022-07-08T11:04:51.706377","exception":false,"start_time":"2022-07-08T11:04:51.633201","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.474493Z","iopub.execute_input":"2022-07-08T13:40:44.474973Z","iopub.status.idle":"2022-07-08T13:40:44.532013Z","shell.execute_reply.started":"2022-07-08T13:40:44.474923Z","shell.execute_reply":"2022-07-08T13:40:44.530641Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 5. Getting best Mutual Information columns","metadata":{"papermill":{"duration":0.021454,"end_time":"2022-07-08T11:04:51.749558","exception":false,"start_time":"2022-07-08T11:04:51.728104","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def get_mi_score(X, y):\n    # impute only if anything is missing, else use as it is\n    X = impute_data(X) if X.isnull().sum().any() else X.copy()\n    \n    # Converting values of discrete features to numerical values\n    for col in X.select_dtypes([\"object\"]):\n        X[col] = X[col].factorize()[0]\n    \n    discrete_features = X.dtypes == int\n    mi_scores = mutual_info_classif(X, y, discrete_features=discrete_features, random_state=0)\n    mi_scores = pd.Series(mi_scores, name=\"MI Scores\", index=X.columns).sort_values(ascending=False)\n    return mi_scores","metadata":{"papermill":{"duration":0.032955,"end_time":"2022-07-08T11:04:51.804287","exception":false,"start_time":"2022-07-08T11:04:51.771332","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.533795Z","iopub.execute_input":"2022-07-08T13:40:44.535036Z","iopub.status.idle":"2022-07-08T13:40:44.544136Z","shell.execute_reply.started":"2022-07-08T13:40:44.534991Z","shell.execute_reply":"2022-07-08T13:40:44.542792Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"mi_scores = get_mi_score(X, Y)\nmi_scores","metadata":{"papermill":{"duration":0.083231,"end_time":"2022-07-08T11:04:51.909821","exception":false,"start_time":"2022-07-08T11:04:51.826590","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.547611Z","iopub.execute_input":"2022-07-08T13:40:44.548170Z","iopub.status.idle":"2022-07-08T13:40:44.600371Z","shell.execute_reply.started":"2022-07-08T13:40:44.548134Z","shell.execute_reply":"2022-07-08T13:40:44.599214Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data[mi_scores.index]","metadata":{"papermill":{"duration":0.048821,"end_time":"2022-07-08T11:04:51.980561","exception":false,"start_time":"2022-07-08T11:04:51.931740","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.602115Z","iopub.execute_input":"2022-07-08T13:40:44.602809Z","iopub.status.idle":"2022-07-08T13:40:44.629854Z","shell.execute_reply.started":"2022-07-08T13:40:44.602764Z","shell.execute_reply":"2022-07-08T13:40:44.628689Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 6. Creating new columns","metadata":{"papermill":{"duration":0.022597,"end_time":"2022-07-08T11:04:52.025206","exception":false,"start_time":"2022-07-08T11:04:52.002609","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"#### Creating 2 new columns `Tikcet_code`, `Ticket_number` from `Ticket` column","metadata":{"papermill":{"duration":0.022574,"end_time":"2022-07-08T11:04:52.069814","exception":false,"start_time":"2022-07-08T11:04:52.047240","status":"completed"},"tags":[]}},{"cell_type":"code","source":"data[\"Ticket\"].value_counts()","metadata":{"papermill":{"duration":0.03789,"end_time":"2022-07-08T11:04:52.130149","exception":false,"start_time":"2022-07-08T11:04:52.092259","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.633252Z","iopub.execute_input":"2022-07-08T13:40:44.633963Z","iopub.status.idle":"2022-07-08T13:40:44.644237Z","shell.execute_reply.started":"2022-07-08T13:40:44.633916Z","shell.execute_reply":"2022-07-08T13:40:44.643130Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def split_tickets(tickets):\n    raw_tickets = [i.split(\" \") for i in tickets]\n    for ticket in raw_tickets:\n        if len(ticket) == 3:\n            if ticket[1][0].isdigit():\n                ticket[1:] = [ticket[1] + ticket[2]]\n            else:    # if 2nd element is word \n                ticket[:2] = [ticket[0] + ticket[1]]\n\n        if len(ticket) != 2:\n            ticket[:-1] = [\"missing\"]\n    \n    # Getting mode of ticket code, 1st is \"missing\", using second\n    common_ticket_codes = Counter([i[0] for i in raw_tickets]).most_common(2)\n    mode_ticket_code = common_ticket_codes[1][0] if common_ticket_codes[0][0]==\"missing\" else common_ticket_codes[0][0]\n\n    tickets_df = pd.DataFrame(raw_tickets, columns=[\"Ticket_code\", \"Ticket_number\"], index=tickets.index)\n    return tickets_df.replace({\"missing\": mode_ticket_code})","metadata":{"papermill":{"duration":0.035856,"end_time":"2022-07-08T11:04:52.188026","exception":false,"start_time":"2022-07-08T11:04:52.152170","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.646212Z","iopub.execute_input":"2022-07-08T13:40:44.646689Z","iopub.status.idle":"2022-07-08T13:40:44.656930Z","shell.execute_reply.started":"2022-07-08T13:40:44.646644Z","shell.execute_reply":"2022-07-08T13:40:44.655998Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"new_tickets_df = split_tickets(data[\"Ticket\"])\nnew_tickets_df","metadata":{"papermill":{"duration":0.043481,"end_time":"2022-07-08T11:04:52.254095","exception":false,"start_time":"2022-07-08T11:04:52.210614","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.658099Z","iopub.execute_input":"2022-07-08T13:40:44.658878Z","iopub.status.idle":"2022-07-08T13:40:44.685850Z","shell.execute_reply.started":"2022-07-08T13:40:44.658832Z","shell.execute_reply":"2022-07-08T13:40:44.684981Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = X.join(new_tickets_df)","metadata":{"papermill":{"duration":0.039277,"end_time":"2022-07-08T11:04:52.316376","exception":false,"start_time":"2022-07-08T11:04:52.277099","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.687061Z","iopub.execute_input":"2022-07-08T13:40:44.687545Z","iopub.status.idle":"2022-07-08T13:40:44.694439Z","shell.execute_reply.started":"2022-07-08T13:40:44.687516Z","shell.execute_reply":"2022-07-08T13:40:44.693189Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X","metadata":{"papermill":{"duration":0.055201,"end_time":"2022-07-08T11:04:52.394299","exception":false,"start_time":"2022-07-08T11:04:52.339098","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.696177Z","iopub.execute_input":"2022-07-08T13:40:44.697432Z","iopub.status.idle":"2022-07-08T13:40:44.727840Z","shell.execute_reply.started":"2022-07-08T13:40:44.697394Z","shell.execute_reply":"2022-07-08T13:40:44.726911Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Creating `Total_members` by counting total from `SibSp` and `Parch`","metadata":{"papermill":{"duration":0.023423,"end_time":"2022-07-08T11:04:52.440488","exception":false,"start_time":"2022-07-08T11:04:52.417065","status":"completed"},"tags":[]}},{"cell_type":"code","source":"X[\"Total_members\"] = X[[\"SibSp\", \"Parch\"]].sum(axis=1)","metadata":{"papermill":{"duration":0.035253,"end_time":"2022-07-08T11:04:52.498519","exception":false,"start_time":"2022-07-08T11:04:52.463266","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.729122Z","iopub.execute_input":"2022-07-08T13:40:44.730151Z","iopub.status.idle":"2022-07-08T13:40:44.740182Z","shell.execute_reply.started":"2022-07-08T13:40:44.730114Z","shell.execute_reply":"2022-07-08T13:40:44.739148Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X","metadata":{"papermill":{"duration":0.057165,"end_time":"2022-07-08T11:04:52.578189","exception":false,"start_time":"2022-07-08T11:04:52.521024","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.741643Z","iopub.execute_input":"2022-07-08T13:40:44.742477Z","iopub.status.idle":"2022-07-08T13:40:44.777015Z","shell.execute_reply.started":"2022-07-08T13:40:44.742442Z","shell.execute_reply":"2022-07-08T13:40:44.776035Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"num_to_float_cols = [\"Pclass\", \"Age\", \"SibSp\", \"Parch\", \"Total_members\"]\nX[num_to_float_cols] = X[num_to_float_cols].astype(int)","metadata":{"papermill":{"duration":0.035812,"end_time":"2022-07-08T11:04:52.637508","exception":false,"start_time":"2022-07-08T11:04:52.601696","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.778267Z","iopub.execute_input":"2022-07-08T13:40:44.779328Z","iopub.status.idle":"2022-07-08T13:40:44.789469Z","shell.execute_reply.started":"2022-07-08T13:40:44.779291Z","shell.execute_reply":"2022-07-08T13:40:44.788085Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X","metadata":{"papermill":{"duration":0.051829,"end_time":"2022-07-08T11:04:52.712506","exception":false,"start_time":"2022-07-08T11:04:52.660677","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.791238Z","iopub.execute_input":"2022-07-08T13:40:44.791928Z","iopub.status.idle":"2022-07-08T13:40:44.818993Z","shell.execute_reply.started":"2022-07-08T13:40:44.791893Z","shell.execute_reply":"2022-07-08T13:40:44.817754Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"mi_scores","metadata":{"papermill":{"duration":0.036087,"end_time":"2022-07-08T11:04:52.771936","exception":false,"start_time":"2022-07-08T11:04:52.735849","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.820484Z","iopub.execute_input":"2022-07-08T13:40:44.821487Z","iopub.status.idle":"2022-07-08T13:40:44.833657Z","shell.execute_reply.started":"2022-07-08T13:40:44.821444Z","shell.execute_reply":"2022-07-08T13:40:44.832267Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Creating `PclassRatio` from count of each `Pclass`","metadata":{"papermill":{"duration":0.02396,"end_time":"2022-07-08T11:04:52.819846","exception":false,"start_time":"2022-07-08T11:04:52.795886","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def create_pclass_ratios(data):\n    raw_pclassratio = pd.DataFrame(\n        round(\n              (data.groupby(\"Pclass\")[\"Pclass\"].agg(\"count\") / data.Pclass.count()) * 100, \n              2)\n        )\n    raw_pclassratio.rename(columns={\"Pclass\": \"PclassRatio\"}, inplace=True)\n    \n    pclass_ratios = []\n    for i in data[\"Pclass\"]:\n        pclass_ratios.append(raw_pclassratio.loc[i, \"PclassRatio\"])\n    return pclass_ratios","metadata":{"papermill":{"duration":0.034862,"end_time":"2022-07-08T11:04:52.878745","exception":false,"start_time":"2022-07-08T11:04:52.843883","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.835537Z","iopub.execute_input":"2022-07-08T13:40:44.837884Z","iopub.status.idle":"2022-07-08T13:40:44.845844Z","shell.execute_reply.started":"2022-07-08T13:40:44.837810Z","shell.execute_reply":"2022-07-08T13:40:44.844889Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X[\"PclassRatio\"] = create_pclass_ratios(X)\nX","metadata":{"papermill":{"duration":0.069496,"end_time":"2022-07-08T11:04:52.971856","exception":false,"start_time":"2022-07-08T11:04:52.902360","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.847068Z","iopub.execute_input":"2022-07-08T13:40:44.847684Z","iopub.status.idle":"2022-07-08T13:40:44.896949Z","shell.execute_reply.started":"2022-07-08T13:40:44.847609Z","shell.execute_reply":"2022-07-08T13:40:44.895759Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Creating `PclassAvgFare` column based on `Fare` as per `Pclass`","metadata":{"papermill":{"duration":0.02406,"end_time":"2022-07-08T11:04:53.020509","exception":false,"start_time":"2022-07-08T11:04:52.996449","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def create_avg_pclass_fares(data):\n    average_fares_pclass = pd.DataFrame(data.groupby(\"Pclass\")[\"Fare\"].mean())\n    average_fares_pclass\n\n    fares = []\n    for i in data[\"Pclass\"]:\n        fares.append(average_fares_pclass.loc[i, \"Fare\"])\n    return fares","metadata":{"papermill":{"duration":0.034453,"end_time":"2022-07-08T11:04:53.079368","exception":false,"start_time":"2022-07-08T11:04:53.044915","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.900567Z","iopub.execute_input":"2022-07-08T13:40:44.901311Z","iopub.status.idle":"2022-07-08T13:40:44.908464Z","shell.execute_reply.started":"2022-07-08T13:40:44.901237Z","shell.execute_reply":"2022-07-08T13:40:44.907257Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X[\"PclassAvgFare\"] = create_avg_pclass_fares(X)\nX","metadata":{"papermill":{"duration":0.074512,"end_time":"2022-07-08T11:04:53.178158","exception":false,"start_time":"2022-07-08T11:04:53.103646","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.910311Z","iopub.execute_input":"2022-07-08T13:40:44.911189Z","iopub.status.idle":"2022-07-08T13:40:44.958893Z","shell.execute_reply.started":"2022-07-08T13:40:44.911144Z","shell.execute_reply":"2022-07-08T13:40:44.957752Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Creating `TotalCabins` by counting no. of cabins in each row","metadata":{"papermill":{"duration":0.024417,"end_time":"2022-07-08T11:04:53.227822","exception":false,"start_time":"2022-07-08T11:04:53.203405","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def create_total_cabins(data):\n    index = data.index\n    total_cabins = [len(i.split(\" \")) for i in data[\"Cabin\"]]\n    return pd.Series(total_cabins, index=index, name=\"TotalCabins\")","metadata":{"papermill":{"duration":0.03413,"end_time":"2022-07-08T11:04:53.286486","exception":false,"start_time":"2022-07-08T11:04:53.252356","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.960507Z","iopub.execute_input":"2022-07-08T13:40:44.962292Z","iopub.status.idle":"2022-07-08T13:40:44.968058Z","shell.execute_reply.started":"2022-07-08T13:40:44.962257Z","shell.execute_reply":"2022-07-08T13:40:44.966842Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X[\"TotalCabins\"] = create_total_cabins(X)\nX","metadata":{"papermill":{"duration":0.059101,"end_time":"2022-07-08T11:04:53.370755","exception":false,"start_time":"2022-07-08T11:04:53.311654","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:44.969954Z","iopub.execute_input":"2022-07-08T13:40:44.970434Z","iopub.status.idle":"2022-07-08T13:40:45.010038Z","shell.execute_reply.started":"2022-07-08T13:40:44.970391Z","shell.execute_reply":"2022-07-08T13:40:45.008807Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Creating `SexRatio` based on `Sex`","metadata":{"papermill":{"duration":0.025679,"end_time":"2022-07-08T11:04:53.421737","exception":false,"start_time":"2022-07-08T11:04:53.396058","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def create_sex_ratio(data):\n    ratio = round((data.groupby(\"Sex\")[\"Sex\"].agg(\"count\") / len(data)) * 100, 2)\n    ratio_list = []\n    for i in data[\"Sex\"]:\n        ratio_list.append(ratio.loc[i])\n    return pd.DataFrame(ratio_list, index=data.index, columns=[\"SexRatio\"])","metadata":{"papermill":{"duration":0.036436,"end_time":"2022-07-08T11:04:53.483821","exception":false,"start_time":"2022-07-08T11:04:53.447385","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.011926Z","iopub.execute_input":"2022-07-08T13:40:45.012387Z","iopub.status.idle":"2022-07-08T13:40:45.019940Z","shell.execute_reply.started":"2022-07-08T13:40:45.012343Z","shell.execute_reply":"2022-07-08T13:40:45.018554Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = X.join(create_sex_ratio(X))\nX","metadata":{"papermill":{"duration":0.074716,"end_time":"2022-07-08T11:04:53.583547","exception":false,"start_time":"2022-07-08T11:04:53.508831","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.021209Z","iopub.execute_input":"2022-07-08T13:40:45.021526Z","iopub.status.idle":"2022-07-08T13:40:45.074155Z","shell.execute_reply.started":"2022-07-08T13:40:45.021498Z","shell.execute_reply":"2022-07-08T13:40:45.071632Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Creating `EmbarkedRatio` based on `Embarked location`","metadata":{"papermill":{"duration":0.025486,"end_time":"2022-07-08T11:04:53.634554","exception":false,"start_time":"2022-07-08T11:04:53.609068","status":"completed"},"tags":[]}},{"cell_type":"code","source":"X[\"Embarked\"].value_counts()","metadata":{"papermill":{"duration":0.03942,"end_time":"2022-07-08T11:04:53.699539","exception":false,"start_time":"2022-07-08T11:04:53.660119","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.075598Z","iopub.execute_input":"2022-07-08T13:40:45.075978Z","iopub.status.idle":"2022-07-08T13:40:45.085591Z","shell.execute_reply.started":"2022-07-08T13:40:45.075944Z","shell.execute_reply":"2022-07-08T13:40:45.084349Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def create_embarkment_ratio(data):\n    ratio = round((data.groupby(\"Embarked\")[\"Embarked\"].agg(\"count\") / len(data)) * 100, 2)\n    ratio_list = []\n    for i in data[\"Embarked\"]:\n        ratio_list.append(ratio.loc[i])\n    return pd.DataFrame(ratio_list, index=data.index, columns=[\"EmbarkedRatio\"])","metadata":{"papermill":{"duration":0.036883,"end_time":"2022-07-08T11:04:53.761999","exception":false,"start_time":"2022-07-08T11:04:53.725116","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.087166Z","iopub.execute_input":"2022-07-08T13:40:45.088181Z","iopub.status.idle":"2022-07-08T13:40:45.096975Z","shell.execute_reply.started":"2022-07-08T13:40:45.088135Z","shell.execute_reply":"2022-07-08T13:40:45.095783Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = X.join(create_embarkment_ratio(X))\nX","metadata":{"papermill":{"duration":0.078999,"end_time":"2022-07-08T11:04:53.868048","exception":false,"start_time":"2022-07-08T11:04:53.789049","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.098421Z","iopub.execute_input":"2022-07-08T13:40:45.098769Z","iopub.status.idle":"2022-07-08T13:40:45.150838Z","shell.execute_reply.started":"2022-07-08T13:40:45.098739Z","shell.execute_reply":"2022-07-08T13:40:45.149859Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### checking MI score again on new columns","metadata":{"papermill":{"duration":0.026789,"end_time":"2022-07-08T11:04:53.921959","exception":false,"start_time":"2022-07-08T11:04:53.895170","status":"completed"},"tags":[]}},{"cell_type":"code","source":"mi_scores = get_mi_score(X, Y)\nmi_scores","metadata":{"papermill":{"duration":0.092656,"end_time":"2022-07-08T11:04:54.041823","exception":false,"start_time":"2022-07-08T11:04:53.949167","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.152299Z","iopub.execute_input":"2022-07-08T13:40:45.152879Z","iopub.status.idle":"2022-07-08T13:40:45.213631Z","shell.execute_reply.started":"2022-07-08T13:40:45.152847Z","shell.execute_reply":"2022-07-08T13:40:45.212876Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Creating same features for our `test_data`","metadata":{"papermill":{"duration":0.026725,"end_time":"2022-07-08T11:04:54.096424","exception":false,"start_time":"2022-07-08T11:04:54.069699","status":"completed"},"tags":[]}},{"cell_type":"code","source":"test_data = test_data.join(split_tickets(test_data[\"Ticket\"]))","metadata":{"papermill":{"duration":0.03909,"end_time":"2022-07-08T11:04:54.162439","exception":false,"start_time":"2022-07-08T11:04:54.123349","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.214989Z","iopub.execute_input":"2022-07-08T13:40:45.215515Z","iopub.status.idle":"2022-07-08T13:40:45.224613Z","shell.execute_reply.started":"2022-07-08T13:40:45.215486Z","shell.execute_reply":"2022-07-08T13:40:45.223641Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data[\"PclassRatio\"] = create_pclass_ratios(test_data)\ntest_data[\"PclassAvgFare\"] = create_avg_pclass_fares(test_data)","metadata":{"papermill":{"duration":0.055127,"end_time":"2022-07-08T11:04:54.245086","exception":false,"start_time":"2022-07-08T11:04:54.189959","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.226324Z","iopub.execute_input":"2022-07-08T13:40:45.226959Z","iopub.status.idle":"2022-07-08T13:40:45.251069Z","shell.execute_reply.started":"2022-07-08T13:40:45.226927Z","shell.execute_reply":"2022-07-08T13:40:45.249996Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data[\"Total_members\"] = test_data[[\"SibSp\", \"Parch\"]].sum(axis=1)","metadata":{"papermill":{"duration":0.038158,"end_time":"2022-07-08T11:04:54.310892","exception":false,"start_time":"2022-07-08T11:04:54.272734","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.252589Z","iopub.execute_input":"2022-07-08T13:40:45.253177Z","iopub.status.idle":"2022-07-08T13:40:45.261027Z","shell.execute_reply.started":"2022-07-08T13:40:45.253142Z","shell.execute_reply":"2022-07-08T13:40:45.259875Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data[\"TotalCabins\"] = create_total_cabins(test_data)","metadata":{"papermill":{"duration":0.036508,"end_time":"2022-07-08T11:04:54.375304","exception":false,"start_time":"2022-07-08T11:04:54.338796","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.262919Z","iopub.execute_input":"2022-07-08T13:40:45.263423Z","iopub.status.idle":"2022-07-08T13:40:45.272877Z","shell.execute_reply.started":"2022-07-08T13:40:45.263387Z","shell.execute_reply":"2022-07-08T13:40:45.271632Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data = test_data.join(create_sex_ratio(test_data))","metadata":{"papermill":{"duration":0.045827,"end_time":"2022-07-08T11:04:54.448560","exception":false,"start_time":"2022-07-08T11:04:54.402733","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.274235Z","iopub.execute_input":"2022-07-08T13:40:45.275050Z","iopub.status.idle":"2022-07-08T13:40:45.292727Z","shell.execute_reply.started":"2022-07-08T13:40:45.275003Z","shell.execute_reply":"2022-07-08T13:40:45.291758Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data = test_data.join(create_embarkment_ratio(test_data))","metadata":{"papermill":{"duration":0.047471,"end_time":"2022-07-08T11:04:54.523422","exception":false,"start_time":"2022-07-08T11:04:54.475951","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.294306Z","iopub.execute_input":"2022-07-08T13:40:45.295954Z","iopub.status.idle":"2022-07-08T13:40:45.312972Z","shell.execute_reply.started":"2022-07-08T13:40:45.295752Z","shell.execute_reply":"2022-07-08T13:40:45.311579Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data.head()","metadata":{"papermill":{"duration":0.056307,"end_time":"2022-07-08T11:04:54.607574","exception":false,"start_time":"2022-07-08T11:04:54.551267","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.314324Z","iopub.execute_input":"2022-07-08T13:40:45.315111Z","iopub.status.idle":"2022-07-08T13:40:45.343695Z","shell.execute_reply.started":"2022-07-08T13:40:45.315071Z","shell.execute_reply":"2022-07-08T13:40:45.342665Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 7. Selecting useful features","metadata":{"papermill":{"duration":0.027604,"end_time":"2022-07-08T11:04:54.662596","exception":false,"start_time":"2022-07-08T11:04:54.634992","status":"completed"},"tags":[]}},{"cell_type":"code","source":"useful_features = mi_scores.index\nX = X[useful_features]\ntest_data = test_data[useful_features]\nuseful_features","metadata":{"papermill":{"duration":0.041102,"end_time":"2022-07-08T11:04:54.731580","exception":false,"start_time":"2022-07-08T11:04:54.690478","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:45.400318Z","iopub.execute_input":"2022-07-08T13:40:45.401432Z","iopub.status.idle":"2022-07-08T13:40:45.410715Z","shell.execute_reply.started":"2022-07-08T13:40:45.401380Z","shell.execute_reply":"2022-07-08T13:40:45.409980Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 8. Extracting numerical and categorical columns","metadata":{"papermill":{"duration":0.02752,"end_time":"2022-07-08T11:04:54.788268","exception":false,"start_time":"2022-07-08T11:04:54.760748","status":"completed"},"tags":[]}},{"cell_type":"code","source":"num_cols = X.select_dtypes(exclude=\"object\").columns\ncat_cols = X.select_dtypes(\"object\").columns\nnum_cols, cat_cols","metadata":{"papermill":{"duration":0.041628,"end_time":"2022-07-08T11:04:54.858412","exception":false,"start_time":"2022-07-08T11:04:54.816784","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:49.205252Z","iopub.execute_input":"2022-07-08T13:40:49.205685Z","iopub.status.idle":"2022-07-08T13:40:49.217021Z","shell.execute_reply.started":"2022-07-08T13:40:49.205651Z","shell.execute_reply":"2022-07-08T13:40:49.215707Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 9. Making Pipeline","metadata":{"papermill":{"duration":0.028171,"end_time":"2022-07-08T11:04:54.915132","exception":false,"start_time":"2022-07-08T11:04:54.886961","status":"completed"},"tags":[]}},{"cell_type":"code","source":"class CreatePipeline:\n    \"\"\"Create Pipeline\n    methods:\n        pipeline: Create Final Pipeline\n        \n        create_model: Create the provided model\n        \n        numerical_transformer: Transform numerical cols\n        \n        categorical_transformer: Transform categorical cols \\\n        OneHotEncoding / OrdinalEncoding\n        \n        data_preprocessor: Preprocess the data using ColumnTransformer     \n        \"\"\"\n    \n    def pipeline(self, *, preprocessor, model, verbose=False):\n        \"\"\"Creates pipeline\n        params:\n            preprocessor\n            model\n        \"\"\"\n        steps = [(\"preprocessor\", preprocessor),\n                 (\"model\", model)]\n        return Pipeline(steps=steps, verbose=verbose)\n    \n    \n    def numerical_transformer(self, *, strategy=\"mean\", **params):\n        \"\"\"Transform numerical columns using `SimpleImputer`.\n        params:\n            strategy: \"mean\" | \"median\" | \"most_frequent\" | \"constant\"\n            **params: extra keyword args for SimpleImputer\"\"\"\n        \n        transformer = SimpleImputer(strategy=strategy, **params)\n        return transformer\n\n    \n    def categorical_transformer(self, *, \n                                imp_strategy=\"most_frequent\", \n                                encoder_type=\"Ordinal\", \n                                imp_params={}, encoder_params={}):\n        \"\"\"Transform categorical columns by making Pipeline\n        `SimpleImputer` | `OneHotEncoder` | `OrdinalEncoder`.\n        args:\n            imp_strategy: strategy for imputer values can be\n                \"most_frequent\" | \"constant\"\n            encoder_type: encoder type,\n                \"Ordinal\" | \"OneHot\"\n        kwargs:\n            imp_params: keyword args for `SimpleImputer`.\n            encoder_params: keyword args for encoder.`\n        \"\"\"\n        if not encoder_type in (\"Ordinal\", \"OneHot\"):\n            raise ValueError(f\"Inappropriate value for encoder_type passed: {encoder_type}\\\n            Takes one of 'Ordinal' | 'OneHot'.\")\n        \n        encoder = OrdinalEncoder if encoder_type==\"Ordinal\" else OneHotEncoder\n        transformer = Pipeline(steps=[\n            (\"imputer\", SimpleImputer(strategy=imp_strategy, **imp_params)),\n            (encoder_type, encoder(**encoder_params))\n        ])\n        return transformer\n    \n    \n    def data_preprocessor(self, *, transformers):\n        \"\"\"Preprocess the data using `ColumnTransformer`.\n        Pass extact list of transformers\n        to be passed in `ColumnTransformer`.\n        each tuple consist of: (transformer_name,\n                                transformer,\n                                list_of_columns).\"\"\"\n        preprocessor = ColumnTransformer(transformers=transformers)\n        return preprocessor\n    \n    \n    def create_model(self, *, model, random_state=0, n_estimators=1000, **kwargs):\n        \"\"\"Creates the model.\n        **kwargs: keyword args for model.\"\"\"\n        my_model = model(random_state=random_state, n_estimators=n_estimators, **kwargs)\n        return my_model","metadata":{"papermill":{"duration":0.045795,"end_time":"2022-07-08T11:04:54.988445","exception":false,"start_time":"2022-07-08T11:04:54.942650","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:49.842111Z","iopub.execute_input":"2022-07-08T13:40:49.842739Z","iopub.status.idle":"2022-07-08T13:40:49.855613Z","shell.execute_reply.started":"2022-07-08T13:40:49.842704Z","shell.execute_reply":"2022-07-08T13:40:49.854821Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cp = CreatePipeline()\nnum_transformer = cp.numerical_transformer(strategy=\"median\")\ncat_transformer = cp.categorical_transformer(encoder_type=\"OneHot\", encoder_params={\"handle_unknown\": \"ignore\"})\npreprocessor = cp.data_preprocessor(\n                    transformers=[(\"num\", num_transformer, num_cols),\n                                  (\"cat\", cat_transformer, cat_cols)\n                                 ])","metadata":{"papermill":{"duration":0.03756,"end_time":"2022-07-08T11:04:55.053613","exception":false,"start_time":"2022-07-08T11:04:55.016053","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:50.154780Z","iopub.execute_input":"2022-07-08T13:40:50.155758Z","iopub.status.idle":"2022-07-08T13:40:50.161757Z","shell.execute_reply.started":"2022-07-08T13:40:50.155719Z","shell.execute_reply":"2022-07-08T13:40:50.160716Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 10. Doing hyperparameter tuning with cross-validation (`RandomForestClassifier`)","metadata":{"papermill":{"duration":0.027158,"end_time":"2022-07-08T11:04:55.107597","exception":false,"start_time":"2022-07-08T11:04:55.080439","status":"completed"},"tags":[]}},{"cell_type":"code","source":"n_estimators = [350, 500, 750, 1000]\nmax_depths = [5, 10, 20]\nmaes = {}\ni = 0\nfor n in n_estimators:\n    for md in max_depths:\n        i += 1\n        model = cp.create_model(model=RandomForestClassifier, n_estimators=n, max_depth=md)\n        pipeline = cp.pipeline(preprocessor=preprocessor, model=model)\n        scores = -1 * cross_val_score(pipeline, X, Y, cv=10, verbose=True,\n                                scoring=\"neg_mean_absolute_error\")\n        mae = scores.mean()\n        maes[i] = [n, md, mae]","metadata":{"papermill":{"duration":491.071584,"end_time":"2022-07-08T11:13:06.205914","exception":false,"start_time":"2022-07-08T11:04:55.134330","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:40:51.261680Z","iopub.execute_input":"2022-07-08T13:40:51.262345Z","iopub.status.idle":"2022-07-08T13:43:49.975994Z","shell.execute_reply.started":"2022-07-08T13:40:51.262283Z","shell.execute_reply":"2022-07-08T13:43:49.974833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 11. Checking MAE scores","metadata":{"papermill":{"duration":0.03038,"end_time":"2022-07-08T11:13:06.267582","exception":false,"start_time":"2022-07-08T11:13:06.237202","status":"completed"},"tags":[]}},{"cell_type":"code","source":"for i in maes:\n    n, md, mae = maes[i]\n    print(f\"{i}.\\tN_estimators: {n}\\tmax_depth: {md}\\tMAE: {mae}\")","metadata":{"papermill":{"duration":0.03957,"end_time":"2022-07-08T11:13:06.337401","exception":false,"start_time":"2022-07-08T11:13:06.297831","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:43:49.977870Z","iopub.execute_input":"2022-07-08T13:43:49.978197Z","iopub.status.idle":"2022-07-08T13:43:49.986893Z","shell.execute_reply.started":"2022-07-08T13:43:49.978168Z","shell.execute_reply":"2022-07-08T13:43:49.985974Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"min(maes, key=lambda x: maes[x][2])","metadata":{"papermill":{"duration":0.041101,"end_time":"2022-07-08T11:13:06.407890","exception":false,"start_time":"2022-07-08T11:13:06.366789","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:44:04.609119Z","iopub.execute_input":"2022-07-08T13:44:04.609506Z","iopub.status.idle":"2022-07-08T13:44:04.618303Z","shell.execute_reply.started":"2022-07-08T13:44:04.609476Z","shell.execute_reply":"2022-07-08T13:44:04.616801Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 12. Selecting best parameters\n#### `n_estimators: 1000`\n#### `max_depth: 20`\n#### `MAE: 0.1695131086142322`","metadata":{"papermill":{"duration":0.029401,"end_time":"2022-07-08T11:13:06.466897","exception":false,"start_time":"2022-07-08T11:13:06.437496","status":"completed"},"tags":[]}},{"cell_type":"code","source":"best_n_estimators = 1000\nbest_max_depth = 20","metadata":{"papermill":{"duration":0.038797,"end_time":"2022-07-08T11:13:06.535521","exception":false,"start_time":"2022-07-08T11:13:06.496724","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:45:25.870975Z","iopub.execute_input":"2022-07-08T13:45:25.871395Z","iopub.status.idle":"2022-07-08T13:45:25.876731Z","shell.execute_reply.started":"2022-07-08T13:45:25.871358Z","shell.execute_reply":"2022-07-08T13:45:25.875412Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 13. Training model on best parameters","metadata":{"papermill":{"duration":0.028683,"end_time":"2022-07-08T11:13:06.593828","exception":false,"start_time":"2022-07-08T11:13:06.565145","status":"completed"},"tags":[]}},{"cell_type":"code","source":"model = cp.create_model(model=RandomForestClassifier, n_estimators=best_n_estimators, max_depth=best_max_depth)\npipeline = cp.pipeline(preprocessor=preprocessor, model=model)\npipeline.fit(X, Y)","metadata":{"papermill":{"duration":3.063424,"end_time":"2022-07-08T11:13:09.687586","exception":false,"start_time":"2022-07-08T11:13:06.624162","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:45:26.496758Z","iopub.execute_input":"2022-07-08T13:45:26.497379Z","iopub.status.idle":"2022-07-08T13:45:29.099953Z","shell.execute_reply.started":"2022-07-08T13:45:26.497335Z","shell.execute_reply":"2022-07-08T13:45:29.098857Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 14. Predicting `Survived` on `test_data`","metadata":{"papermill":{"duration":0.028039,"end_time":"2022-07-08T11:13:09.744264","exception":false,"start_time":"2022-07-08T11:13:09.716225","status":"completed"},"tags":[]}},{"cell_type":"code","source":"test_preds = pipeline.predict(test_data)\ntest_preds","metadata":{"papermill":{"duration":0.066033,"end_time":"2022-07-08T11:13:09.838595","exception":false,"start_time":"2022-07-08T11:13:09.772562","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:45:30.784449Z","iopub.execute_input":"2022-07-08T13:45:30.785167Z","iopub.status.idle":"2022-07-08T13:45:30.998357Z","shell.execute_reply.started":"2022-07-08T13:45:30.785132Z","shell.execute_reply":"2022-07-08T13:45:30.996870Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 15. Submitting predictions","metadata":{"papermill":{"duration":0.028379,"end_time":"2022-07-08T11:13:09.897147","exception":false,"start_time":"2022-07-08T11:13:09.868768","status":"completed"},"tags":[]}},{"cell_type":"code","source":"output = pd.DataFrame({\"PassengerId\": test_data.index, \"Survived\": test_preds})\noutput.to_csv(\"./submission_10.csv\", index=False)","metadata":{"papermill":{"duration":0.044099,"end_time":"2022-07-08T11:13:09.969865","exception":false,"start_time":"2022-07-08T11:13:09.925766","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-07-08T13:45:32.739679Z","iopub.execute_input":"2022-07-08T13:45:32.740115Z","iopub.status.idle":"2022-07-08T13:45:32.751572Z","shell.execute_reply.started":"2022-07-08T13:45:32.740079Z","shell.execute_reply":"2022-07-08T13:45:32.750403Z"},"trusted":true},"execution_count":null,"outputs":[]}]}