high77 commited on
Commit
9b5cb80
·
verified ·
1 Parent(s): 0bae3c1

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +6 -3
src/streamlit_app.py CHANGED
@@ -3,11 +3,12 @@ import pandas as pd
3
  import joblib
4
  import os
5
 
6
- # Adjust these paths based on where your model/scaler are in the container
7
  BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # one level up from src/
8
  MODEL_PATH = os.path.join(BASE_DIR, "Hb_predict", "tuned_xgboost_model.pkl")
9
  SCALER_PATH = os.path.join(BASE_DIR, "Hb_predict", "scaler.pkl")
10
 
 
11
  model = joblib.load(MODEL_PATH)
12
  scaler = joblib.load(SCALER_PATH)
13
 
@@ -26,13 +27,13 @@ st.markdown(
26
  """
27
  )
28
 
29
- # Input fields for features your model expects
30
  age = st.number_input("Age", min_value=0, max_value=120, value=30)
31
  sbp = st.number_input("Systolic Blood Pressure (SBP)", min_value=50, max_value=200, value=120)
32
  dbp = st.number_input("Diastolic Blood Pressure (DBP)", min_value=30, max_value=130, value=80)
33
  heart_rate = st.number_input("Heart Rate", min_value=30, max_value=200, value=75)
34
  respiratory_rate = st.number_input("Respiratory Rate", min_value=5, max_value=60, value=18)
35
- temperature_c = st.number_input("Temperature (°C)", min_value=30.0, max_value=45.0, value=36.5)
36
  oxygen_saturation = st.slider("Oxygen Saturation (%)", min_value=50.0, max_value=100.0, value=98.0)
37
  gender = st.selectbox("Gender", options=["Male", "Female"])
38
 
@@ -41,6 +42,7 @@ gender_encoded = 1 if gender == "Male" else 0
41
  gender_male = gender_encoded
42
  pulse_pressure = sbp - dbp
43
 
 
44
  input_df = pd.DataFrame([{
45
  "Age": age,
46
  "SBP": sbp,
@@ -54,6 +56,7 @@ input_df = pd.DataFrame([{
54
  "Gender_Male": gender_male
55
  }])
56
 
 
57
  if st.button("Predict Hemoglobin Level"):
58
  try:
59
  input_scaled = scaler.transform(input_df)
 
3
  import joblib
4
  import os
5
 
6
+ # Adjust paths based on container directory structure
7
  BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # one level up from src/
8
  MODEL_PATH = os.path.join(BASE_DIR, "Hb_predict", "tuned_xgboost_model.pkl")
9
  SCALER_PATH = os.path.join(BASE_DIR, "Hb_predict", "scaler.pkl")
10
 
11
+ # Load model and scaler
12
  model = joblib.load(MODEL_PATH)
13
  scaler = joblib.load(SCALER_PATH)
14
 
 
27
  """
28
  )
29
 
30
+ # User inputs
31
  age = st.number_input("Age", min_value=0, max_value=120, value=30)
32
  sbp = st.number_input("Systolic Blood Pressure (SBP)", min_value=50, max_value=200, value=120)
33
  dbp = st.number_input("Diastolic Blood Pressure (DBP)", min_value=30, max_value=130, value=80)
34
  heart_rate = st.number_input("Heart Rate", min_value=30, max_value=200, value=75)
35
  respiratory_rate = st.number_input("Respiratory Rate", min_value=5, max_value=60, value=18)
36
+ temperature_c = st.number_input("Temperature (°C)", min_value=30.0, max_value=45.0, value=36.5, format="%.1f")
37
  oxygen_saturation = st.slider("Oxygen Saturation (%)", min_value=50.0, max_value=100.0, value=98.0)
38
  gender = st.selectbox("Gender", options=["Male", "Female"])
39
 
 
42
  gender_male = gender_encoded
43
  pulse_pressure = sbp - dbp
44
 
45
+ # Prepare input DataFrame matching model feature names exactly
46
  input_df = pd.DataFrame([{
47
  "Age": age,
48
  "SBP": sbp,
 
56
  "Gender_Male": gender_male
57
  }])
58
 
59
+ # Predict on button click
60
  if st.button("Predict Hemoglobin Level"):
61
  try:
62
  input_scaled = scaler.transform(input_df)