{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"colab":{"provenance":[]},"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":"code","source":"import numpy as np  # Import numpy for numerical operations\nimport pandas as pd  # Import pandas for data manipulation\nimport os  # Import os for file operations\n\nimport matplotlib.pyplot as plt\nfrom scipy import sparse\nimport seaborn as sns\n\nfrom sklearn.compose import ColumnTransformer\n\n# Preprocessing\nfrom sklearn.preprocessing import MinMaxScaler, OneHotEncoder\nfrom sklearn.decomposition import PCA\n\n# Text cleaning\nimport re\nfrom sklearn.feature_extraction.text import CountVectorizer\n\n# Model selection\nfrom sklearn.model_selection import train_test_split, GridSearchCV\nfrom sklearn.pipeline import Pipeline\n\n# Models for Regression\nfrom sklearn.linear_model import LinearRegression, Ridge, Lasso\nfrom sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\nfrom sklearn.neighbors import KNeighborsRegressor\n\n# Accuracy/Error metrics for Regression\nfrom sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score\n","metadata":{"id":"Ax-5HArOwd7g"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_data = pd.read_csv(\"/kaggle/input/playground-series-s4e12/test.csv\")\ntrain_data = pd.read_csv(\"/kaggle/input/playground-series-s4e12/train.csv\")\nsample_data = pd.read_csv(\"/kaggle/input/playground-series-s4e12/sample_submission.csv\")","metadata":{"id":"I6wJ52o4xHiy"},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# **Dummy classifier**","metadata":{"id":"2dyqtWQF4fA0"}},{"cell_type":"code","source":"from sklearn.dummy import DummyRegressor\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import mean_squared_error\nimport numpy as np\nfrom sklearn.preprocessing import LabelEncoder\n\n# Assuming the data is already cleaned and features are selected\n# Encode categorical features if needed (e.g., Gender)\nlabel_encoder = LabelEncoder()\ntrain_data['Gender'] = label_encoder.fit_transform(train_data['Gender'])\n\n# Select features (X) and target (y)\nX = train_data[['Age', 'Annual Income', 'Number of Dependents', 'Vehicle Age', 'Credit Score']]\ny = train_data['Premium Amount']\n\n# Train-test split\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n\n# Create and fit the Dummy Regressor model (predicting the mean of the target)\ndummy_model = DummyRegressor(strategy=\"mean\")\ndummy_model.fit(X_train, y_train)\n\n# Predictions\ny_pred = dummy_model.predict(X_test)\n\n# Calculate RMSE (Root Mean Squared Error)\nrmse = np.sqrt(mean_squared_error(y_test, y_pred))\n\n# Output RMSE\nprint(f'RMSE of Dummy Regressor: {rmse}')\n","metadata":{"id":"yMkViWU22TNX","outputId":"d315da65-5b7b-4aa8-c65c-819624c934b0"},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# **EDA**","metadata":{"id":"iNDKVA2O4py2"}},{"cell_type":"code","source":"train_data.info()","metadata":{"id":"8cR_KTGrxd2x","outputId":"644aaa18-cc83-4c39-dfe0-a9936ac53a06"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data.head(n=5)","metadata":{"id":"86qDMuBzxqLh","outputId":"dfaa4104-5131-4889-8b0c-fe2e9dce12e1"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data.isnull().sum()","metadata":{"id":"XsP_BpMJx99X","outputId":"c0eae1e6-c296-4a6f-c49e-4a4d08a1d079"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data.nunique()","metadata":{"id":"z1_Mk4cvyQh4","outputId":"343fc414-e6a0-4758-b8db-2686f9ea96cd"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"numerical_cols = train_data.select_dtypes(include=['float64', 'int64']).columns\ncategorical_cols = train_data.select_dtypes(include=['object']).columns\nprint(numerical_cols,categorical_cols)","metadata":{"id":"ivsisDLB5jaF","outputId":"00ac786d-fc55-4981-e94d-e200820d6852"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data[numerical_cols] = train_data[numerical_cols].fillna(train_data[numerical_cols].mean())\n\ntrain_data[categorical_cols] = train_data[categorical_cols].fillna(train_data[categorical_cols].mode().iloc[0])\n","metadata":{"id":"juR-XdIE6f_k"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data.isnull().sum()","metadata":{"id":"sl6YrPv56nJb","outputId":"591d0343-4f43-4712-f706-fe34dc6b01fe"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#train_data.drop(columns=['Marital Status','Education Level'], inplace=True)","metadata":{"id":"IlW2nqAb8t4J"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Identify categorical columns\ncategorical_cols = train_data.select_dtypes(include=['object']).columns.tolist()\n\n# Drop all categorical columns\ntrain_data.drop(columns=categorical_cols, inplace=True)\n\n# Check the result\nprint(train_data.head())\n","metadata":{"id":"ragMJhOW_WhA","outputId":"f552cee5-70d8-483d-eb1f-2c035bc405ef"},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Split data","metadata":{"id":"gBSJ6UnA7lmW"}},{"cell_type":"code","source":"X = train_data.drop(columns=['Premium Amount'])  # Replace 'Premium Amount' with your target variable\ny = train_data['Premium Amount']\n\n# Step 5: Split the data into training and testing sets\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n","metadata":{"id":"rXJqjzB56qaC"},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# **Modelling**","metadata":{"id":"yZZAC4th7xGF"}},{"cell_type":"code","source":"model = LinearRegression()\nmodel.fit(X_train, y_train)\n\n#  Make predictions\ny_pred = model.predict(X_test)\n\n# Evaluate the model performance\nmse = mean_squared_error(y_test, y_pred)\nrmse = mse ** 0.5\nr2 = r2_score(y_test, y_pred)\nprint(r2)\n","metadata":{"id":"DDfCa_G378CQ","outputId":"2a6c9326-9ea4-4bcb-80ba-efcecc74bf11"},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sub = pd.read_csv(\"/kaggle/input/playground-series-s4e12/sample_submission.csv\")\nsub[\"Premium Amount\"] = np.exp(y_pred )-1\nsub.to_csv(\"submission.csv\",index=False)\nprint( sub.shape )\nsub.head()\n","metadata":{"id":"_FI3V5PuSU4B","outputId":"c78c8c1b-a1e8-4c43-84be-eaec04e272d2"},"outputs":[],"execution_count":null}]}