SleepDetectionApp / pages /predict page.py
varalakshmi55's picture
Upload 16 files
74f8436 verified
raw
history blame
2.05 kB
# 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 ---
@st.cache_resource
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}")