{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"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"},{"sourceId":9178166,"sourceType":"datasetVersion","datasetId":5547076}],"dockerImageVersionId":30822,"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\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\n\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.linear_model import LinearRegression\nfrom sklearn.metrics import mean_squared_error\nfrom sklearn.ensemble import RandomForestRegressor","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:23.86827Z","iopub.execute_input":"2024-12-25T04:43:23.868965Z","iopub.status.idle":"2024-12-25T04:43:23.879316Z","shell.execute_reply.started":"2024-12-25T04:43:23.868913Z","shell.execute_reply":"2024-12-25T04:43:23.878113Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Load the datasets\ninsurance_train_data = pd.read_csv('/kaggle/input/playground-series-s4e12/train.csv')\ninsurance_test_data = pd.read_csv('/kaggle/input/playground-series-s4e12/test.csv')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:23.880783Z","iopub.execute_input":"2024-12-25T04:43:23.881189Z","iopub.status.idle":"2024-12-25T04:43:32.302728Z","shell.execute_reply.started":"2024-12-25T04:43:23.88115Z","shell.execute_reply":"2024-12-25T04:43:32.301457Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Check the dataset\ninsurance_train_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:32.305078Z","iopub.execute_input":"2024-12-25T04:43:32.305562Z","iopub.status.idle":"2024-12-25T04:43:32.334742Z","shell.execute_reply.started":"2024-12-25T04:43:32.305513Z","shell.execute_reply":"2024-12-25T04:43:32.333175Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"insurance_train_data.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:32.336516Z","iopub.execute_input":"2024-12-25T04:43:32.336954Z","iopub.status.idle":"2024-12-25T04:43:32.343617Z","shell.execute_reply.started":"2024-12-25T04:43:32.336914Z","shell.execute_reply":"2024-12-25T04:43:32.342673Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"insurance_train_data.dtypes","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:32.344827Z","iopub.execute_input":"2024-12-25T04:43:32.345324Z","iopub.status.idle":"2024-12-25T04:43:32.367787Z","shell.execute_reply.started":"2024-12-25T04:43:32.345271Z","shell.execute_reply":"2024-12-25T04:43:32.366635Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Check the missing values\nmissing_values = insurance_train_data.isnull().sum()\nprint(missing_values)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:32.368956Z","iopub.execute_input":"2024-12-25T04:43:32.36938Z","iopub.status.idle":"2024-12-25T04:43:33.010229Z","shell.execute_reply.started":"2024-12-25T04:43:32.36934Z","shell.execute_reply":"2024-12-25T04:43:33.008999Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Impute numerical features\n#numerical_cols = insurance_train_data.select_dtypes(include=['int64','float64']).column\nnumerical_cols = insurance_train_data.select_dtypes(include=['int64', 'float64']).columns\nmissing_numerical_cols = [col for col in numerical_cols if insurance_train_data[col].isnull().sum() > 0]\n#print(missing_numerical_cols)\nnum_imputer = SimpleImputer(strategy='median')\ninsurance_train_data[missing_numerical_cols] = num_imputer.fit_transform(insurance_train_data[missing_numerical_cols])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:33.011248Z","iopub.execute_input":"2024-12-25T04:43:33.011563Z","iopub.status.idle":"2024-12-25T04:43:34.856752Z","shell.execute_reply.started":"2024-12-25T04:43:33.011538Z","shell.execute_reply":"2024-12-25T04:43:34.855393Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(insurance_train_data.isnull().sum())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:34.859508Z","iopub.execute_input":"2024-12-25T04:43:34.859886Z","iopub.status.idle":"2024-12-25T04:43:35.492154Z","shell.execute_reply.started":"2024-12-25T04:43:34.859852Z","shell.execute_reply":"2024-12-25T04:43:35.490364Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Impute catagorical features\ncategorical_cols = insurance_train_data.select_dtypes(include=['object']).columns\n# print(categorical_cols)\nmissing_categorical_cols = [col for col in categorical_cols if insurance_train_data[col].isnull().sum() > 0]\n# print(missing_categorical_cols)\nfor cols in missing_categorical_cols:\n    insurance_train_data[cols].fillna(insurance_train_data[cols].mode()[0], inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:35.494912Z","iopub.execute_input":"2024-12-25T04:43:35.495396Z","iopub.status.idle":"2024-12-25T04:43:36.730944Z","shell.execute_reply.started":"2024-12-25T04:43:35.495358Z","shell.execute_reply":"2024-12-25T04:43:36.729822Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(insurance_train_data.isnull().sum())\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:36.732269Z","iopub.execute_input":"2024-12-25T04:43:36.732732Z","iopub.status.idle":"2024-12-25T04:43:37.371057Z","shell.execute_reply.started":"2024-12-25T04:43:36.732689Z","shell.execute_reply":"2024-12-25T04:43:37.369631Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#encoding categorical variables\n\n# Converting Policy Start Date to datetime\ninsurance_train_data['Policy Start Date'] = pd.to_datetime(insurance_train_data['Policy Start Date'])\ninsurance_train_data['Policy Year'] = insurance_train_data['Policy Start Date'].dt.year\ninsurance_train_data['Policy Month'] = insurance_train_data['Policy Start Date'].dt.month\ninsurance_train_data['Policy Day'] = insurance_train_data['Policy Start Date'].dt.day                                                                                               \n#print(insurance_train_data['Policy Year'],insurance_train_data['Policy Month'],insurance_train_data['Policy Day'])\ninsurance_train_data.drop('Policy Start Date',axis=1, inplace=True)\n\n# Handling Smoking Staus\ninsurance_train_data['Smoking Status'] = insurance_train_data['Smoking Status'].map({'Yes': 1, 'No': 0})\n\n# Handle Exercise Frequency \nexercise_mapping = {'Rarely': 0, 'Monthly': 1, 'Weekly': 2, 'Daily': 3}\ninsurance_train_data['Exercise Frequency'] = insurance_train_data['Exercise Frequency'].map(exercise_mapping)\n\n# Handle Customer Feedback \n#feedback_mapping = {'poor': 0, 'average': 1, 'good': 2, 'blank': -1}  \nfeedback_mapping = {'Poor': 0, 'Average': 1, 'Good': 2}\ninsurance_train_data['Customer Feedback'] = insurance_train_data['Customer Feedback'].map(feedback_mapping)\n\n# Handle Nominal Variables \nnominal_cols = ['Gender', 'Marital Status', 'Occupation', 'Policy Type', 'Location', 'Property Type']\ninsurance_train_data = pd.get_dummies(insurance_train_data, columns=nominal_cols, drop_first=True)\n\n# Handle Education Level\nordinal_cols = ['Education Level']  \nlabel_encoder = LabelEncoder()\nfor col in ordinal_cols:\n    insurance_train_data[col] = label_encoder.fit_transform(insurance_train_data[col])\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:37.372326Z","iopub.execute_input":"2024-12-25T04:43:37.37273Z","iopub.status.idle":"2024-12-25T04:43:39.485847Z","shell.execute_reply.started":"2024-12-25T04:43:37.372698Z","shell.execute_reply":"2024-12-25T04:43:39.484856Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(insurance_train_data.isnull().sum())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:39.486753Z","iopub.execute_input":"2024-12-25T04:43:39.487074Z","iopub.status.idle":"2024-12-25T04:43:39.530368Z","shell.execute_reply.started":"2024-12-25T04:43:39.487046Z","shell.execute_reply":"2024-12-25T04:43:39.52918Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Numerical columns \nnumerical_cols = insurance_train_data.select_dtypes(include=['int64', 'float64']).columns\n\n# Initialize the scaler\nscaler = StandardScaler()\n\n# Apply scaling\ninsurance_train_data[numerical_cols] = scaler.fit_transform(insurance_train_data[numerical_cols])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:39.531594Z","iopub.execute_input":"2024-12-25T04:43:39.531945Z","iopub.status.idle":"2024-12-25T04:43:39.928675Z","shell.execute_reply.started":"2024-12-25T04:43:39.531895Z","shell.execute_reply":"2024-12-25T04:43:39.927449Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(insurance_train_data)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:39.929919Z","iopub.execute_input":"2024-12-25T04:43:39.930221Z","iopub.status.idle":"2024-12-25T04:43:40.073839Z","shell.execute_reply.started":"2024-12-25T04:43:39.930196Z","shell.execute_reply":"2024-12-25T04:43:40.072539Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(insurance_test_data.shape)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:40.075035Z","iopub.execute_input":"2024-12-25T04:43:40.075364Z","iopub.status.idle":"2024-12-25T04:43:40.080737Z","shell.execute_reply.started":"2024-12-25T04:43:40.075334Z","shell.execute_reply":"2024-12-25T04:43:40.079591Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"insurance_test_data.dtypes","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:40.081962Z","iopub.execute_input":"2024-12-25T04:43:40.082353Z","iopub.status.idle":"2024-12-25T04:43:40.104555Z","shell.execute_reply.started":"2024-12-25T04:43:40.082324Z","shell.execute_reply":"2024-12-25T04:43:40.103136Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Check the missing values\nmissing_values_test = insurance_test_data.isnull().sum()\nprint(missing_values_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:40.105721Z","iopub.execute_input":"2024-12-25T04:43:40.10607Z","iopub.status.idle":"2024-12-25T04:43:40.544602Z","shell.execute_reply.started":"2024-12-25T04:43:40.106027Z","shell.execute_reply":"2024-12-25T04:43:40.543506Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Impute numerical features for test data\nnumerical_cols_test = insurance_test_data.select_dtypes(include=['int64', 'float64']).columns\nmissing_numerical_test_cols = [col for col in numerical_cols_test if insurance_test_data[col].isnull().sum() > 0]\n#print(missing_numerical_cols)\nnum_imputer_test = SimpleImputer(strategy='median')\ninsurance_test_data[missing_numerical_test_cols] = num_imputer_test.fit_transform(insurance_test_data[missing_numerical_test_cols])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:40.54564Z","iopub.execute_input":"2024-12-25T04:43:40.546012Z","iopub.status.idle":"2024-12-25T04:43:41.689756Z","shell.execute_reply.started":"2024-12-25T04:43:40.545981Z","shell.execute_reply":"2024-12-25T04:43:41.688563Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(insurance_test_data.isnull().sum())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:41.690999Z","iopub.execute_input":"2024-12-25T04:43:41.691326Z","iopub.status.idle":"2024-12-25T04:43:42.106648Z","shell.execute_reply.started":"2024-12-25T04:43:41.691299Z","shell.execute_reply":"2024-12-25T04:43:42.105556Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Impute catagorical features for test data\ncategorical_cols_test = insurance_test_data.select_dtypes(include=['object']).columns\n# print(categorical_cols)\nmissing_categorical_test_cols = [col for col in categorical_cols_test if insurance_test_data[col].isnull().sum() > 0]\n# print(missing_categorical_cols)\nfor cols in missing_categorical_test_cols:\n    insurance_test_data[cols].fillna(insurance_test_data[cols].mode()[0], inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:42.107677Z","iopub.execute_input":"2024-12-25T04:43:42.108081Z","iopub.status.idle":"2024-12-25T04:43:42.861428Z","shell.execute_reply.started":"2024-12-25T04:43:42.108042Z","shell.execute_reply":"2024-12-25T04:43:42.860295Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(insurance_test_data.isnull().sum())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:42.862505Z","iopub.execute_input":"2024-12-25T04:43:42.862971Z","iopub.status.idle":"2024-12-25T04:43:43.283896Z","shell.execute_reply.started":"2024-12-25T04:43:42.862928Z","shell.execute_reply":"2024-12-25T04:43:43.282345Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#encoding categorical variables\n\n# Converting Policy Start Date to datetime\ninsurance_test_data['Policy Start Date'] = pd.to_datetime(insurance_test_data['Policy Start Date'])\ninsurance_test_data['Policy Year'] = insurance_test_data['Policy Start Date'].dt.year\ninsurance_test_data['Policy Month'] = insurance_test_data['Policy Start Date'].dt.month\ninsurance_test_data['Policy Day'] = insurance_test_data['Policy Start Date'].dt.day                                                                                               \n#print(insurance_train_data['Policy Year'],insurance_train_data['Policy Month'],insurance_train_data['Policy Day'])\ninsurance_test_data.drop('Policy Start Date',axis=1, inplace=True)\n\n# Handling Smoking Staus\ninsurance_test_data['Smoking Status'] = insurance_test_data['Smoking Status'].map({'Yes': 1, 'No': 0})\n\n# Handle Exercise Frequency \nexercise_mapping_test = {'Rarely': 0, 'Monthly': 1, 'Weekly': 2, 'Daily': 3}\ninsurance_test_data['Exercise Frequency'] = insurance_test_data['Exercise Frequency'].map(exercise_mapping_test)\n\n# Handle Customer Feedback \nfeedback_mapping_test = {'Poor': 0, 'Average': 1, 'Good': 2}  \ninsurance_test_data['Customer Feedback'] = insurance_test_data['Customer Feedback'].map(feedback_mapping_test)\n\n# Handle Nominal Variables \nnominal_cols_test = ['Gender', 'Marital Status', 'Occupation', 'Policy Type', 'Location', 'Property Type']\ninsurance_test_data = pd.get_dummies(insurance_test_data, columns=nominal_cols_test, drop_first=True)\n\n# Handle Education Level\nordinal_cols_test = ['Education Level']  \nlabel_encoder_test = LabelEncoder()\nfor col in ordinal_cols_test:\n    insurance_test_data[col] = label_encoder_test.fit_transform(insurance_test_data[col])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:43.285015Z","iopub.execute_input":"2024-12-25T04:43:43.285299Z","iopub.status.idle":"2024-12-25T04:43:44.615661Z","shell.execute_reply.started":"2024-12-25T04:43:43.285275Z","shell.execute_reply":"2024-12-25T04:43:44.614333Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(insurance_test_data.isnull().sum())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:44.618839Z","iopub.execute_input":"2024-12-25T04:43:44.619186Z","iopub.status.idle":"2024-12-25T04:43:44.649737Z","shell.execute_reply.started":"2024-12-25T04:43:44.619153Z","shell.execute_reply":"2024-12-25T04:43:44.648502Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Numerical columns \nnumerical_cols_test = insurance_test_data.select_dtypes(include=['int64', 'float64']).columns\n\n# Initialize the scaler\nscaler = StandardScaler()\n\n# Apply scaling\ninsurance_test_data[numerical_cols_test] = scaler.fit_transform(insurance_test_data[numerical_cols_test])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-25T04:43:44.650924Z","iopub.execute_input":"2024-12-25T04:43:44.651261Z","iopub.status.idle":"2024-12-25T04:43:44.883099Z","shell.execute_reply.started":"2024-12-25T04:43:44.651234Z","shell.execute_reply":"2024-12-25T04:43:44.882026Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(insurance_test_data)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Split train data into X (features) and y (target)\nX_train = insurance_train_data.drop(['Premium Amount', 'id'], axis=1)\ny_train = insurance_train_data['Premium Amount']\n\n# Prepare the test data\nX_test = insurance_test_data.drop(['id'], axis=1)\n\n# Train the model\nmodel = LinearRegression()\nmodel.fit(X_train, y_train)\n\n# Predict the premium amounts for the test dataset\npredictions = model.predict(X_test)\n\n# Output predictions\nprint('Predictions for test data:', predictions)","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}