{"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":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom tensorflow.keras.models import load_model, Sequential\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense\nfrom tensorflow.keras.optimizers import Adam\nfrom tensorflow.keras.regularizers import l2\nfrom tensorflow.keras.callbacks import EarlyStopping\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import StandardScaler\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-01-06T10:46:54.25203Z","iopub.execute_input":"2025-01-06T10:46:54.253424Z","iopub.status.idle":"2025-01-06T10:46:54.277367Z","shell.execute_reply.started":"2025-01-06T10:46:54.253361Z","shell.execute_reply":"2025-01-06T10:46:54.275516Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Load dfs\ndf_train = pd.read_csv('/kaggle/input/playground-series-s4e12/train.csv')\ndf_test = pd.read_csv('/kaggle/input/playground-series-s4e12/test.csv')\ndf_sample = pd.read_csv('/kaggle/input/playground-series-s4e12/sample_submission.csv')\n\n# Describe df_train\nprint(df_train.info())\nprint(df_train.describe())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-06T10:36:27.749469Z","iopub.execute_input":"2025-01-06T10:36:27.750253Z","iopub.status.idle":"2025-01-06T10:36:41.421673Z","shell.execute_reply.started":"2025-01-06T10:36:27.750217Z","shell.execute_reply":"2025-01-06T10:36:41.420004Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Since the df is too big we'll use a sample\ndf_sampletrain = df_train.sample(1000)\n\n# Scatterplot to see distribution\nplt.figure(figsize=(3,2))\nsns.scatterplot(x='id', y='Premium Amount', data=df_sampletrain)\nplt.title('Premium amount for IDs')\nplt.show()\n\n# Trying other plots\nplt.figure(figsize=(3,2))\nsns.regplot(x='Annual Income', y='Premium Amount', data=df_sampletrain)\nplt.title('Annual income VS Premium amount')\nplt.show()\n\nplt.figure(figsize=(3,2))\nsns.regplot(x='Age', y='Premium Amount', data=df_sampletrain)\nplt.title('Age VS Premium amount')\nplt.show()\n\n# Plot the distribution of Premium Amount\nplt.figure(figsize=(3,2))\nsns.histplot(df_train['Premium Amount'], kde=True)\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-06T10:41:56.675661Z","iopub.execute_input":"2025-01-06T10:41:56.67605Z","iopub.status.idle":"2025-01-06T10:42:00.222419Z","shell.execute_reply.started":"2025-01-06T10:41:56.676023Z","shell.execute_reply":"2025-01-06T10:42:00.220427Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Pre processing data\n# Drop missing values\ndf_train = df_train.dropna()\ndf_test = df_test.dropna()\n\n# Select relevant numerical columns\nnumerical_columns = [\n    'Age', 'Annual Income', 'Number of Dependents', 'Health Score',\n    'Previous Claims', 'Vehicle Age', 'Credit Score', 'Insurance Duration'\n]\n\n# Prepare X_train and X_test\nX_train = df_train[numerical_columns]\nX_test = df_test[numerical_columns]\n\n# Prepare y_train\ny_train = df_train['Premium Amount']","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-06T10:36:42.4873Z","iopub.execute_input":"2025-01-06T10:36:42.487771Z","iopub.status.idle":"2025-01-06T10:36:43.773529Z","shell.execute_reply.started":"2025-01-06T10:36:42.487721Z","shell.execute_reply":"2025-01-06T10:36:43.772061Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Starting with Deep Learning model\n# Define model Sequential CNN\nmodel = Sequential()\n\n# Create layers\nmodel.add(Dense(512, activation='relu', input_shape=(X_train.shape[1],), kernel_regularizer=l2(0.01)))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(256, activation='relu', kernel_regularizer=l2(0.01)))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(128, activation='relu', kernel_regularizer=l2(0.01)))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(64, activation='relu', kernel_regularizer=l2(0.01)))\n# Output layer for regression\nmodel.add(Dense(1, activation='linear')) \n\n# Compile model\noptimizer = Adam(learning_rate=0.001)\nmodel.compile(optimizer=optimizer, loss='mean_squared_error', metrics=['mae'])\n\n# Print output of the model\nprint(model.summary())\n\n\n# Split the data into training and validation sets\nX_train_split, X_val_split, y_train_split, y_val_split = train_test_split(X_train, y_train, test_size=0.2, random_state=42)\n\n# Train the model\nhistory = model.fit(X_train_split, y_train_split, validation_data=(X_val_split, y_val_split), batch_size=10000, epochs=50)\n\n\n# Evaluate the model on the validation set\nval_loss, val_mae = model.evaluate(X_val_split, y_val_split)\nprint(f'Validation Loss: {val_loss}, Validation MAE: {val_mae}')\n\n# Make predictions on the test set\ny_pred = model.predict(X_test)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-06T10:47:31.371809Z","iopub.execute_input":"2025-01-06T10:47:31.372191Z","iopub.status.idle":"2025-01-06T10:53:06.733886Z","shell.execute_reply.started":"2025-01-06T10:47:31.372163Z","shell.execute_reply":"2025-01-06T10:53:06.732389Z"}},"outputs":[],"execution_count":null}]}