{"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"4.0.5"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":59093,"databundleVersionId":7469972,"sourceType":"competition"}],"dockerImageVersionId":30619,"isInternetEnabled":true,"language":"r","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# Load necessary libraries\nlibrary(tidyverse)  # For data manipulation and visualization\nlibrary(caret)      # For modeling\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\nlist.files(path = \"../input/hms-harmful-brain-activity-classification/\")\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":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","execution":{"iopub.status.busy":"2024-03-02T16:59:02.116829Z","iopub.execute_input":"2024-03-02T16:59:02.120160Z","iopub.status.idle":"2024-03-02T16:59:08.400607Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Load train and test data\ntrain <- read_csv(\"../input/hms-harmful-brain-activity-classification/train.csv\",show_col_types = FALSE)\ntest <- read_csv(\"../input/hms-harmful-brain-activity-classification/test.csv\",show_col_types = FALSE)","metadata":{"execution":{"iopub.status.busy":"2024-03-02T16:59:08.405466Z","iopub.execute_input":"2024-03-02T16:59:08.507408Z","iopub.status.idle":"2024-03-02T16:59:09.686004Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Display the structure of train data\nglimpse(train)","metadata":{"execution":{"iopub.status.busy":"2024-03-02T16:59:09.691374Z","iopub.execute_input":"2024-03-02T16:59:09.693442Z","iopub.status.idle":"2024-03-02T16:59:09.776435Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Display the structure of test data\nglimpse(test)","metadata":{"execution":{"iopub.status.busy":"2024-03-02T16:59:09.779554Z","iopub.execute_input":"2024-03-02T16:59:09.781291Z","iopub.status.idle":"2024-03-02T16:59:09.801652Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Perform exploratory data analysis (EDA)\n# Summary statistics\nsummary(train)","metadata":{"execution":{"iopub.status.busy":"2024-03-02T16:59:09.804612Z","iopub.execute_input":"2024-03-02T16:59:09.806185Z","iopub.status.idle":"2024-03-02T16:59:09.956028Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Visualize class distribution\ntrain %>%\n  gather(Class, Count, -eeg_id, -spectrogram_id, -patient_id, -eeg_label_offset_seconds,\n         -spectrogram_label_offset_seconds, -label_id, -expert_consensus) %>%\n  ggplot(aes(x = Class, y = Count)) +\n  geom_boxplot() +\n  labs(title = \"Class Distribution\",\n       x = \"Class\",\n       y = \"Count\")","metadata":{"execution":{"iopub.status.busy":"2024-03-02T16:59:09.959198Z","iopub.execute_input":"2024-03-02T16:59:09.961121Z","iopub.status.idle":"2024-03-02T16:59:21.868452Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Check for missing values\ncolSums(is.na(train))","metadata":{"execution":{"iopub.status.busy":"2024-03-02T16:59:21.871499Z","iopub.execute_input":"2024-03-02T16:59:21.873110Z","iopub.status.idle":"2024-03-02T16:59:21.901259Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Check for class imbalance\ntable(train$expert_consensus)","metadata":{"execution":{"iopub.status.busy":"2024-03-02T16:59:21.904383Z","iopub.execute_input":"2024-03-02T16:59:21.905998Z","iopub.status.idle":"2024-03-02T16:59:21.930121Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Model Building\n## Random Forest\nmodel <- train(expert_consensus ~ .,\n               data = train,\n               method = \"rf\",\n               trControl = trainControl(method = \"cv\", number = 5))\n\n# Model Evaluation\nmodel","metadata":{"execution":{"iopub.status.busy":"2024-03-02T16:59:21.933324Z","iopub.execute_input":"2024-03-02T16:59:21.934976Z","iopub.status.idle":"2024-03-02T17:28:37.792003Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Make predictions using the model\npredictions <- predict(model, newdata = train)","metadata":{"execution":{"iopub.status.busy":"2024-03-02T17:28:37.795336Z","iopub.execute_input":"2024-03-02T17:28:37.797121Z","iopub.status.idle":"2024-03-02T17:28:41.349559Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Create submission file\nsubmission <- data.frame(eeg_id = train$eeg_id,\n                         seizure_vote = predictions,\n                         lpd_vote = predictions,\n                         gpd_vote = predictions,\n                         lrda_vote = predictions,\n                         grda_vote = predictions,\n                         other_vote = predictions)\n\n# Write submission file\nwrite_csv(submission, \"submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2024-03-02T17:28:41.354653Z","iopub.execute_input":"2024-03-02T17:28:41.356554Z","iopub.status.idle":"2024-03-02T17:28:41.448194Z"},"trusted":true},"execution_count":null,"outputs":[]}]}