Spaces:
Sleeping
Sleeping
# app.py (your Streamlit file) | |
import streamlit as st | |
import numpy as np | |
import pickle | |
from sklearn.metrics import accuracy_score, f1_score, roc_auc_score | |
import pandas as pd | |
st.title("🧠 Sleep Event Prediction") | |
# --- Load Pickles --- | |
def load_all(): | |
with open("model.pkl", "rb") as f: model = pickle.load(f) | |
with open("scaler.pkl", "rb") as f: scaler = pickle.load(f) | |
with open("label_encoder.pkl", "rb") as f: le = pickle.load(f) | |
with open("X_test.pkl", "rb") as f: X_test = pickle.load(f) | |
with open("y_test.pkl", "rb") as f: y_test = pickle.load(f) | |
return model, scaler, le, X_test, y_test | |
model, scaler, le, X_test, y_test = load_all() | |
# --- Predict and Evaluate --- | |
y_pred = model.predict(X_test) | |
y_proba = model.predict_proba(X_test) | |
accuracy = accuracy_score(y_test, y_pred) | |
f1 = f1_score(y_test, y_pred, average='macro') | |
if y_proba.shape[1] == 2: | |
roc = roc_auc_score(y_test, y_proba[:, 1]) | |
else: | |
roc = roc_auc_score(y_test, y_proba, multi_class='ovo', average='macro') | |
# --- Display Metrics --- | |
# st.subheader("Model Performance") | |
# st.metric("Accuracy", f"{accuracy:.4f}") | |
# st.metric("F1 Score", f"{f1:.4f}") | |
# st.metric("ROC AUC Score", f"{roc:.4f}") | |
# Create a DataFrame for metrics | |
import pandas as pd | |
st.subheader("Model Performance") | |
# Create a DataFrame for metrics | |
metrics_df = pd.DataFrame({ | |
"Metric": ["Accuracy", "F1 Score", "ROC AUC Score"], | |
"Value": [f"{accuracy:.4f}", f"{f1:.4f}", f"{roc:.4f}"] | |
}) | |
# Display as table | |
st.table(metrics_df) | |
# --- Predict User Input --- | |
st.subheader("Predict Sleep Event") | |
anglez = st.number_input("Enter anglez:", value=27.8800) | |
enmo = st.number_input("Enter enmo:", value=0.0000) | |
if st.button("Predict Sleep Event"): | |
input_data = np.array([[anglez, enmo]]) | |
input_scaled = scaler.transform(input_data) | |
prediction = model.predict(input_scaled)[0] | |
label = le.inverse_transform([prediction])[0] | |
st.success(f"Predicted Event: {label}") | |