|
|
import joblib |
|
|
import pandas as pd |
|
|
import streamlit as st |
|
|
|
|
|
Blood_DICT = {'126/83':1, |
|
|
'125/80': 2, |
|
|
'140/90': 3, |
|
|
'120/80': 4, |
|
|
'132/87': 5, |
|
|
'130/86': 6, |
|
|
'117/76': 7, |
|
|
'118/76': 8, |
|
|
'128/85': 9, |
|
|
'131/86': 10, |
|
|
'128/84': 11, |
|
|
'115/75': 12, |
|
|
'135/88': 13, |
|
|
'129/84': 14, |
|
|
'130/85': 15, |
|
|
'115/78': 16, |
|
|
'119/77': 17, |
|
|
'121/79': 18, |
|
|
'125/82': 19, |
|
|
'135/90': 20, |
|
|
'122/80': 21, |
|
|
'142/92': 22, |
|
|
'140/95': 23, |
|
|
'139/91': 24, |
|
|
'118/75': 25, |
|
|
} |
|
|
Gender_DICT = {'Male':1, |
|
|
'Female': 2,} |
|
|
Occupation_DICT = {'Software Engineer':1, |
|
|
'Doctor': 2, |
|
|
'Sales Representative': 3, |
|
|
'Teacher': 4, |
|
|
'Nurse': 5, |
|
|
'Engineer': 6, |
|
|
'Accountant': 7, |
|
|
'Scientist': 8, |
|
|
'Lawyer': 9, |
|
|
'Salesperson': 10, |
|
|
'Manager': 11,} |
|
|
BMI_DICT = {'Overweight':1, |
|
|
'Normal': 2, |
|
|
'Obese': 3, |
|
|
'Normal Weight': 4,} |
|
|
|
|
|
model = joblib.load('rf_n3.joblib') |
|
|
unique_values = joblib.load('unique_values_n3.joblib') |
|
|
unique_Gender = unique_values["Gender"] |
|
|
unique_occupation = unique_values["Occupation"] |
|
|
unique_ฺBMI = unique_values["BMI Category"] |
|
|
unique_Blood = unique_values["Blood Pressure"] |
|
|
|
|
|
def main(): |
|
|
st.title("Sleeping Health") |
|
|
|
|
|
with st.form("questionaire"): |
|
|
Gender = st.selectbox("Gender", unique_Gender) |
|
|
age = st.slider("Age", min_value=27, max_value=59) |
|
|
occupation = st.selectbox("Occupation", unique_occupation) |
|
|
Sleep_Duration = st.slider("Sleep Duration", min_value=5.8, max_value=8.5) |
|
|
Quality_of_Sleep = st.slider("Quality of Sleep", min_value=1, max_value=10) |
|
|
Physical_Activity_Level = st.slider("Physical Activity Level", min_value=30, max_value=90) |
|
|
Stress_Level= st.slider("Stress Level", min_value=1, max_value=10) |
|
|
BMI_Category = st.selectbox("BMI Category", unique_ฺBMI) |
|
|
Blood_Pressure = st.selectbox("Blood Pressure", unique_Blood) |
|
|
Heart_Rate = st.slider("Heart Rate", min_value=65, max_value=86) |
|
|
Daily_Steps = st.slider("Daily Steps", min_value=3000, max_value=10000) |
|
|
|
|
|
clicked_sleep = st.form_submit_button("Predict Sleep Health") |
|
|
if clicked_sleep: |
|
|
result = model.predict(pd.DataFrame({"Gender": [Gender_DICT[Gender]], |
|
|
"Age": [age], |
|
|
"Occupation": [Occupation_DICT[occupation]], |
|
|
"Sleep Duration": [Sleep_Duration], |
|
|
"Quality of Sleep": [Quality_of_Sleep], |
|
|
"Physical Activity Level": [Physical_Activity_Level], |
|
|
"Stress Level": [Stress_Level], |
|
|
"BMI Category": [BMI_DICT[BMI_Category]], |
|
|
"Blood Pressure": [Blood_DICT[Blood_Pressure]], |
|
|
"Heart Rate": [Heart_Rate], |
|
|
"Daily Steps": [Daily_Steps] |
|
|
})) |
|
|
if result[0] == 1: |
|
|
result_message = "None" |
|
|
elif result[0] == 2: |
|
|
result_message = "Sleep Apnea" |
|
|
elif result[0] == 3: |
|
|
result_message = "Insomnia" |
|
|
else: |
|
|
result_message = None |
|
|
if result_message is not None: |
|
|
st.success(result_message) |
|
|
|
|
|
if __name__=='__main__': |
|
|
main() |
|
|
|