{"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"}],"dockerImageVersionId":30822,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# REGRESSION ON INSURANCE DATASET WITH EDA AND XGBOOST(SIMPLE)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"}},{"cell_type":"markdown","source":"### IMPORTING THE LIBRARIES","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport math\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import OneHotEncoder\nfrom sklearn.compose import ColumnTransformer\nimport xgboost as xgb\nfrom xgboost import XGBRegressor","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:56:22.437005Z","iopub.execute_input":"2024-12-31T13:56:22.437462Z","iopub.status.idle":"2024-12-31T13:56:24.374735Z","shell.execute_reply.started":"2024-12-31T13:56:22.437425Z","shell.execute_reply":"2024-12-31T13:56:24.373605Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### IMPORTING AND UNDERSTANING DATASETS","metadata":{}},{"cell_type":"code","source":"train_dataset = pd.read_csv(\"/kaggle/input/playground-series-s4e12/train.csv\")\ntest_dataset = pd.read_csv(\"/kaggle/input/playground-series-s4e12/test.csv\")\n\nX = train_dataset.iloc[:, :-1]\ny = train_dataset.iloc[:, -1]\nX.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:56:24.375773Z","iopub.execute_input":"2024-12-31T13:56:24.376158Z","iopub.status.idle":"2024-12-31T13:56:34.58161Z","shell.execute_reply.started":"2024-12-31T13:56:24.376131Z","shell.execute_reply":"2024-12-31T13:56:34.580582Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"y.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:56:34.583249Z","iopub.execute_input":"2024-12-31T13:56:34.583564Z","iopub.status.idle":"2024-12-31T13:56:34.590489Z","shell.execute_reply.started":"2024-12-31T13:56:34.58353Z","shell.execute_reply":"2024-12-31T13:56:34.589546Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(\"Train data informtion\")\ntrain_info = train_dataset.info()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:56:34.592035Z","iopub.execute_input":"2024-12-31T13:56:34.59232Z","iopub.status.idle":"2024-12-31T13:56:35.162672Z","shell.execute_reply.started":"2024-12-31T13:56:34.592295Z","shell.execute_reply":"2024-12-31T13:56:35.161354Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"numerical_columns = X.select_dtypes(include=[np.number]).columns.tolist()\ncategorical_columns = X.select_dtypes(exclude=[np.number]).columns.tolist()\n\nprint(\"\\nNumerical Columns:\")\nprint(numerical_columns)\nprint(f\"\\nTotal number of numerical columns: {len(numerical_columns)}\")\n\nprint(\"\\nCategorical Columns:\")\nprint(categorical_columns)\nprint(f\"\\nTotal number of categorical columns: {len(categorical_columns)}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:56:35.163828Z","iopub.execute_input":"2024-12-31T13:56:35.164149Z","iopub.status.idle":"2024-12-31T13:56:35.379125Z","shell.execute_reply.started":"2024-12-31T13:56:35.164122Z","shell.execute_reply":"2024-12-31T13:56:35.37783Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"markdown","source":"### MISSING VALUES ","metadata":{}},{"cell_type":"code","source":"sns.heatmap(train_dataset.isnull(), cbar=False, cmap=\"viridis\")\nplt.title(\"Heatmap of Missing Values\")\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:56:35.380391Z","iopub.execute_input":"2024-12-31T13:56:35.380771Z","iopub.status.idle":"2024-12-31T13:57:00.383438Z","shell.execute_reply.started":"2024-12-31T13:56:35.380727Z","shell.execute_reply":"2024-12-31T13:57:00.382087Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Highlights** missing values with one color (e.g., yellow in \"viridis\").\nNon-missing values are represented by another color (e.g., dark blue in \"viridis\").","metadata":{}},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"miss_count_train = train_dataset.isnull().sum()\nmiss_count_test = test_dataset.isnull().sum()\ndisplay(miss_count_train)\ndisplay(miss_count_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:57:00.384598Z","iopub.execute_input":"2024-12-31T13:57:00.384952Z","iopub.status.idle":"2024-12-31T13:57:01.254169Z","shell.execute_reply.started":"2024-12-31T13:57:00.384923Z","shell.execute_reply":"2024-12-31T13:57:01.253289Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"display(miss_count_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:57:01.256126Z","iopub.execute_input":"2024-12-31T13:57:01.256395Z","iopub.status.idle":"2024-12-31T13:57:01.26316Z","shell.execute_reply.started":"2024-12-31T13:57:01.256371Z","shell.execute_reply":"2024-12-31T13:57:01.262156Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"train_dataset[numerical_columns] = train_dataset[numerical_columns].fillna(-1)\ntest_dataset[numerical_columns] = test_dataset[numerical_columns].fillna(-1)\n\ntrain_dataset[categorical_columns] = train_dataset[categorical_columns].fillna(\"Unknown\")\ntest_dataset[categorical_columns] = test_dataset[categorical_columns].fillna(\"Unknown\")\n\nprint(\"missing values in training dataset\")\nprint(train_dataset.isnull().sum())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:57:01.264283Z","iopub.execute_input":"2024-12-31T13:57:01.264621Z","iopub.status.idle":"2024-12-31T13:57:04.500856Z","shell.execute_reply.started":"2024-12-31T13:57:01.264586Z","shell.execute_reply":"2024-12-31T13:57:04.499772Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(\"missing values in training dataset\")\nprint(test_dataset.isnull().sum())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:57:04.501808Z","iopub.execute_input":"2024-12-31T13:57:04.502185Z","iopub.status.idle":"2024-12-31T13:57:04.854812Z","shell.execute_reply.started":"2024-12-31T13:57:04.502148Z","shell.execute_reply":"2024-12-31T13:57:04.853377Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### EDA","metadata":{}},{"cell_type":"code","source":"numerical_features = ['Age', 'Annual Income', 'Health Score', 'Credit Score', 'Vehicle Age']\n\nfor feature in numerical_features:\n    plt.figure(figsize=(8, 4))\n    sns.histplot(train_dataset[feature], kde=True, bins=30, color='blue')\n    plt.title(f'Distribution of {feature}')\n    plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:57:04.856029Z","iopub.execute_input":"2024-12-31T13:57:04.856446Z","iopub.status.idle":"2024-12-31T13:57:33.81196Z","shell.execute_reply.started":"2024-12-31T13:57:04.856407Z","shell.execute_reply":"2024-12-31T13:57:33.810701Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"categorical_features = ['Gender', 'Marital Status', 'Education Level', 'Occupation', 'Policy Type']\n\nfor feature in categorical_features:\n    plt.figure(figsize=(8, 4))\n    sns.countplot(data=train_dataset, x=feature, palette='Set2')\n    plt.title(f'Count Plot for {feature}')\n    plt.xticks(rotation=45)\n    plt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:58:30.552384Z","iopub.execute_input":"2024-12-31T13:58:30.552842Z","iopub.status.idle":"2024-12-31T13:58:34.574397Z","shell.execute_reply.started":"2024-12-31T13:58:30.552806Z","shell.execute_reply":"2024-12-31T13:58:34.572846Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"corr_matrix = train_dataset[numerical_features].corr()\n\nplt.figure(figsize=(8, 6))\nsns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt='.2f')\nplt.title(\"Correlation Heatmap\")\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T13:59:02.59402Z","iopub.execute_input":"2024-12-31T13:59:02.594378Z","iopub.status.idle":"2024-12-31T13:59:03.047598Z","shell.execute_reply.started":"2024-12-31T13:59:02.594352Z","shell.execute_reply":"2024-12-31T13:59:03.046592Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.figure(figsize=(8, 4))\nsns.histplot(train_dataset['Premium Amount'], kde=True, bins=30, color='green')\nplt.title(\"Distribution of Premium Amount\")\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-31T14:00:40.516325Z","iopub.execute_input":"2024-12-31T14:00:40.516766Z","iopub.status.idle":"2024-12-31T14:00:46.481197Z","shell.execute_reply.started":"2024-12-31T14:00:40.516732Z","shell.execute_reply":"2024-12-31T14:00:46.4801Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### TRAINING AND TESTING OF THE MODEL","metadata":{}},{"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"categorical_features = categorical_columns\ncolumn_transformer = ColumnTransformer(\n    transformers=[\n        ('cat', OneHotEncoder(handle_unknown='ignore'), categorical_features)\n    ],\n    remainder='passthrough'\n)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X_train = column_transformer.fit_transform(X_train)\nX_test = column_transformer.transform(X_test)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X_test_dataset = column_transformer.transform(test_dataset)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"reg = XGBRegressor(n_estimators=1000, max_depth=7, eta=0.1, subsample=0.7)\nreg.fit(X_train, y_train)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"y_pred = reg.predict(X_test)\ny_test_pred = reg.predict(X_test_dataset)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### SUBMISSION","metadata":{}},{"cell_type":"code","source":"submission_df = pd.read_csv('/kaggle/input/playground-series-s4e12/sample_submission.csv')\nsubmission_df['Premium Amount'] = y_test_pred\nsubmission_df.to_csv('submission.csv', index=False)\nprint(submission_df.head())","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}