{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":84896,"databundleVersionId":10305135,"sourceType":"competition"}],"dockerImageVersionId":30786,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"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\nimport matplotlib.pyplot as plt\npd.set_option('display.max_columns',50)\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","trusted":true,"execution":{"iopub.status.busy":"2024-12-02T23:56:39.936606Z","iopub.execute_input":"2024-12-02T23:56:39.937419Z","iopub.status.idle":"2024-12-02T23:56:41.041366Z","shell.execute_reply.started":"2024-12-02T23:56:39.937374Z","shell.execute_reply":"2024-12-02T23:56:41.040114Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train = pd.read_csv('/kaggle/input/playground-series-s4e12/train.csv')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T02:26:40.720597Z","iopub.execute_input":"2024-12-03T02:26:40.721008Z","iopub.status.idle":"2024-12-03T02:26:45.099887Z","shell.execute_reply.started":"2024-12-03T02:26:40.720976Z","shell.execute_reply":"2024-12-03T02:26:45.09897Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# First look at the data","metadata":{}},{"cell_type":"code","source":"data_train.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T10:39:47.485301Z","iopub.execute_input":"2024-12-02T10:39:47.485864Z","iopub.status.idle":"2024-12-02T10:39:47.495508Z","shell.execute_reply.started":"2024-12-02T10:39:47.485806Z","shell.execute_reply":"2024-12-02T10:39:47.494078Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T09:03:18.165622Z","iopub.execute_input":"2024-12-02T09:03:18.167138Z","iopub.status.idle":"2024-12-02T09:03:18.195543Z","shell.execute_reply.started":"2024-12-02T09:03:18.167087Z","shell.execute_reply":"2024-12-02T09:03:18.194424Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train.dtypes","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T09:03:21.798125Z","iopub.execute_input":"2024-12-02T09:03:21.798506Z","iopub.status.idle":"2024-12-02T09:03:21.807375Z","shell.execute_reply.started":"2024-12-02T09:03:21.79847Z","shell.execute_reply":"2024-12-02T09:03:21.806193Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train.describe()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T09:03:25.295437Z","iopub.execute_input":"2024-12-02T09:03:25.295843Z","iopub.status.idle":"2024-12-02T09:03:26.023642Z","shell.execute_reply.started":"2024-12-02T09:03:25.295803Z","shell.execute_reply":"2024-12-02T09:03:26.02249Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#checking the categoricals\nfor i in data_train.columns:\n    if data_train[i].dtypes == 'object':\n        print(data_train[i].value_counts())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T07:08:52.541713Z","iopub.execute_input":"2024-12-02T07:08:52.542097Z","iopub.status.idle":"2024-12-02T07:08:54.032486Z","shell.execute_reply.started":"2024-12-02T07:08:52.542063Z","shell.execute_reply":"2024-12-02T07:08:54.031273Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train.isnull().sum()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T11:52:15.823735Z","iopub.execute_input":"2024-12-02T11:52:15.824199Z","iopub.status.idle":"2024-12-02T11:52:16.520182Z","shell.execute_reply.started":"2024-12-02T11:52:15.824163Z","shell.execute_reply":"2024-12-02T11:52:16.518078Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Its plottin time","metadata":{}},{"cell_type":"code","source":"fig, axes = plt.subplots(2, 3, figsize = (10, 5))\naxes[0][0].hist(data_train['Age'], bins = 20)\naxes[0][0].set_title('Age')\naxes[0][1].hist(data_train['Annual Income'], bins = 20)\naxes[0][1].set_title('Annual Income')\naxes[0][2].hist(data_train['Health Score'], bins = 20)\naxes[0][2].set_title('Health Score')\naxes[1][0].hist(data_train['Credit Score'], bins = 20)\naxes[1][0].set_title('Credit Score')\naxes[1][1].hist(data_train['Premium Amount'], bins = 20)\naxes[1][1].set_title('Premium Amount')\nfig.subplots_adjust(hspace=0.5, wspace=0.5)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T09:36:16.264775Z","iopub.execute_input":"2024-12-02T09:36:16.2652Z","iopub.status.idle":"2024-12-02T09:36:17.458815Z","shell.execute_reply.started":"2024-12-02T09:36:16.265161Z","shell.execute_reply":"2024-12-02T09:36:17.457363Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#categorical and discrete\nfig, axes = plt.subplots(2, 3, figsize = (10, 5))\ndf_gender = data_train['Gender'].value_counts()\naxes[0][0].bar(df_gender.index, df_gender.values)\naxes[0][0].set_title('Gender')\ndf_marital = data_train['Marital Status'].value_counts()\naxes[0][1].bar(df_marital.index, df_marital.values)\naxes[0][1].set_title('Marital Status')\ndf_dependent = data_train['Number of Dependents'].value_counts()\naxes[0][2].bar(df_dependent.index, df_dependent.values)\naxes[0][2].set_title('Number of Dependents')\ndf_education = data_train['Education Level'].value_counts()\naxes[1][0].bar(df_education.index, df_education.values)\naxes[1][0].set_title('Education Level')\naxes[1][0].set_xticks(range(len(df_education.index)))\naxes[1][0].set_xticklabels(df_education.index, rotation=90, ha='right')\ndf_occupation = data_train['Occupation'].value_counts()\naxes[1][1].bar(df_occupation.index, df_occupation.values)\naxes[1][1].set_title('Occupation')\naxes[1][1].set_xticks(range(len(df_occupation.index)))\naxes[1][1].set_xticklabels(df_occupation.index, rotation=90, ha='right')\ndf_location = data_train['Location'].value_counts()\naxes[1][2].bar(df_location.index, df_location.values)\naxes[1][2].set_title('Location')\naxes[1][2].set_xticks(range(len(df_location.index)))\naxes[1][2].set_xticklabels(df_location.index, rotation=90, ha='right')\nfig.subplots_adjust(hspace=0.5, wspace=0.5)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T10:52:17.899339Z","iopub.execute_input":"2024-12-02T10:52:17.899782Z","iopub.status.idle":"2024-12-02T10:52:19.298292Z","shell.execute_reply.started":"2024-12-02T10:52:17.899744Z","shell.execute_reply":"2024-12-02T10:52:19.296841Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#part 2\nfig, axes = plt.subplots(2, 3, figsize = (10, 5))\ndf_smoke = data_train['Smoking Status'].value_counts()\naxes[0][0].bar(df_smoke.index, df_smoke.values)\naxes[0][0].set_title('Smoking Status')\ndf_claim = data_train['Previous Claims'].value_counts()\naxes[0][1].bar(df_claim.index, df_claim.values)\naxes[0][1].set_title('Previous Claim')\ndf_vehicle = data_train['Vehicle Age'].value_counts()\naxes[0][2].bar(df_vehicle.index, df_vehicle.values)\naxes[0][2].set_title('Vehicle Age')\ndf_insurance = data_train['Insurance Duration'].value_counts()\naxes[1][0].bar(df_insurance.index, df_insurance.values)\naxes[1][0].set_title('Insurance Duration')\ndf_feedback = data_train['Customer Feedback'].value_counts()\naxes[1][1].bar(df_feedback.index, df_feedback.values)\naxes[1][1].set_title('Customer Feedback')\naxes[1][1].set_xticks(range(len(df_feedback.index)))\naxes[1][1].set_xticklabels(df_feedback.index, rotation=90, ha='right')\ndf_policy = data_train['Policy Type'].value_counts()\naxes[1][2].bar(df_policy.index, df_policy.values)\naxes[1][2].set_title('Policy Type')\naxes[1][2].set_xticks(range(len(df_policy.index)))\naxes[1][2].set_xticklabels(df_policy.index, rotation=90, ha='right')\nfig.subplots_adjust(hspace=0.5, wspace=0.5)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T11:09:17.539563Z","iopub.execute_input":"2024-12-02T11:09:17.540881Z","iopub.status.idle":"2024-12-02T11:09:18.779406Z","shell.execute_reply.started":"2024-12-02T11:09:17.540809Z","shell.execute_reply":"2024-12-02T11:09:18.77815Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#part 3\nfig, axes = plt.subplots(1, 2, figsize = (10, 5))\ndf_exercise = data_train['Exercise Frequency'].value_counts()\naxes[0].bar(df_exercise.index, df_exercise.values)\naxes[0].set_title('Exercise Frequency')\ndf_property = data_train['Property Type'].value_counts()\naxes[1].bar(df_property.index, df_property.values)\naxes[1].set_title('Property Type')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-02T11:17:13.26894Z","iopub.execute_input":"2024-12-02T11:17:13.269541Z","iopub.status.idle":"2024-12-02T11:17:13.92123Z","shell.execute_reply.started":"2024-12-02T11:17:13.269479Z","shell.execute_reply":"2024-12-02T11:17:13.919593Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Data Preprocessing","metadata":{}},{"cell_type":"code","source":"from sklearn.preprocessing import LabelEncoder\n#act_encoder.fit(df_)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T00:04:08.750354Z","iopub.execute_input":"2024-12-03T00:04:08.751037Z","iopub.status.idle":"2024-12-03T00:04:08.756369Z","shell.execute_reply.started":"2024-12-03T00:04:08.75099Z","shell.execute_reply":"2024-12-03T00:04:08.755148Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#feature engineering time\ndef datetime_feature(data):\n    date_time = pd.to_datetime(data['Policy Start Date'])\n    data['year'] = date_time.dt.year\n    data['month'] = date_time.dt.month\n    data['day'] = date_time.dt.day\n    data['month_sin'] = np.sin(2 * np.pi * data['month'] / 12)\n    data['month_cos'] = np.cos(2 * np.pi * data['month'] / 12)\n    data['day_sin'] = np.sin(2 * np.pi * data['day'] / 31)\n    data['day_cos'] = np.cos(2 * np.pi * data['day'] / 31)\n    data.drop(columns=['Policy Start Date', 'month', 'day'], axis=1, inplace=True)\n    return data","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T04:00:39.123975Z","iopub.execute_input":"2024-12-03T04:00:39.124372Z","iopub.status.idle":"2024-12-03T04:00:39.13103Z","shell.execute_reply.started":"2024-12-03T04:00:39.12434Z","shell.execute_reply":"2024-12-03T04:00:39.129943Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"gender_encoder = LabelEncoder()\ngender_encoder.fit(data_train['Gender'])\nmarital_encoder = LabelEncoder()\nmarital_encoder.fit(data_train['Marital Status'])\neducation_encoder = LabelEncoder()\neducation_encoder.fit(data_train['Education Level'])\noccupation_encoder = LabelEncoder()\noccupation_encoder.fit(data_train['Occupation'])\nlocation_encoder = LabelEncoder()\nlocation_encoder.fit(data_train['Location'])\nsmoking_encoder = LabelEncoder()\nsmoking_encoder.fit(data_train['Smoking Status'])\nfeedback_encoder = LabelEncoder()\nfeedback_encoder.fit(data_train['Customer Feedback'])\npolicy_encoder = LabelEncoder()\npolicy_encoder.fit(data_train['Policy Type'])\nexercise_encoder = LabelEncoder()\nexercise_encoder.fit(data_train['Exercise Frequency'])\nproperty_encoder = LabelEncoder()\nproperty_encoder.fit_transform(data_train['Property Type'])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T02:27:08.934143Z","iopub.execute_input":"2024-12-03T02:27:08.934555Z","iopub.status.idle":"2024-12-03T02:27:09.543683Z","shell.execute_reply.started":"2024-12-03T02:27:08.93452Z","shell.execute_reply":"2024-12-03T02:27:09.542476Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#encode the columns\ndata_train['Gender'] = gender_encoder.fit_transform(data_train['Gender'])\ndata_train['Marital Status'] = marital_encoder.fit_transform(data_train['Marital Status'])\ndata_train['Education Level'] = education_encoder.fit_transform(data_train['Education Level'])\ndata_train['Occupation'] = occupation_encoder.fit_transform(data_train['Occupation'])\ndata_train['Location'] = location_encoder.fit_transform(data_train['Location'])\ndata_train['Smoking Status'] = smoking_encoder.fit_transform(data_train['Smoking Status'])\ndata_train['Customer Feedback'] = feedback_encoder.fit_transform(data_train['Customer Feedback'])\ndata_train['Policy Type'] = policy_encoder.fit_transform(data_train['Policy Type'])\ndata_train['Exercise Frequency'] = exercise_encoder.fit_transform(data_train['Exercise Frequency'])\ndata_train['Property Type'] = property_encoder.fit_transform(data_train['Property Type'])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T02:27:12.772853Z","iopub.execute_input":"2024-12-03T02:27:12.773319Z","iopub.status.idle":"2024-12-03T02:27:15.135788Z","shell.execute_reply.started":"2024-12-03T02:27:12.773284Z","shell.execute_reply":"2024-12-03T02:27:15.134884Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train = datetime_feature(data_train)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T02:27:16.946857Z","iopub.execute_input":"2024-12-03T02:27:16.947282Z","iopub.status.idle":"2024-12-03T02:27:17.864833Z","shell.execute_reply.started":"2024-12-03T02:27:16.947244Z","shell.execute_reply":"2024-12-03T02:27:17.863642Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T02:27:19.7422Z","iopub.execute_input":"2024-12-03T02:27:19.742573Z","iopub.status.idle":"2024-12-03T02:27:19.767074Z","shell.execute_reply.started":"2024-12-03T02:27:19.742542Z","shell.execute_reply":"2024-12-03T02:27:19.766004Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"cat_cols = ['Gender', 'Marital Status', 'Education Level', 'Occupation',\n       'Location', 'Policy Type', 'Smoking Status', 'Exercise Frequency', 'Property Type', 'Customer Feedback']","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T01:03:15.718629Z","iopub.execute_input":"2024-12-03T01:03:15.718993Z","iopub.status.idle":"2024-12-03T01:03:15.723878Z","shell.execute_reply.started":"2024-12-03T01:03:15.718962Z","shell.execute_reply":"2024-12-03T01:03:15.722682Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def cat_filler(data, cat_cols):\n    for i in cat_cols:\n        data[i] = data[i].fillna('None')\n        data[i] = data[i].astype('category')\n    return data","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T01:03:21.714285Z","iopub.execute_input":"2024-12-03T01:03:21.715073Z","iopub.status.idle":"2024-12-03T01:03:21.720036Z","shell.execute_reply.started":"2024-12-03T01:03:21.715036Z","shell.execute_reply":"2024-12-03T01:03:21.718731Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train = cat_filler(data_train, cat_cols)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T01:03:23.657455Z","iopub.execute_input":"2024-12-03T01:03:23.657855Z","iopub.status.idle":"2024-12-03T01:03:25.114654Z","shell.execute_reply.started":"2024-12-03T01:03:23.657819Z","shell.execute_reply":"2024-12-03T01:03:25.113872Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_train.isnull().sum()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T01:03:38.709023Z","iopub.execute_input":"2024-12-03T01:03:38.70949Z","iopub.status.idle":"2024-12-03T01:03:38.764454Z","shell.execute_reply.started":"2024-12-03T01:03:38.709455Z","shell.execute_reply":"2024-12-03T01:03:38.763245Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Modelling","metadata":{}},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split, KFold\ny = data_train['Premium Amount']\nX = data_train.drop(columns=['id', 'Premium Amount'], axis=1)\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T02:27:29.638708Z","iopub.execute_input":"2024-12-03T02:27:29.639136Z","iopub.status.idle":"2024-12-03T02:27:30.153504Z","shell.execute_reply.started":"2024-12-03T02:27:29.639084Z","shell.execute_reply":"2024-12-03T02:27:30.15227Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X_train.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T02:27:31.841086Z","iopub.execute_input":"2024-12-03T02:27:31.841507Z","iopub.status.idle":"2024-12-03T02:27:31.862931Z","shell.execute_reply.started":"2024-12-03T02:27:31.841471Z","shell.execute_reply":"2024-12-03T02:27:31.86178Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import optuna\nfrom sklearn.metrics import mean_squared_log_error\nfrom catboost import CatBoostRegressor\n\nkf = KFold(n_splits = 5, shuffle = True, random_state = 1)\ndef objective(trial):\n    params = {\n        'iterations': trial.suggest_int('iterations', 100, 1000),\n        'depth': trial.suggest_int('depth', 4, 10),\n        'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.2, log=True),\n        'l2_leaf_reg': trial.suggest_float('l2_leaf_reg', 1, 10),\n        'random_seed': 1,\n        'loss_function': 'RMSE',\n        #'cat_features': cat_cols\n    }\n    cv_scores = []\n    for train_index, valid_index in kf.split(X_train):\n        X_train_cv, X_valid = X_train.iloc[train_index], X_train.iloc[valid_index]\n        y_train_cv, y_valid = y_train.iloc[train_index], y_train.iloc[valid_index]\n        \n        model = CatBoostRegressor(**params)\n        model.fit(X_train_cv, y_train_cv, eval_set=(X_valid, y_valid), early_stopping_rounds=10, verbose=False)\n        \n        preds = model.predict(X_valid)\n        score = mean_squared_log_error(y_valid, np.maximum(preds, 0))\n        cv_scores.append(score)\n    return np.mean(cv_scores)\n\nstudy = optuna.create_study(direction='minimize')\nstudy.optimize(objective, n_trials=10)\n\nprint(\"Best Parameters:\", study.best_params)\nprint(\"Best RMSLE:\", study.best_value)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T03:12:52.072216Z","iopub.execute_input":"2024-12-03T03:12:52.072692Z","iopub.status.idle":"2024-12-03T03:46:52.759336Z","shell.execute_reply.started":"2024-12-03T03:12:52.072654Z","shell.execute_reply":"2024-12-03T03:46:52.758264Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#train the whole stuffs\nbest_param = {'iterations': 891, 'depth': 7, 'learning_rate': 0.03461813133580764, 'l2_leaf_reg': 9.152963832701639}\nmodel = CatBoostRegressor(**best_param)\nmodel.fit(X_train, y_train, verbose = False)\npreds = model.predict(X_test)\nscore = mean_squared_log_error(y_test, np.maximum(preds, 0))\nprint(score)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T03:56:03.022303Z","iopub.execute_input":"2024-12-03T03:56:03.022913Z","iopub.status.idle":"2024-12-03T03:57:26.330286Z","shell.execute_reply.started":"2024-12-03T03:56:03.022877Z","shell.execute_reply":"2024-12-03T03:57:26.329239Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#\ndata_test = pd.read_csv('/kaggle/input/playground-series-s4e12/test.csv')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T03:58:48.645995Z","iopub.execute_input":"2024-12-03T03:58:48.646765Z","iopub.status.idle":"2024-12-03T03:58:51.335501Z","shell.execute_reply.started":"2024-12-03T03:58:48.64671Z","shell.execute_reply":"2024-12-03T03:58:51.334289Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#preprocess the whole stuffs\ndata_test['Gender'] = gender_encoder.fit_transform(data_test['Gender'])\ndata_test['Marital Status'] = marital_encoder.fit_transform(data_test['Marital Status'])\ndata_test['Education Level'] = education_encoder.fit_transform(data_test['Education Level'])\ndata_test['Occupation'] = occupation_encoder.fit_transform(data_test['Occupation'])\ndata_test['Location'] = location_encoder.fit_transform(data_test['Location'])\ndata_test['Smoking Status'] = smoking_encoder.fit_transform(data_test['Smoking Status'])\ndata_test['Customer Feedback'] = feedback_encoder.fit_transform(data_test['Customer Feedback'])\ndata_test['Policy Type'] = policy_encoder.fit_transform(data_test['Policy Type'])\ndata_test['Exercise Frequency'] = exercise_encoder.fit_transform(data_test['Exercise Frequency'])\ndata_test['Property Type'] = property_encoder.fit_transform(data_test['Property Type'])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T03:59:43.514689Z","iopub.execute_input":"2024-12-03T03:59:43.515093Z","iopub.status.idle":"2024-12-03T03:59:45.33229Z","shell.execute_reply.started":"2024-12-03T03:59:43.515061Z","shell.execute_reply":"2024-12-03T03:59:45.330849Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_test = datetime_feature(data_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T04:00:45.74131Z","iopub.execute_input":"2024-12-03T04:00:45.741695Z","iopub.status.idle":"2024-12-03T04:00:46.298058Z","shell.execute_reply.started":"2024-12-03T04:00:45.741656Z","shell.execute_reply":"2024-12-03T04:00:46.297135Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_test","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T04:00:50.422646Z","iopub.execute_input":"2024-12-03T04:00:50.423047Z","iopub.status.idle":"2024-12-03T04:00:50.453628Z","shell.execute_reply.started":"2024-12-03T04:00:50.423011Z","shell.execute_reply":"2024-12-03T04:00:50.452546Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model = CatBoostRegressor(**best_param)\nmodel.fit(X, y, verbose = False)\n#predict\npreds = model.predict(data_test.drop(columns=['id'], axis=1))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T04:02:45.963963Z","iopub.execute_input":"2024-12-03T04:02:45.964872Z","iopub.status.idle":"2024-12-03T04:04:26.518091Z","shell.execute_reply.started":"2024-12-03T04:02:45.964833Z","shell.execute_reply":"2024-12-03T04:04:26.517032Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_res = pd.DataFrame({'id':data_test['id'], 'Premium Amount':preds})\ndf_res.to_csv('/kaggle/working/submission.csv', index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T04:06:42.650696Z","iopub.execute_input":"2024-12-03T04:06:42.651556Z","iopub.status.idle":"2024-12-03T04:06:44.344938Z","shell.execute_reply.started":"2024-12-03T04:06:42.651518Z","shell.execute_reply":"2024-12-03T04:06:44.34405Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_res","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-03T04:06:46.837412Z","iopub.execute_input":"2024-12-03T04:06:46.837931Z","iopub.status.idle":"2024-12-03T04:06:46.855132Z","shell.execute_reply.started":"2024-12-03T04:06:46.837886Z","shell.execute_reply":"2024-12-03T04:06:46.853594Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"More to come hopefully...","metadata":{}}]}