{"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":30804,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom sklearn.model_selection import StratifiedKFold, train_test_split\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.preprocessing import StandardScaler, OneHotEncoder\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.metrics import mean_squared_error\n\nfrom xgboost import XGBClassifier\nfrom catboost import CatBoostClassifier\nimport lightgbm as lgb\nimport xgboost as xgb\nimport optuna\nimport warnings","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-12-17T09:24:37.575777Z","iopub.execute_input":"2024-12-17T09:24:37.576184Z","iopub.status.idle":"2024-12-17T09:24:37.582864Z","shell.execute_reply.started":"2024-12-17T09:24:37.576149Z","shell.execute_reply":"2024-12-17T09:24:37.581629Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_df = pd.read_csv(\"/kaggle/input/playground-series-s4e12/train.csv\")\ntest_df = pd.read_csv(\"/kaggle/input/playground-series-s4e12/test.csv\")\n\n# train_df.head()\ntest_df.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-17T09:22:42.061731Z","iopub.execute_input":"2024-12-17T09:22:42.062513Z","iopub.status.idle":"2024-12-17T09:22:52.784732Z","shell.execute_reply.started":"2024-12-17T09:22:42.062468Z","shell.execute_reply":"2024-12-17T09:22:52.78365Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def preprocess(df, df_type = \"train\"):\n    df = df.drop([\"id\"], axis=1)\n    numeric_cols = df.select_dtypes(include=['float64', 'int64']).columns.to_list()\n    categorical_cols = df.select_dtypes(include=['object', 'category']).columns.to_list()\n    \n    target_df = 0\n    if df_type == \"train\":\n        target_df = df[\"Premium Amount\"]\n        df = df.drop([\"Premium Amount\"], axis=1)\n        \n    # Fill with Median\n    for col in [\"Age\", \"Annual Income\", \"Health Score\", \"Credit Score\", \"Vehicle Age\"]:\n        df[col] = df[col].fillna(df[col].median())\n    \n    # Fill with zero\n    for col in [\"Number of Dependents\", \"Previous Claims\", \"Insurance Duration\"]:\n        df[col] = df[col].fillna(0)\n    \n    df[\"Marital Status\"] = df[\"Marital Status\"].fillna(\"Unknown\")\n    df[\"Occupation\"] = df[\"Occupation\"].fillna(\"Unknown\")\n    df[\"Customer Feedback\"] = df[\"Customer Feedback\"].fillna(\"Average\")\n    df['Policy Start Date'] = pd.to_datetime(df['Policy Start Date'])\n\n    # Extract month and year into separate columns\n    df['start_month'] = df['Policy Start Date'].dt.month\n    df['start_year'] = df['Policy Start Date'].dt.year\n    \n    del df['Policy Start Date']\n    categorical_cols.remove('Policy Start Date')\n    df = pd.get_dummies(df, columns=categorical_cols, dtype='int', drop_first=True)\n\n    return df, target_df","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-17T09:22:58.605168Z","iopub.execute_input":"2024-12-17T09:22:58.60571Z","iopub.status.idle":"2024-12-17T09:22:58.616682Z","shell.execute_reply.started":"2024-12-17T09:22:58.605658Z","shell.execute_reply":"2024-12-17T09:22:58.615296Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data, target = preprocess(train_df, df_type = \"train\")\ntest_data, _ = preprocess(test_df, df_type = \"test\")\nX_train, X_val, y_train, y_val = train_test_split(train_data, target, test_size=0.2, random_state=42)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-17T09:23:09.400155Z","iopub.execute_input":"2024-12-17T09:23:09.400544Z","iopub.status.idle":"2024-12-17T09:23:14.426395Z","shell.execute_reply.started":"2024-12-17T09:23:09.400512Z","shell.execute_reply":"2024-12-17T09:23:14.425325Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\nmodel = xgb.XGBRegressor(colsample_bytree= 0.9,\n    learning_rate= 0.01,\n    max_depth= 7,\n    n_estimators= 300,\n    subsample= 0.8\n)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-17T09:26:11.641588Z","iopub.execute_input":"2024-12-17T09:26:11.642041Z","iopub.status.idle":"2024-12-17T09:26:11.648377Z","shell.execute_reply.started":"2024-12-17T09:26:11.642005Z","shell.execute_reply":"2024-12-17T09:26:11.646651Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.fit(X_train,y_train)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-17T09:26:33.981468Z","iopub.execute_input":"2024-12-17T09:26:33.981899Z","iopub.status.idle":"2024-12-17T09:26:55.562186Z","shell.execute_reply.started":"2024-12-17T09:26:33.981862Z","shell.execute_reply":"2024-12-17T09:26:55.561121Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"predicts = model.predict(test_data)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-17T09:31:36.018745Z","iopub.execute_input":"2024-12-17T09:31:36.019163Z","iopub.status.idle":"2024-12-17T09:31:39.021214Z","shell.execute_reply.started":"2024-12-17T09:31:36.019128Z","shell.execute_reply":"2024-12-17T09:31:39.020354Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sub = pd.read_csv(\"/kaggle/input/playground-series-s4e12/sample_submission.csv\")\nsub[\"Premium Amount\"] = predicts \nsub.to_csv(\"submission.csv\", index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-17T09:31:41.705576Z","iopub.execute_input":"2024-12-17T09:31:41.705949Z","iopub.status.idle":"2024-12-17T09:31:43.07356Z","shell.execute_reply.started":"2024-12-17T09:31:41.705918Z","shell.execute_reply":"2024-12-17T09:31:43.072453Z"}},"outputs":[],"execution_count":null}]}