MohitRajput45 commited on
Commit
899addc
Β·
verified Β·
1 Parent(s): 2a1adf2

Update app/streamlit_app.py

Browse files
Files changed (1) hide show
  1. app/streamlit_app.py +18 -12
app/streamlit_app.py CHANGED
@@ -109,7 +109,7 @@ if page == "Prediction":
109
  if submit_btn:
110
  payload = {"Time": st.session_state.t_time, "Amount": st.session_state.t_amount, **v_data}
111
 
112
- # βœ… Save payload for SHAP page
113
  st.session_state["last_payload"] = payload
114
 
115
  try:
@@ -136,8 +136,7 @@ if page == "Prediction":
136
  except Exception as e:
137
  st.error(f"⏳ Error connecting to API: {e}")
138
 
139
-
140
- # πŸ”₯ NEW SHAP PAGE
141
  elif page == "Explainability (SHAP)":
142
  st.title("🧠 Explainable AI (SHAP)")
143
 
@@ -164,7 +163,7 @@ elif page == "Explainability (SHAP)":
164
  except Exception as e:
165
  st.error(f"❌ Error: {e}")
166
 
167
-
168
  elif page == "Drift Monitoring":
169
  st.title("πŸ“‰ Data Drift Monitoring")
170
  st.markdown("### Monitor model health & trigger verified retraining")
@@ -178,7 +177,7 @@ elif page == "Drift Monitoring":
178
  for i in range(1, 29):
179
  skewed_data[f"V{i}"] = random.uniform(-15.0, 15.0)
180
  save_to_db(skewed_data, pred=1, prob=0.99)
181
- st.success("βœ… 50 Skewed rows injected!")
182
 
183
  st.markdown("---")
184
 
@@ -197,7 +196,7 @@ elif page == "Drift Monitoring":
197
  st.success("βœ… Drift report generated!")
198
  st.session_state["drift_done"] = True
199
  else:
200
- st.warning("⚠️ Not enough data in live DB")
201
  except Exception as e:
202
  st.error(f"⚠️ Error running drift: {e}")
203
 
@@ -207,10 +206,17 @@ elif page == "Drift Monitoring":
207
  html = f.read()
208
  components.html(html, height=800, scrolling=True)
209
 
 
 
 
 
210
  if st.session_state.get("drift_done", False):
211
- if st.button("⚑ Retrain Model"):
212
- try:
213
- retrain()
214
- st.success("βœ… Model retrained successfully!")
215
- except Exception as e:
216
- st.error(f"❌ Error: {e}")
 
 
 
 
109
  if submit_btn:
110
  payload = {"Time": st.session_state.t_time, "Amount": st.session_state.t_amount, **v_data}
111
 
112
+ # store for SHAP page
113
  st.session_state["last_payload"] = payload
114
 
115
  try:
 
136
  except Exception as e:
137
  st.error(f"⏳ Error connecting to API: {e}")
138
 
139
+ # --- NEW SHAP PAGE ---
 
140
  elif page == "Explainability (SHAP)":
141
  st.title("🧠 Explainable AI (SHAP)")
142
 
 
163
  except Exception as e:
164
  st.error(f"❌ Error: {e}")
165
 
166
+ # --- DRIFT MONITORING (UNCHANGED EXACTLY) ---
167
  elif page == "Drift Monitoring":
168
  st.title("πŸ“‰ Data Drift Monitoring")
169
  st.markdown("### Monitor model health & trigger verified retraining")
 
177
  for i in range(1, 29):
178
  skewed_data[f"V{i}"] = random.uniform(-15.0, 15.0)
179
  save_to_db(skewed_data, pred=1, prob=0.99)
180
+ st.success("βœ… 50 Skewed rows injected! Now click 'Run Drift Detection' below.")
181
 
182
  st.markdown("---")
183
 
 
196
  st.success("βœ… Drift report generated!")
197
  st.session_state["drift_done"] = True
198
  else:
199
+ st.warning("⚠️ Not enough data in live DB (Needs 50 rows). Use the Demo Injector above!")
200
  except Exception as e:
201
  st.error(f"⚠️ Error running drift: {e}")
202
 
 
206
  html = f.read()
207
  components.html(html, height=800, scrolling=True)
208
 
209
+ st.markdown("---")
210
+ st.subheader("πŸ” Human-in-the-Loop Retraining")
211
+ st.write("Ensure database contains human-verified `Actual_Class` labels before retraining.")
212
+
213
  if st.session_state.get("drift_done", False):
214
+ if st.button("⚑ Retrain Model (Requires Verified Data)"):
215
+ with st.spinner("Retraining model..."):
216
+ try:
217
+ retrain()
218
+ st.success("βœ… Model retrained successfully with verified data!")
219
+ except ValueError as ve:
220
+ st.error(f"❌ {ve}")
221
+ except Exception as e:
222
+ st.error(f"❌ Error: {e}")