{"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":"nvidiaTeslaT4","dataSources":[{"sourceId":82611,"databundleVersionId":9553358,"sourceType":"competition"}],"dockerImageVersionId":30776,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# Setup Cell\nimport pandas as pd\nimport numpy as np\nfrom sklearn.preprocessing import StandardScaler, LabelEncoder\nfrom sklearn.impute import SimpleImputer\nimport xgboost as xgb  # Import XGBoost with GPU support\n\n# Load datasets with low_memory=False to suppress DtypeWarning\ntrain = pd.read_csv('/kaggle/input/brist1d/train.csv', low_memory=False)\ntest = pd.read_csv('/kaggle/input/brist1d/test.csv', low_memory=False)\n\n","metadata":{"execution":{"iopub.status.busy":"2024-09-24T02:08:03.721371Z","iopub.execute_input":"2024-09-24T02:08:03.722040Z","iopub.status.idle":"2024-09-24T02:08:18.326579Z","shell.execute_reply.started":"2024-09-24T02:08:03.722004Z","shell.execute_reply":"2024-09-24T02:08:18.325757Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n# Execution Cell\n\n# Convert 'time' column to datetime and extract features\ntrain['time'] = pd.to_datetime(train['time'], format='%H:%M:%S')\ntest['time'] = pd.to_datetime(test['time'], format='%H:%M:%S')\n\n# Extract hour and minute as numerical features\ntrain['hour'] = train['time'].dt.hour\ntrain['minute'] = train['time'].dt.minute\ntest['hour'] = test['time'].dt.hour\ntest['minute'] = test['time'].dt.minute\n\n# Drop 'time' column\ntrain.drop('time', axis=1, inplace=True)\ntest.drop('time', axis=1, inplace=True)\n\n# Identify numerical and categorical columns\nnumerical_cols = train.select_dtypes(include=['float64', 'int64']).columns.tolist()\nnumerical_cols.remove('bg+1:00')  # Remove target variable from features\ncategorical_cols = [col for col in train.columns if 'activity' in col]\n\n# Impute missing numerical values\nimputer = SimpleImputer(strategy='mean')\ntrain[numerical_cols] = imputer.fit_transform(train[numerical_cols])\ntest[numerical_cols] = imputer.transform(test[numerical_cols])\n\n# Encode categorical variables\nfor col in categorical_cols:\n    train[col] = train[col].fillna('None')\n    test[col] = test[col].fillna('None')\n    le = LabelEncoder()\n    combined_data = pd.concat([train[col], test[col]], axis=0)\n    le.fit(combined_data)\n    train[col] = le.transform(train[col])\n    test[col] = le.transform(test[col])\n\n# Scale numerical features\nscaler = StandardScaler()\ntrain[numerical_cols] = scaler.fit_transform(train[numerical_cols])\ntest[numerical_cols] = scaler.transform(test[numerical_cols])\n\n# Prepare data for modeling\nX_train = train.drop(['id', 'p_num', 'bg+1:00'], axis=1)\ny_train = train['bg+1:00']\nX_test = test.drop(['id', 'p_num'], axis=1)\n\n# Ensure all features are numerical\nnon_numeric_cols = X_train.select_dtypes(include=['object']).columns.tolist()\nif non_numeric_cols:\n    print(\"Non-numeric columns in X_train:\", non_numeric_cols)\n    # Drop non-numeric columns\n    X_train.drop(non_numeric_cols, axis=1, inplace=True)\n    X_test.drop(non_numeric_cols, axis=1, inplace=True)\n\n# Initialize and train the model using GPU acceleration\nmodel = xgb.XGBRegressor(\n    n_estimators=250,\n    max_depth=30,\n    tree_method='hist',  # Use GPU for training\n    device='cuda',  # Specify device as 'cuda' for GPU\n    random_state=1974\n)\n\nmodel.fit(X_train, y_train)\n","metadata":{"execution":{"iopub.status.busy":"2024-09-24T02:08:21.836066Z","iopub.execute_input":"2024-09-24T02:08:21.837043Z","iopub.status.idle":"2024-09-24T02:12:16.782212Z","shell.execute_reply.started":"2024-09-24T02:08:21.836990Z","shell.execute_reply":"2024-09-24T02:12:16.781307Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n# Submission Cell\n\n# Predict on test data\ntest_preds = model.predict(X_test)\n\n# Create submission file\nsubmission = pd.DataFrame({\n    'id': test['id'],\n    'bg+1:00': test_preds\n})\n\nsubmission.to_csv('/kaggle/working/submission.csv', index=False)\n\n","metadata":{"execution":{"iopub.status.busy":"2024-09-24T02:13:19.936044Z","iopub.execute_input":"2024-09-24T02:13:19.936433Z","iopub.status.idle":"2024-09-24T02:13:20.154900Z","shell.execute_reply.started":"2024-09-24T02:13:19.936400Z","shell.execute_reply":"2024-09-24T02:13:20.153920Z"},"trusted":true},"execution_count":null,"outputs":[]}]}