{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.12","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":30918,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Problem statement\n\n## data description\n1. Age: Age of the insured individual (Numerical)\n1. Gender: Gender of the insured individual (Categorical: Male, Female)\n1. Annual Income: Annual income of the insured individual (Numerical, skewed)\n1. Marital Status: Marital status of the insured individual (Categorical: Single, Married, Divorced)\n1. Number of Dependents: Number of dependents (Numerical, with missing values)\n1. Education Level: Highest education level attained (Categorical: High School, Bachelor's, Master's, PhD)\n1. Occupation: Occupation of the insured individual (Categorical: Employed, Self-Employed, Unemployed)\n1. Health Score: A score representing the health status (Numerical, skewed)\n1. Location: Type of location (Categorical: Urban, Suburban, Rural)\n1. Policy Type: Type of insurance policy (Categorical: Basic, Comprehensive, Premium)\n1. Previous Claims: Number of previous claims made (Numerical, with outliers)\n1. Vehicle Age: Age of the vehicle insured (Numerical)\n1. Credit Score: Credit score of the insured individual (Numerical, with missing values)\n1. Insurance Duration: Duration of the insurance policy (Numerical, in years)\n1. Premium Amount: Target variable representing the insurance premium amount (Numerical, skewed)\n1. Policy Start Date: Start date of the insurance policy (Text, improperly formatted)\n1. Customer Feedback: Short feedback comments from customers (Text)\n1. Smoking Status: Smoking status of the insured individual (Categorical: Yes, No)\n1. Exercise Frequency: Frequency of exercise (Categorical: Daily, Weekly, Monthly, Rarely)\n1. Property Type: Type of property owned (Categorical: House, Apartment, Condo)","metadata":{}},{"cell_type":"markdown","source":"# Quick overview of EDA results:\n\n* As our data is synthetic, all the missing values comes under MCAR.\n* 5% of population's annual income is lower than premium amount paid\n* Insurance duration feature has inconsistency\n* Annual income and premium amount feature are right skewed\n* In Categorical features, all the categories are evenly distributed","metadata":{}},{"cell_type":"markdown","source":"NOTE: EDA part is done separetely in different pipeline and i uploaded that notebook. Please free to check it out and comment if any doubts.","metadata":{}},{"cell_type":"markdown","source":".# Feature engineering","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:24:29.042469Z","iopub.execute_input":"2025-03-16T18:24:29.042846Z","iopub.status.idle":"2025-03-16T18:24:31.826707Z","shell.execute_reply.started":"2025-03-16T18:24:29.042808Z","shell.execute_reply":"2025-03-16T18:24:31.825589Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pd.set_option('display.max_columns',None)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:24:31.827779Z","iopub.execute_input":"2025-03-16T18:24:31.828328Z","iopub.status.idle":"2025-03-16T18:24:31.833595Z","shell.execute_reply.started":"2025-03-16T18:24:31.828272Z","shell.execute_reply":"2025-03-16T18:24:31.832263Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data = pd.read_csv('/kaggle/input/playground-series-s4e12/train.csv')\ndata.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:24:31.834663Z","iopub.execute_input":"2025-03-16T18:24:31.83503Z","iopub.status.idle":"2025-03-16T18:24:38.433975Z","shell.execute_reply.started":"2025-03-16T18:24:31.835Z","shell.execute_reply":"2025-03-16T18:24:38.432864Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_data = pd.read_csv('/kaggle/input/playground-series-s4e12/test.csv')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:24:38.434888Z","iopub.execute_input":"2025-03-16T18:24:38.435147Z","iopub.status.idle":"2025-03-16T18:24:43.042621Z","shell.execute_reply.started":"2025-03-16T18:24:38.435125Z","shell.execute_reply":"2025-03-16T18:24:43.041737Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Feature Imputation","metadata":{}},{"cell_type":"markdown","source":"**Analysis result:** As our missing values are **MCAR**, we use Mean,Median,Mode to fill the null values.","metadata":{}},{"cell_type":"code","source":"na_features = []\nfor col in data.columns:\n    if data[col].isnull().any():\n        na_features.append(col)\nna_features\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:24:43.043585Z","iopub.execute_input":"2025-03-16T18:24:43.043853Z","iopub.status.idle":"2025-03-16T18:24:43.675096Z","shell.execute_reply.started":"2025-03-16T18:24:43.04383Z","shell.execute_reply":"2025-03-16T18:24:43.674244Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"na_numerical_features = []\nna_categorical_features = []\n\nfor col in na_features:\n    if data[col].dtype == 'O':\n        na_categorical_features.append(col)\n    else:\n        na_numerical_features.append(col)\n\nna_categorical_features\nna_numerical_features","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:24:43.677682Z","iopub.execute_input":"2025-03-16T18:24:43.677951Z","iopub.status.idle":"2025-03-16T18:24:43.684787Z","shell.execute_reply.started":"2025-03-16T18:24:43.677927Z","shell.execute_reply":"2025-03-16T18:24:43.683688Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Lets impute features one by one**","metadata":{}},{"cell_type":"markdown","source":"**Let's get a quick look at how imputation affects our distribution**","metadata":{}},{"cell_type":"code","source":"#We are imputing for age feature\ndata['Age_mean'] = data['Age'].fillna(data['Age'].mean())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:24:43.686446Z","iopub.execute_input":"2025-03-16T18:24:43.686748Z","iopub.status.idle":"2025-03-16T18:24:43.72457Z","shell.execute_reply.started":"2025-03-16T18:24:43.686716Z","shell.execute_reply":"2025-03-16T18:24:43.723448Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.figure()\ndata['Age'].plot(kind='kde')\ndata.Age_mean.plot(kind='kde',color='red')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:24:43.725572Z","iopub.execute_input":"2025-03-16T18:24:43.725886Z","iopub.status.idle":"2025-03-16T18:25:28.747776Z","shell.execute_reply.started":"2025-03-16T18:24:43.725851Z","shell.execute_reply":"2025-03-16T18:25:28.746547Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Analysis:** We can see a **spike** in imputed distrubution around mean. Note: red line is imputed","metadata":{}},{"cell_type":"code","source":"data = data.drop('Age_mean',axis=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:28.748947Z","iopub.execute_input":"2025-03-16T18:25:28.749322Z","iopub.status.idle":"2025-03-16T18:25:28.92312Z","shell.execute_reply.started":"2025-03-16T18:25:28.749286Z","shell.execute_reply":"2025-03-16T18:25:28.921993Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Result:** As imputation doesn't affect distrubution much as we see the graph","metadata":{}},{"cell_type":"markdown","source":"**Imputing numerical features**","metadata":{}},{"cell_type":"code","source":"for col in na_numerical_features:\n    if (data[col].skew() <= 0.5) and (data[col].skew() >= -0.5) :\n        data[col] = data[col].fillna(data[col].mean())\n        test_data[col] = test_data[col].fillna(test_data[col].mean())\n    else:\n        data[col] = data[col].fillna(data[col].median())\n        test_data[col] = test_data[col].fillna(test_data[col].median())\n        ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:28.924256Z","iopub.execute_input":"2025-03-16T18:25:28.924904Z","iopub.status.idle":"2025-03-16T18:25:29.482759Z","shell.execute_reply.started":"2025-03-16T18:25:28.924862Z","shell.execute_reply":"2025-03-16T18:25:29.481758Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data[na_numerical_features].isnull().sum()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:29.483717Z","iopub.execute_input":"2025-03-16T18:25:29.48405Z","iopub.status.idle":"2025-03-16T18:25:29.579537Z","shell.execute_reply.started":"2025-03-16T18:25:29.484015Z","shell.execute_reply":"2025-03-16T18:25:29.578252Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Imputing categorical features**","metadata":{}},{"cell_type":"code","source":"for col in na_categorical_features:\n    data[col] = data[col].fillna(data[col].mode()[0])\n    test_data[col] = test_data[col].fillna(test_data[col].mode()[0])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:29.580831Z","iopub.execute_input":"2025-03-16T18:25:29.581252Z","iopub.status.idle":"2025-03-16T18:25:30.395806Z","shell.execute_reply.started":"2025-03-16T18:25:29.58121Z","shell.execute_reply":"2025-03-16T18:25:30.394813Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data[na_categorical_features].isnull().sum()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:30.396808Z","iopub.execute_input":"2025-03-16T18:25:30.397086Z","iopub.status.idle":"2025-03-16T18:25:30.609537Z","shell.execute_reply.started":"2025-03-16T18:25:30.397062Z","shell.execute_reply":"2025-03-16T18:25:30.608663Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Result:** Imputation is completed","metadata":{}},{"cell_type":"markdown","source":"# Outlier treatment","metadata":{}},{"cell_type":"markdown","source":"**EDA report:**\nIn numerical data:\n* Previous claims has 369 outliers\n* Annual income has 67132 outliers\n* Premium amount has 49320 outliers","metadata":{}},{"cell_type":"markdown","source":"since, these features are important we'll leave outliers","metadata":{}},{"cell_type":"markdown","source":"# Feature transformation","metadata":{}},{"cell_type":"code","source":"#train dataset\ndata['Previous Claims'] = np.log1p(data['Previous Claims'])\ndata['Premium Amount'] = np.log1p(data['Premium Amount'])\ndata['Annual Income'] = np.log(data['Annual Income'])\n\n#test dataset\ntest_data['Previous Claims'] = np.log1p(test_data['Previous Claims'])\ntest_data['Annual Income'] = np.log(test_data['Annual Income'])\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:30.610357Z","iopub.execute_input":"2025-03-16T18:25:30.61066Z","iopub.status.idle":"2025-03-16T18:25:30.648818Z","shell.execute_reply.started":"2025-03-16T18:25:30.610634Z","shell.execute_reply":"2025-03-16T18:25:30.647873Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Encoding categorical features","metadata":{}},{"cell_type":"code","source":"categorical_features = data.select_dtypes(include='object')\ncategorical_features.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:30.649893Z","iopub.execute_input":"2025-03-16T18:25:30.65029Z","iopub.status.idle":"2025-03-16T18:25:31.249275Z","shell.execute_reply.started":"2025-03-16T18:25:30.650247Z","shell.execute_reply":"2025-03-16T18:25:31.248329Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Now let's start encoding categorical features using OHE**\n* Marital status\n* Occupation\n* Location\n* Property type","metadata":{}},{"cell_type":"code","source":"#train data\nOHE_data = pd.get_dummies(data,columns = ['Marital Status','Occupation','Location','Property Type'],prefix=['Marital Status','Occupation','Location','Property Type'])\n#test data\nOHE_test_data = pd.get_dummies(test_data,columns = ['Marital Status','Occupation','Location','Property Type'],prefix=['Marital Status','Occupation','Location','Property Type'])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:31.250228Z","iopub.execute_input":"2025-03-16T18:25:31.250565Z","iopub.status.idle":"2025-03-16T18:25:32.948066Z","shell.execute_reply.started":"2025-03-16T18:25:31.250534Z","shell.execute_reply":"2025-03-16T18:25:32.946932Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"OHE_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:32.949066Z","iopub.execute_input":"2025-03-16T18:25:32.949443Z","iopub.status.idle":"2025-03-16T18:25:32.978558Z","shell.execute_reply.started":"2025-03-16T18:25:32.949383Z","shell.execute_reply":"2025-03-16T18:25:32.977655Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Lets perform Ordinal encoding for: \n* Educational level\n* Policy type \n* Customer feedback\n* Excercise frequency","metadata":{}},{"cell_type":"code","source":"from sklearn.preprocessing import OrdinalEncoder\n\n#mentioning order for ordinal relationship\ncategories = [\n    ['High School',\"Bachelor's\",\"Master's\",'PhD'],\n    ['Basic', 'Comprehensive', 'Premium'],\n    ['Poor', 'Average', 'Good'],\n    ['Rarely', 'Monthly', 'Weekly', 'Daily']\n    ]\n\nordinal_encoder = OrdinalEncoder(categories=categories)\n#train data\nOHE_data[['Education Level','Policy Type', 'Customer Feedback', 'Exercise Frequency']] = ordinal_encoder.fit_transform(OHE_data[['Education Level','Policy Type', 'Customer Feedback', 'Exercise Frequency']])\n\n#test data\nOHE_test_data[['Education Level','Policy Type', 'Customer Feedback', 'Exercise Frequency']] = ordinal_encoder.fit_transform(OHE_test_data[['Education Level','Policy Type', 'Customer Feedback', 'Exercise Frequency']])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:32.979519Z","iopub.execute_input":"2025-03-16T18:25:32.979782Z","iopub.status.idle":"2025-03-16T18:25:35.131531Z","shell.execute_reply.started":"2025-03-16T18:25:32.979758Z","shell.execute_reply":"2025-03-16T18:25:35.13034Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Now lets do binary encoding**\n* Gender\n* Smoking status","metadata":{}},{"cell_type":"code","source":"#train data\nOHE_data['Smoking Status'] = np.where(OHE_data['Smoking Status'] == 'Yes',1,0)\nOHE_data['Gender'] = np.where(OHE_data['Gender'] == 'Male',1,0)\n\n#test data\nOHE_test_data['Smoking Status'] = np.where(OHE_test_data['Smoking Status'] == 'Yes',1,0)\nOHE_test_data['Gender'] = np.where(OHE_test_data['Gender'] == 'Male',1,0)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:35.132694Z","iopub.execute_input":"2025-03-16T18:25:35.13307Z","iopub.status.idle":"2025-03-16T18:25:35.49498Z","shell.execute_reply.started":"2025-03-16T18:25:35.133032Z","shell.execute_reply":"2025-03-16T18:25:35.493825Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"OHE_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:35.499142Z","iopub.execute_input":"2025-03-16T18:25:35.499461Z","iopub.status.idle":"2025-03-16T18:25:35.526431Z","shell.execute_reply.started":"2025-03-16T18:25:35.499434Z","shell.execute_reply":"2025-03-16T18:25:35.525281Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Categorical encoding is completed**","metadata":{}},{"cell_type":"markdown","source":"# Feature Scaling","metadata":{}},{"cell_type":"code","source":"from sklearn.preprocessing import MinMaxScaler\n\nscalar = MinMaxScaler()\n\n#train data\nOHE_data[['Age','Annual Income','Number of Dependents','Health Score','Previous Claims','Vehicle Age','Credit Score','Insurance Duration']] = scalar.fit_transform(OHE_data[['Age','Annual Income','Number of Dependents','Health Score','Previous Claims','Vehicle Age','Credit Score','Insurance Duration']])\n\n#test data\nOHE_test_data[['Age','Annual Income','Number of Dependents','Health Score','Previous Claims','Vehicle Age','Credit Score','Insurance Duration']] = scalar.fit_transform(OHE_test_data[['Age','Annual Income','Number of Dependents','Health Score','Previous Claims','Vehicle Age','Credit Score','Insurance Duration']])\nOHE_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:35.528254Z","iopub.execute_input":"2025-03-16T18:25:35.528661Z","iopub.status.idle":"2025-03-16T18:25:35.804505Z","shell.execute_reply.started":"2025-03-16T18:25:35.528623Z","shell.execute_reply":"2025-03-16T18:25:35.803338Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Scaling is completed**","metadata":{}},{"cell_type":"markdown","source":"# Model Training and Evaluation","metadata":{}},{"cell_type":"code","source":"y_train = OHE_data['Premium Amount']\nx_train = OHE_data.drop(['Premium Amount','id','Policy Start Date'],axis=1)\nx_train['Year'] = OHE_data['Policy Start Date'].str[0:4].astype(int)\nx_train['Month'] = OHE_data['Policy Start Date'].str[5:7].astype(int)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:35.805621Z","iopub.execute_input":"2025-03-16T18:25:35.806007Z","iopub.status.idle":"2025-03-16T18:25:36.786742Z","shell.execute_reply.started":"2025-03-16T18:25:35.805966Z","shell.execute_reply":"2025-03-16T18:25:36.785664Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Linear regression","metadata":{}},{"cell_type":"code","source":"from sklearn.linear_model import LinearRegression\nmodel = LinearRegression()\nmodel.fit(x_train,y_train)\ny_pred = model.predict(x_train)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:36.787796Z","iopub.execute_input":"2025-03-16T18:25:36.788153Z","iopub.status.idle":"2025-03-16T18:25:39.728106Z","shell.execute_reply.started":"2025-03-16T18:25:36.788117Z","shell.execute_reply":"2025-03-16T18:25:39.727076Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.metrics import accuracy_score,mean_absolute_error,mean_squared_error\n\n\n# Evaluation Metrics\nmae = mean_absolute_error(y_train, y_pred)\nmse = mean_squared_error(y_train,y_pred)\nrmse = np.sqrt(mse)\n\nprint(f\"Mean Absolute Error (MAE): {mae:.4f}\")\nprint(f\"Root Mean Squared Error (RMSE): {rmse:.4f}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:39.729136Z","iopub.execute_input":"2025-03-16T18:25:39.729513Z","iopub.status.idle":"2025-03-16T18:25:39.749428Z","shell.execute_reply.started":"2025-03-16T18:25:39.729465Z","shell.execute_reply":"2025-03-16T18:25:39.748306Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"mae = mean_absolute_error(y_train, y_pred)\nregression_accuracy = 1 - (mae / np.mean(y_train))\nregression_accuracy","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:39.750467Z","iopub.execute_input":"2025-03-16T18:25:39.750774Z","iopub.status.idle":"2025-03-16T18:25:39.77041Z","shell.execute_reply.started":"2025-03-16T18:25:39.750739Z","shell.execute_reply":"2025-03-16T18:25:39.769458Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Result:** good result","metadata":{}},{"cell_type":"markdown","source":"## Decision Tree Regressor","metadata":{}},{"cell_type":"code","source":"from sklearn.tree import DecisionTreeRegressor\n\nmodel = DecisionTreeRegressor(max_depth=5, min_samples_split=10, min_samples_leaf=5, random_state=42)\nmodel.fit(x_train, y_train)\ny_pred = model.predict(x_train)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:39.771485Z","iopub.execute_input":"2025-03-16T18:25:39.771812Z","iopub.status.idle":"2025-03-16T18:25:46.595258Z","shell.execute_reply.started":"2025-03-16T18:25:39.771774Z","shell.execute_reply":"2025-03-16T18:25:46.594292Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"mae = mean_absolute_error(y_train, y_pred)\nmse = mean_squared_error(y_train,y_pred)\nrmse = np.sqrt(mse)\n\nprint(f\"Mean Absolute Error (MAE): {mae:.4f}\")\nprint(f\"Root Mean Squared Error (RMSE): {rmse:.4f}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:46.595907Z","iopub.execute_input":"2025-03-16T18:25:46.596167Z","iopub.status.idle":"2025-03-16T18:25:46.617546Z","shell.execute_reply.started":"2025-03-16T18:25:46.596143Z","shell.execute_reply":"2025-03-16T18:25:46.616449Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"mae = mean_absolute_error(y_train, y_pred)\nregression_accuracy = 1 - (mae / np.mean(y_train))\nregression_accuracy","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:46.618346Z","iopub.execute_input":"2025-03-16T18:25:46.618635Z","iopub.status.idle":"2025-03-16T18:25:46.638774Z","shell.execute_reply.started":"2025-03-16T18:25:46.618608Z","shell.execute_reply":"2025-03-16T18:25:46.637785Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Result**: Good accurary with very less error","metadata":{}},{"cell_type":"markdown","source":"# Model Testing","metadata":{}},{"cell_type":"code","source":"x_test = OHE_test_data.drop(['id','Policy Start Date'],axis=1)\nx_test['Year'] = OHE_data['Policy Start Date'].str[0:4].astype(int)\nx_test['Month'] = OHE_data['Policy Start Date'].str[5:7].astype(int)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:46.639688Z","iopub.execute_input":"2025-03-16T18:25:46.640004Z","iopub.status.idle":"2025-03-16T18:25:47.55478Z","shell.execute_reply.started":"2025-03-16T18:25:46.639975Z","shell.execute_reply":"2025-03-16T18:25:47.553751Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"y_test=model.predict(x_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:47.555809Z","iopub.execute_input":"2025-03-16T18:25:47.556167Z","iopub.status.idle":"2025-03-16T18:25:47.665616Z","shell.execute_reply.started":"2025-03-16T18:25:47.556131Z","shell.execute_reply":"2025-03-16T18:25:47.664655Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"submit = pd.read_csv(\"/kaggle/input/playground-series-s4e12/sample_submission.csv\")\nsubmit[\"Premium Amount\"] = np.exp(y_test)-1\nsubmit.to_csv(\"submission.csv\",index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-16T18:25:47.666573Z","iopub.execute_input":"2025-03-16T18:25:47.66686Z","iopub.status.idle":"2025-03-16T18:25:49.516745Z","shell.execute_reply.started":"2025-03-16T18:25:47.666834Z","shell.execute_reply":"2025-03-16T18:25:49.515717Z"}},"outputs":[],"execution_count":null}]}