{"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":"gpu","dataSources":[{"sourceId":82611,"databundleVersionId":9553358,"sourceType":"competition"}],"dockerImageVersionId":30787,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"![understanding-glucose.jpg](attachment:1ab44bd7-8717-4adf-ae7e-0c94dac9c01c.jpg)","metadata":{},"attachments":{"1ab44bd7-8717-4adf-ae7e-0c94dac9c01c.jpg":{"image/jpeg":"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"}}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport xgboost as xgb\nimport lightgbm as lgb\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.preprocessing import StandardScaler, OrdinalEncoder, MinMaxScaler \nfrom xgboost import XGBRegressor\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.metrics import mean_squared_error\n\nimport warnings\nwarnings.filterwarnings('ignore')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:48:08.320136Z","iopub.execute_input":"2024-11-05T01:48:08.320503Z","iopub.status.idle":"2024-11-05T01:48:14.100838Z","shell.execute_reply.started":"2024-11-05T01:48:08.320467Z","shell.execute_reply":"2024-11-05T01:48:14.09974Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train = pd.read_csv('/kaggle/input/brist1d/train.csv',low_memory=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:48:14.102902Z","iopub.execute_input":"2024-11-05T01:48:14.1052Z","iopub.status.idle":"2024-11-05T01:48:32.154419Z","shell.execute_reply.started":"2024-11-05T01:48:14.105161Z","shell.execute_reply":"2024-11-05T01:48:32.153509Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train.head().T","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:48:32.155849Z","iopub.execute_input":"2024-11-05T01:48:32.156289Z","iopub.status.idle":"2024-11-05T01:48:32.180565Z","shell.execute_reply.started":"2024-11-05T01:48:32.156236Z","shell.execute_reply":"2024-11-05T01:48:32.179516Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(f'\\033[94mNumber of records (rows) in the dataset are: {train.shape[0]}')\nprint(f'\\033[94mNumber of features (columns) in the dataset are: {train.shape[1]}')\nprint(f'\\033[94mNumber of duplicate entries in the dataset are: {train.duplicated().sum()}')\nprint(f'\\033[94mNumber missing values in the dataset are: {sum(train.isna().sum())}')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:48:32.183318Z","iopub.execute_input":"2024-11-05T01:48:32.184032Z","iopub.status.idle":"2024-11-05T01:48:36.1324Z","shell.execute_reply.started":"2024-11-05T01:48:32.18399Z","shell.execute_reply":"2024-11-05T01:48:36.131344Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test = pd.read_csv('/kaggle/input/brist1d/test.csv',low_memory=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:48:36.13347Z","iopub.execute_input":"2024-11-05T01:48:36.133744Z","iopub.status.idle":"2024-11-05T01:48:36.468761Z","shell.execute_reply.started":"2024-11-05T01:48:36.133714Z","shell.execute_reply":"2024-11-05T01:48:36.467957Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test.head().T","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:48:36.469964Z","iopub.execute_input":"2024-11-05T01:48:36.470337Z","iopub.status.idle":"2024-11-05T01:48:36.483462Z","shell.execute_reply.started":"2024-11-05T01:48:36.470296Z","shell.execute_reply":"2024-11-05T01:48:36.482593Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(f'\\033[94mNumber of records (rows) in the dataset are: {test.shape[0]}')\nprint(f'\\033[94mNumber of features (columns) in the dataset are: {test.shape[1]}')\nprint(f'\\033[94mNumber of duplicate entries in the dataset are: {test.duplicated().sum()}')\nprint(f'\\033[94mNumber missing values in the dataset are: {sum(test.isna().sum())}')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:48:36.484721Z","iopub.execute_input":"2024-11-05T01:48:36.485043Z","iopub.status.idle":"2024-11-05T01:48:36.615209Z","shell.execute_reply.started":"2024-11-05T01:48:36.485011Z","shell.execute_reply":"2024-11-05T01:48:36.61421Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"mapping_dict = {p: idx for idx, p in enumerate(train['p_num'].unique())}\n\nfor df in [train, test]:\n    df['p_num'] = df['p_num'].map(mapping_dict)\n    df['time'] = pd.to_datetime(df['time'], format='%H:%M:%S')\n    df['hour'] = df['time'].dt.hour\n    df['minute'] = df['time'].dt.minute\n    df.drop('time', axis=1, inplace=True)\n    \n    df.drop(columns=['id'], inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:48:36.616518Z","iopub.execute_input":"2024-11-05T01:48:36.616912Z","iopub.status.idle":"2024-11-05T01:48:37.402413Z","shell.execute_reply.started":"2024-11-05T01:48:36.616867Z","shell.execute_reply":"2024-11-05T01:48:37.401384Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"activity_cols = [\n    'activity-5:55', 'activity-5:50', 'activity-5:45', 'activity-5:40',\n    'activity-5:35', 'activity-5:30', 'activity-5:25', 'activity-5:20',\n    'activity-5:15', 'activity-5:10', 'activity-5:05', 'activity-5:00',\n    'activity-4:55', 'activity-4:50', 'activity-4:45', 'activity-4:40',\n    'activity-4:35', 'activity-4:30', 'activity-4:25', 'activity-4:20',\n    'activity-4:15', 'activity-4:10', 'activity-4:05', 'activity-4:00',\n    'activity-3:55', 'activity-3:50', 'activity-3:45', 'activity-3:40',\n    'activity-3:35', 'activity-3:30', 'activity-3:25', 'activity-3:20',\n    'activity-3:15', 'activity-3:10', 'activity-3:05', 'activity-3:00',\n    'activity-2:55', 'activity-2:50', 'activity-2:45', 'activity-2:40',\n    'activity-2:35', 'activity-2:30', 'activity-2:25', 'activity-2:20',\n    'activity-2:15', 'activity-2:10', 'activity-2:05', 'activity-2:00',\n    'activity-1:55', 'activity-1:50', 'activity-1:45', 'activity-1:40',\n    'activity-1:35', 'activity-1:30', 'activity-1:25', 'activity-1:20',\n    'activity-1:15', 'activity-1:10', 'activity-1:05', 'activity-1:00',\n    'activity-0:55', 'activity-0:50', 'activity-0:45', 'activity-0:40',\n    'activity-0:35', 'activity-0:30', 'activity-0:25', 'activity-0:20',\n    'activity-0:15', 'activity-0:10', 'activity-0:05', 'activity-0:00'\n]\n\ntrain['dominant_activity'] = train[activity_cols].mode(axis=1)[0]\ntest['dominant_activity'] = test[activity_cols].mode(axis=1)[0]\n\nactivity_replace = {\n    'Walk': 'Walking',\n    'Run': 'Running',\n    'Swim': 'Swimming',\n}\n\ntrain['dominant_activity'].replace(activity_replace, inplace=True)\ntest['dominant_activity'].replace(activity_replace, inplace=True)\n\ntrain.drop(columns=activity_cols, inplace=True)\ntest.drop(columns=activity_cols, inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:48:37.403774Z","iopub.execute_input":"2024-11-05T01:48:37.404184Z","iopub.status.idle":"2024-11-05T01:49:27.117673Z","shell.execute_reply.started":"2024-11-05T01:48:37.404135Z","shell.execute_reply":"2024-11-05T01:49:27.116841Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"activity_counts = train['dominant_activity'].value_counts()\ntop_5_activities = activity_counts.head(10)\n\nplt.figure(figsize=(8, 4))\ntop_5_activities.plot(kind='barh', color='blue')\nplt.title('Top 10 Dominant Activities')\nplt.xlabel('Count')\nplt.ylabel('Activity')\nplt.grid(axis='x', linestyle='--')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:49:27.120506Z","iopub.execute_input":"2024-11-05T01:49:27.120862Z","iopub.status.idle":"2024-11-05T01:49:27.469706Z","shell.execute_reply.started":"2024-11-05T01:49:27.120826Z","shell.execute_reply":"2024-11-05T01:49:27.468768Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"threshold = 0.90\n\ntrain_missing_percentage = train.isnull().mean()\ntest_missing_percentage = test.isnull().mean()\n\ntrain_columns_to_drop = train_missing_percentage[train_missing_percentage > threshold].index\ntest_columns_to_drop = test_missing_percentage[test_missing_percentage > threshold].index\n\ncols_to_drop = set(train_columns_to_drop).union(set(test_columns_to_drop))\n\ntrain.drop(columns=cols_to_drop, inplace=True)\ntest.drop(columns=cols_to_drop, inplace=True)\n\nprint(f\"Shape of train after dropping columns: {train.shape}\")\nprint(f\"Shape of test after dropping columns: {test.shape}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:49:27.470745Z","iopub.execute_input":"2024-11-05T01:49:27.471065Z","iopub.status.idle":"2024-11-05T01:49:27.760028Z","shell.execute_reply.started":"2024-11-05T01:49:27.471032Z","shell.execute_reply":"2024-11-05T01:49:27.759067Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"cat_cols = train.select_dtypes(include=['object', 'category']).columns\n\nnum_cols = train.select_dtypes(exclude=['object', 'category']).columns.drop('bg+1:00')\n\nprint(\"Categorical Columns:\", cat_cols)\nprint(\"Numerical Columns:\", num_cols)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:49:27.761398Z","iopub.execute_input":"2024-11-05T01:49:27.761739Z","iopub.status.idle":"2024-11-05T01:49:27.950769Z","shell.execute_reply.started":"2024-11-05T01:49:27.761707Z","shell.execute_reply":"2024-11-05T01:49:27.94968Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def reduce_memory_usage(df):\n    start_mem = df.memory_usage().sum() / 1024**2\n    print(f\"Memory usage of dataframe is {start_mem:.2f} MB\")\n\n    for col in df.columns:\n        col_type = df[col].dtype\n\n        if col_type != object:\n            \n            if str(col_type).startswith('int'):\n                c_min = df[col].min()\n                c_max = df[col].max()\n                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:\n                    df[col] = df[col].astype(np.int8)\n                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:\n                    df[col] = df[col].astype(np.int16)\n                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:\n                    df[col] = df[col].astype(np.int32)\n                else:\n                    df[col] = df[col].astype(np.int64)\n            elif str(col_type).startswith('float'):\n                c_min = df[col].min()\n                c_max = df[col].max()\n                if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:\n                    df[col] = df[col].astype(np.float16)\n                elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:\n                    df[col] = df[col].astype(np.float32)\n                else:\n                    df[col] = df[col].astype(np.float64)\n        else:\n            \n            df[col] = df[col].astype('category')\n\n    end_mem = df.memory_usage().sum() / 1024**2\n    print(f\"Memory usage after optimization is {end_mem:.2f} MB\")\n    print(f\"Decreased by {(100 * (start_mem - end_mem) / start_mem):.1f}%\")\n\n    return df\n\ntrain = reduce_memory_usage(train)\ntest = reduce_memory_usage(test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:49:27.951856Z","iopub.execute_input":"2024-11-05T01:49:27.952154Z","iopub.status.idle":"2024-11-05T01:49:29.29106Z","shell.execute_reply.started":"2024-11-05T01:49:27.952122Z","shell.execute_reply":"2024-11-05T01:49:29.290027Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"target_column = 'bg+1:00'  \nX = train.drop(columns=[target_column])\ny = train[target_column]\n\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n\npreprocessor = ColumnTransformer([\n    ('num', Pipeline([\n        ('imputer', SimpleImputer(strategy='mean')), \n        ('scaler', MinMaxScaler())\n    ]), num_cols),\n    ('cat', Pipeline([\n        ('imputer', SimpleImputer(strategy='constant', fill_value='None')), \n        ('ordinal', OrdinalEncoder(handle_unknown='use_encoded_value', unknown_value=-1))\n    ]), cat_cols)\n])\n\nX_train_processed = preprocessor.fit_transform(X_train)\nX_test_processed = preprocessor.transform(X_test)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:49:29.292367Z","iopub.execute_input":"2024-11-05T01:49:29.292651Z","iopub.status.idle":"2024-11-05T01:49:35.561033Z","shell.execute_reply.started":"2024-11-05T01:49:29.292619Z","shell.execute_reply":"2024-11-05T01:49:35.559975Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"models = {\n    'XGBoost': XGBRegressor(tree_method='hist', device='cuda', objective='reg:squarederror', n_estimators=1000),\n    'LightGBM': lgb.LGBMRegressor(device='gpu',n_estimators=1000, verbose= -1),\n    'RandomForest': RandomForestRegressor(n_estimators=100, random_state=42, n_jobs=-1)\n}\n\nrmse_dict = {}\npredictions = []\n\nfor name, model in models.items():\n    model.fit(X_train_processed, y_train)\n    y_pred = model.predict(X_test_processed)\n    rmse = np.sqrt(mean_squared_error(y_test, y_pred))\n    rmse_dict[name] = rmse\n    predictions.append(y_pred)\n    print(f\"{name} RMSE: {rmse:.4f}\")\n\ny_pred_ensemble = np.mean(predictions, axis=0)\nrmse_ensemble = np.sqrt(mean_squared_error(y_test, y_pred_ensemble))\nprint(f\"Ensemble RMSE: {rmse_ensemble:.4f}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T01:49:35.562302Z","iopub.execute_input":"2024-11-05T01:49:35.562618Z","iopub.status.idle":"2024-11-05T02:09:54.131027Z","shell.execute_reply.started":"2024-11-05T01:49:35.562585Z","shell.execute_reply":"2024-11-05T02:09:54.130032Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X_submission_processed = preprocessor.transform(test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T02:09:54.132375Z","iopub.execute_input":"2024-11-05T02:09:54.132694Z","iopub.status.idle":"2024-11-05T02:09:54.241262Z","shell.execute_reply.started":"2024-11-05T02:09:54.132659Z","shell.execute_reply":"2024-11-05T02:09:54.240231Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"y_pred_submission_xgb = models['XGBoost'].predict(X_submission_processed)\ny_pred_submission_lgb = models['LightGBM'].predict(X_submission_processed)\ny_pred_submission_rf = models['RandomForest'].predict(X_submission_processed)\n\ny_pred_submission = (y_pred_submission_xgb + y_pred_submission_lgb + y_pred_submission_rf) / 3","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T02:09:54.242598Z","iopub.execute_input":"2024-11-05T02:09:54.243368Z","iopub.status.idle":"2024-11-05T02:09:54.554574Z","shell.execute_reply.started":"2024-11-05T02:09:54.243322Z","shell.execute_reply":"2024-11-05T02:09:54.553714Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"submission = pd.read_csv('/kaggle/input/brist1d/sample_submission.csv')\nsubmission = pd.DataFrame({\n    'id': submission['id'],  \n    'bg+1:00': y_pred_submission  \n})\n\nsubmission.to_csv('submission.csv', index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T02:09:54.555744Z","iopub.execute_input":"2024-11-05T02:09:54.556085Z","iopub.status.idle":"2024-11-05T02:09:54.583393Z","shell.execute_reply.started":"2024-11-05T02:09:54.556052Z","shell.execute_reply":"2024-11-05T02:09:54.582633Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"submission.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-05T02:09:54.584461Z","iopub.execute_input":"2024-11-05T02:09:54.584752Z","iopub.status.idle":"2024-11-05T02:09:54.594833Z","shell.execute_reply.started":"2024-11-05T02:09:54.584721Z","shell.execute_reply":"2024-11-05T02:09:54.593686Z"}},"outputs":[],"execution_count":null}]}