{"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":82611,"databundleVersionId":9553358,"sourceType":"competition"}],"dockerImageVersionId":30787,"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)\n\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","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-10-27T05:04:46.944674Z","iopub.execute_input":"2024-10-27T05:04:46.945633Z","iopub.status.idle":"2024-10-27T05:04:48.268052Z","shell.execute_reply.started":"2024-10-27T05:04:46.945553Z","shell.execute_reply":"2024-10-27T05:04:48.266666Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:04:55.616385Z","iopub.execute_input":"2024-10-27T05:04:55.616960Z","iopub.status.idle":"2024-10-27T05:04:55.622327Z","shell.execute_reply.started":"2024-10-27T05:04:55.616917Z","shell.execute_reply":"2024-10-27T05:04:55.621163Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train = pd.read_csv('/kaggle/input/brist1d/train.csv')\ndf_test = pd.read_csv('/kaggle/input/brist1d/test.csv')\n\ndf_train.sample(3)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:04:56.297921Z","iopub.execute_input":"2024-10-27T05:04:56.298486Z","iopub.status.idle":"2024-10-27T05:05:11.610279Z","shell.execute_reply.started":"2024-10-27T05:04:56.298432Z","shell.execute_reply":"2024-10-27T05:05:11.609102Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(df_train.shape)\nprint(df_test.shape)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:11.612420Z","iopub.execute_input":"2024-10-27T05:05:11.612800Z","iopub.status.idle":"2024-10-27T05:05:11.619240Z","shell.execute_reply.started":"2024-10-27T05:05:11.612757Z","shell.execute_reply":"2024-10-27T05:05:11.617947Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.info()","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:11.620930Z","iopub.execute_input":"2024-10-27T05:05:11.621334Z","iopub.status.idle":"2024-10-27T05:05:11.678096Z","shell.execute_reply.started":"2024-10-27T05:05:11.621287Z","shell.execute_reply":"2024-10-27T05:05:11.676926Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"## Drop all object column\ndf_train = df_train.select_dtypes(exclude=['object'])\ndf_test= df_test.select_dtypes(exclude=['object'])\nprint(df_train.shape)\nprint(df_test.shape)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:11.681412Z","iopub.execute_input":"2024-10-27T05:05:11.681914Z","iopub.status.idle":"2024-10-27T05:05:12.020040Z","shell.execute_reply.started":"2024-10-27T05:05:11.681838Z","shell.execute_reply":"2024-10-27T05:05:12.018722Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.duplicated().sum()","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:12.021449Z","iopub.execute_input":"2024-10-27T05:05:12.021919Z","iopub.status.idle":"2024-10-27T05:05:13.870998Z","shell.execute_reply.started":"2024-10-27T05:05:12.021851Z","shell.execute_reply":"2024-10-27T05:05:13.869646Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:13.872249Z","iopub.execute_input":"2024-10-27T05:05:13.872586Z","iopub.status.idle":"2024-10-27T05:05:14.005138Z","shell.execute_reply.started":"2024-10-27T05:05:13.872549Z","shell.execute_reply":"2024-10-27T05:05:14.003862Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Calculate the percentage of missing data in each column of df_train\nmissing_percent_train = df_train.isnull().mean() * 100\n\n# Identify columns with more than 90% missing data in df_train\ncolumns_to_drop = missing_percent_train[missing_percent_train > 90].index\n\n# Drop the identified columns from both df_train and df_test\ndf_train = df_train.drop(columns=columns_to_drop)\ndf_test= df_test.drop(columns=columns_to_drop)\n\n# Check the result\nprint(f\"Columns dropped: {columns_to_drop}\")\nprint(\"Updated df_train:\")\ndf_train.shape\nprint(\"Updated df_test:\")\ndf_test.shape","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:14.006778Z","iopub.execute_input":"2024-10-27T05:05:14.007261Z","iopub.status.idle":"2024-10-27T05:05:14.297982Z","shell.execute_reply.started":"2024-10-27T05:05:14.007209Z","shell.execute_reply":"2024-10-27T05:05:14.296842Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y = df_train['bg+1:00']\ndf_train = df_train.drop(columns = ['bg+1:00'])","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:14.299603Z","iopub.execute_input":"2024-10-27T05:05:14.300084Z","iopub.status.idle":"2024-10-27T05:05:14.457840Z","shell.execute_reply.started":"2024-10-27T05:05:14.300030Z","shell.execute_reply":"2024-10-27T05:05:14.456834Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(df_train.shape)\nprint(df_test.shape)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:14.459219Z","iopub.execute_input":"2024-10-27T05:05:14.459668Z","iopub.status.idle":"2024-10-27T05:05:14.465336Z","shell.execute_reply.started":"2024-10-27T05:05:14.459610Z","shell.execute_reply":"2024-10-27T05:05:14.464186Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Calculate the percentage of missing data for each column\nmissing_percentage = df_train.isnull().mean() * 100\n\n# Filter columns with more than 50% missing data and print their names\ncolumns_with_missing_data = missing_percentage[missing_percentage > 50].index\nprint(\"Columns with more than 50% missing data:\")\nprint(columns_with_missing_data)\n","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:14.469459Z","iopub.execute_input":"2024-10-27T05:05:14.469896Z","iopub.status.idle":"2024-10-27T05:05:14.583084Z","shell.execute_reply.started":"2024-10-27T05:05:14.469821Z","shell.execute_reply":"2024-10-27T05:05:14.581929Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Calculate the percentage of missing data for each column\nmissing_percentage = df_train.isnull().mean() * 100\n\n# Filter columns with more than 50% missing data and print their names\ncolumns_with_missing_data = missing_percentage[missing_percentage > 20].index\nprint(\"Columns with more than 50% missing data:\")\nprint(columns_with_missing_data)\n","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:14.584310Z","iopub.execute_input":"2024-10-27T05:05:14.584657Z","iopub.status.idle":"2024-10-27T05:05:14.694312Z","shell.execute_reply.started":"2024-10-27T05:05:14.584619Z","shell.execute_reply":"2024-10-27T05:05:14.693195Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(df_train.shape)\nprint(df_test.shape)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:14.695854Z","iopub.execute_input":"2024-10-27T05:05:14.696277Z","iopub.status.idle":"2024-10-27T05:05:14.702531Z","shell.execute_reply.started":"2024-10-27T05:05:14.696236Z","shell.execute_reply":"2024-10-27T05:05:14.701339Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Calculate the percentage of missing data in each column of df_train\nmissing_percent_train = df_train.isnull().mean() * 100\n\n# Identify columns with more than 90% missing data in df_train\ncolumns_to_drop = missing_percent_train[missing_percent_train > 20].index\n\n# Drop the identified columns from both df_train and df_test\ndf_train = df_train.drop(columns=columns_to_drop)\ndf_test= df_test.drop(columns=columns_to_drop)\n\n# Check the result\nprint(f\"Columns dropped: {columns_to_drop}\")\nprint(\"Updated df_train:\")\ndf_train.shape\nprint(\"Updated df_test:\")\ndf_test.shape","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:14.704086Z","iopub.execute_input":"2024-10-27T05:05:14.704515Z","iopub.status.idle":"2024-10-27T05:05:14.897096Z","shell.execute_reply.started":"2024-10-27T05:05:14.704473Z","shell.execute_reply":"2024-10-27T05:05:14.895868Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(df_train.shape)\nprint(df_test.shape)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:14.898973Z","iopub.execute_input":"2024-10-27T05:05:14.899320Z","iopub.status.idle":"2024-10-27T05:05:14.904913Z","shell.execute_reply.started":"2024-10-27T05:05:14.899283Z","shell.execute_reply":"2024-10-27T05:05:14.903844Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.impute import SimpleImputer\nimport pandas as pd\n\n# Use median (you can also try mean or most_frequent based on your data)\nimputer = SimpleImputer(strategy='median')\n\n# Fit on df_train and transform both df_train and df_test\ndf_train_imputed = imputer.fit_transform(df_train)\ndf_test_imputed = imputer.transform(df_test)\n\n# Convert the NumPy arrays back to DataFrames and retain the original column names\ndf_train = pd.DataFrame(df_train_imputed, columns=df_train.columns)\ndf_test = pd.DataFrame(df_test_imputed, columns=df_test.columns)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:14.906351Z","iopub.execute_input":"2024-10-27T05:05:14.906710Z","iopub.status.idle":"2024-10-27T05:05:20.225946Z","shell.execute_reply.started":"2024-10-27T05:05:14.906670Z","shell.execute_reply":"2024-10-27T05:05:20.224921Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:20.227167Z","iopub.execute_input":"2024-10-27T05:05:20.227680Z","iopub.status.idle":"2024-10-27T05:05:20.279147Z","shell.execute_reply.started":"2024-10-27T05:05:20.227641Z","shell.execute_reply":"2024-10-27T05:05:20.277950Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:20.280663Z","iopub.execute_input":"2024-10-27T05:05:20.281114Z","iopub.status.idle":"2024-10-27T05:05:20.291661Z","shell.execute_reply.started":"2024-10-27T05:05:20.281071Z","shell.execute_reply":"2024-10-27T05:05:20.290468Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nX_train,X_test,y_train,y_test = train_test_split(df_train , y , test_size = 0.1 , random_state = 42)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:20.293179Z","iopub.execute_input":"2024-10-27T05:05:20.293638Z","iopub.status.idle":"2024-10-27T05:05:20.502460Z","shell.execute_reply.started":"2024-10-27T05:05:20.293593Z","shell.execute_reply":"2024-10-27T05:05:20.501230Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Replace special characters in feature names\nX_train.columns = X_train.columns.str.replace('[^A-Za-z0-9_]+', '_', regex=True)\nX_test.columns = X_test.columns.str.replace('[^A-Za-z0-9_]+', '_', regex=True)\n\ndf_test.columns = df_test.columns.str.replace('[^A-Za-z0-9_]+', '_', regex=True)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:20.503858Z","iopub.execute_input":"2024-10-27T05:05:20.504211Z","iopub.status.idle":"2024-10-27T05:05:20.513300Z","shell.execute_reply.started":"2024-10-27T05:05:20.504173Z","shell.execute_reply":"2024-10-27T05:05:20.511946Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(X_train.shape)\nprint(X_test.shape)\nprint(y_train.shape)\nprint(y_test.shape)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:20.514773Z","iopub.execute_input":"2024-10-27T05:05:20.515198Z","iopub.status.idle":"2024-10-27T05:05:20.528094Z","shell.execute_reply.started":"2024-10-27T05:05:20.515159Z","shell.execute_reply":"2024-10-27T05:05:20.526958Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.ensemble import HistGradientBoostingRegressor\nfrom sklearn.metrics import r2_score, mean_squared_error\nimport numpy as np\n\n# Define the model with parameters from Trial 0\nmodel = HistGradientBoostingRegressor(\n    max_iter=240, \n    learning_rate=0.13881198448914728, \n    max_depth=15, \n    random_state=42\n)\n\n# Train the model on the training data\nmodel.fit(X_train, y_train)\n\n# Make predictions\ny_pred = model.predict(X_train)\n\n# Calculate R2 score and RMSE\nr2 = r2_score(y_train, y_pred)\nrmse = np.sqrt(mean_squared_error(y_train, y_pred))\n\nprint(f\"R2 Score: {r2}\")\nprint(f\"RMSE: {rmse}\")","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:05:20.529673Z","iopub.execute_input":"2024-10-27T05:05:20.530158Z","iopub.status.idle":"2024-10-27T05:05:39.250833Z","shell.execute_reply.started":"2024-10-27T05:05:20.530105Z","shell.execute_reply":"2024-10-27T05:05:39.249818Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.ensemble import ExtraTreesRegressor\nfrom sklearn.metrics import r2_score, mean_squared_error\nimport numpy as np\n\n# Define the model with parameters from Trial 11\nmodel1 = ExtraTreesRegressor(\n    n_estimators=214, \n    max_depth=30, \n    random_state=42\n)\n\n# Train the model on the training data\nmodel1.fit(X_train, y_train)\n\n# Make predictions\ny_pred = model1.predict(X_train)\n\n# Calculate R2 score and RMSE\nr2 = r2_score(y_train, y_pred)\nrmse = np.sqrt(mean_squared_error(y_train, y_pred))\n\nprint(f\"R2 Score: {r2}\")\nprint(f\"RMSE: {rmse}\")","metadata":{"execution":{"iopub.status.busy":"2024-10-27T05:35:36.594104Z","iopub.execute_input":"2024-10-27T05:35:36.595014Z","iopub.status.idle":"2024-10-27T06:01:19.889033Z","shell.execute_reply.started":"2024-10-27T05:35:36.594962Z","shell.execute_reply":"2024-10-27T06:01:19.887870Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.ensemble import HistGradientBoostingRegressor\nfrom sklearn.metrics import r2_score, mean_squared_error\nimport numpy as np\n\n# Define the model with parameters from Trial 0\nmodel2 = HistGradientBoostingRegressor(\n    max_iter=240, \n    learning_rate=0.13881198448914728, \n    max_depth=15, \n    random_state=42\n)\n\n# Train the model on the training data\nmodel2.fit(X_train, y_train)\n\n# Make predictions\ny_pred = model2.predict(X_train)\n\n# Calculate R2 score and RMSE\nr2 = r2_score(y_train, y_pred)\nrmse = np.sqrt(mean_squared_error(y_train, y_pred))\n\nprint(f\"R2 Score: {r2}\")\nprint(f\"RMSE: {rmse}\")","metadata":{"execution":{"iopub.status.busy":"2024-10-27T06:01:19.891511Z","iopub.execute_input":"2024-10-27T06:01:19.892631Z","iopub.status.idle":"2024-10-27T06:01:36.831279Z","shell.execute_reply.started":"2024-10-27T06:01:19.892563Z","shell.execute_reply":"2024-10-27T06:01:36.830381Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred = model1.predict(df_test)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T06:01:36.832933Z","iopub.execute_input":"2024-10-27T06:01:36.833655Z","iopub.status.idle":"2024-10-27T06:01:37.378433Z","shell.execute_reply.started":"2024-10-27T06:01:36.833598Z","shell.execute_reply":"2024-10-27T06:01:37.377368Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred = model.predict(df_test)\ny_pred1 = model1.predict(df_test)\ny_pred2 = model2.predict(df_test)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T06:01:37.381492Z","iopub.execute_input":"2024-10-27T06:01:37.381995Z","iopub.status.idle":"2024-10-27T06:01:38.009650Z","shell.execute_reply.started":"2024-10-27T06:01:37.381942Z","shell.execute_reply":"2024-10-27T06:01:38.008685Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test = pd.read_csv('/kaggle/input/brist1d/test.csv')\nsubmission = pd.DataFrame()\nsubmission['id'] = df_test['id']\nsubmission['bg+1:00'] = y_pred\n\nsubmission.to_csv('submission.csv' , index = None)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T06:01:38.011028Z","iopub.execute_input":"2024-10-27T06:01:38.011584Z","iopub.status.idle":"2024-10-27T06:01:38.301640Z","shell.execute_reply.started":"2024-10-27T06:01:38.011540Z","shell.execute_reply":"2024-10-27T06:01:38.300607Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test = pd.read_csv('/kaggle/input/brist1d/test.csv')\nsubmission = pd.DataFrame()\nsubmission['id'] = df_test['id']\nsubmission['bg+1:00'] = y_pred1\n\nsubmission.to_csv('submission1.csv' , index = None)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T06:01:38.303033Z","iopub.execute_input":"2024-10-27T06:01:38.303477Z","iopub.status.idle":"2024-10-27T06:01:38.573468Z","shell.execute_reply.started":"2024-10-27T06:01:38.303426Z","shell.execute_reply":"2024-10-27T06:01:38.572533Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test = pd.read_csv('/kaggle/input/brist1d/test.csv')\nsubmission = pd.DataFrame()\nsubmission['id'] = df_test['id']\nsubmission['bg+1:00'] = y_pred2\n\nsubmission.to_csv('submission2.csv' , index = None)","metadata":{"execution":{"iopub.status.busy":"2024-10-27T06:01:38.574702Z","iopub.execute_input":"2024-10-27T06:01:38.575064Z","iopub.status.idle":"2024-10-27T06:01:38.847559Z","shell.execute_reply.started":"2024-10-27T06:01:38.575026Z","shell.execute_reply":"2024-10-27T06:01:38.846507Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train1 = model.predict(X_train)\ny_train2 = model1.predict(X_train)\ny_train3 = model2.predict(X_train)\n\nr2 = r2_score(y_train1, y_train)\nrmse = np.sqrt(mean_squared_error(y_train1, y_train))\nprint('model1')\nprint(f\"R2 Score: {r2}\")\nprint(f\"RMSE: {rmse}\")\n\nr2 = r2_score(y_train2, y_train)\nrmse = np.sqrt(mean_squared_error(y_train2, y_train))\nprint('model2')\nprint(f\"R2 Score: {r2}\")\nprint(f\"RMSE: {rmse}\")\n\nr2 = r2_score(y_train3, y_train)\nrmse = np.sqrt(mean_squared_error(y_train3, y_train))\nprint('model3')\nprint(f\"R2 Score: {r2}\")\nprint(f\"RMSE: {rmse}\")","metadata":{"execution":{"iopub.status.busy":"2024-10-27T06:01:39.207566Z","iopub.execute_input":"2024-10-27T06:01:39.208000Z","iopub.status.idle":"2024-10-27T06:02:05.243492Z","shell.execute_reply.started":"2024-10-27T06:01:39.207949Z","shell.execute_reply":"2024-10-27T06:02:05.242584Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}