import streamlit as st import pandas as pd from Utility.data_loader import ( load_train_series, load_train_events, load_sample_submission, load_test_series ) st.set_page_config(page_title="Sleep Detection", layout="wide") st.title("Sleep Detection") st.markdown(""" ### ๐Ÿ“Š About the App This **Sleep Detection App** uses sensor data collected over time to predict sleep-related events such as *onset* or *wake-up*. The application allows users to analyze sleep patterns based on movement data and provides predictions using a machine learning model trained on labeled sensor events. --- ### ๐Ÿงพ Data Description Each row in the dataset represents a time-stamped sensor reading with the following key columns: - **series_id**: Unique identifier for a sleep session or user. - **step**: Sequence number of the reading. - **sensor_timestamp**: The time when the sensor reading was recorded. - **anglez**: Z-axis body orientation angle (used as a feature). - **enmo**: Euclidean Norm Minus One โ€“ a movement magnitude metric (used as a feature). - **night**: Night identifier (used to separate sessions). - **event**: The sleep-related label (e.g., `onset`, `wake`) indicating the event type. - **event_timestamp**: Timestamp of the actual sleep event (used to calculate sleep duration). --- ### ๐Ÿค– App Capabilities - Displays raw sensor data and sleep event counts. - Trains an ML model (XGBoost) using movement features (`anglez`, `enmo`) to predict sleep events. - Allows real-time prediction of sleep events based on user input. - Displays evaluation metrics: **Accuracy**, **F1 Score**, **ROC AUC Score**. --- """) # --- Sidebar Radio Button --- st.header("Select Dataset to View") option = st.radio( "Choose a dataset:", ("Train Events","Train Series", "Test Series", "Summary") ) # --- Load and Show Data Based on Selection --- df = None if option == "Train Events": df = load_train_events() st.subheader("Train Events") st.dataframe(df.head()) elif option == "Sample Submission": df = load_sample_submission() st.subheader("Sample Submission") st.dataframe(df.head()) elif option == "Train Series": df = load_train_series() st.subheader("Train Series (1M rows sample)") st.dataframe(df.head()) elif option == "Test Series": df = load_test_series() st.subheader("Test Series") st.dataframe(df.head()) elif option == "Summary": st.subheader("Summary of All Key Datasets") with st.expander("๐Ÿ“„ Train Events"): df_events = load_train_events() st.dataframe(df_events.head()) st.write("Summary:") st.dataframe(df_events.describe(include="all")) with st.expander("๐Ÿ“„ Sample Submission"): df_sample = load_sample_submission() st.dataframe(df_sample.head()) st.write("Summary:") st.dataframe(df_sample.describe(include="all")) with st.expander("๐Ÿ“„ Train Series"): df_series = load_train_series() st.dataframe(df_series.head()) st.write("Summary:") st.dataframe(df_series.describe()) with st.expander("๐Ÿ“„ Test Series"): df_test = load_test_series() st.dataframe(df_test.head()) st.write("Summary:") st.dataframe(df_test.describe())