bar plot
Browse files
app.py
CHANGED
@@ -386,32 +386,42 @@ def predict(
|
|
386 |
fig_in.update_layout(width=1200, height=400)
|
387 |
|
388 |
# 8) Bar chart for predicted labels
|
389 |
-
|
390 |
for lbl_col, (pred_val, _) in label_prediction_info.items():
|
391 |
if lbl_col in df.columns:
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
"
|
396 |
-
|
397 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
398 |
fig_lbl = px.bar(
|
399 |
-
bar_lbl_df,
|
400 |
-
|
|
|
|
|
|
|
|
|
401 |
)
|
402 |
fig_lbl.update_layout(width=1200, height=400)
|
403 |
else:
|
404 |
fig_lbl = px.bar(title="No valid predicted labels to display.")
|
405 |
fig_lbl.update_layout(width=1200, height=400)
|
406 |
|
407 |
-
return (
|
408 |
-
final_str, # 1) Prediction Results
|
409 |
-
severity_msg, # 2) Mental Health Severity
|
410 |
-
total_count_md, # 3) Total Patient Count
|
411 |
-
nn_md, # 4) Nearest Neighbors Summary
|
412 |
-
fig_in, # 5) Bar Chart (input features)
|
413 |
-
fig_lbl # 6) Bar Chart (labels)
|
414 |
-
)
|
415 |
|
416 |
######################################
|
417 |
# 6) UNIFIED DISTRIBUTION/CO-OCCURRENCE
|
|
|
386 |
fig_in.update_layout(width=1200, height=400)
|
387 |
|
388 |
# 8) Bar chart for predicted labels
|
389 |
+
label_df_list = []
|
390 |
for lbl_col, (pred_val, _) in label_prediction_info.items():
|
391 |
if lbl_col in df.columns:
|
392 |
+
# Count how many patients in df have the predicted value
|
393 |
+
predicted_count = len(df[df[lbl_col] == pred_val])
|
394 |
+
|
395 |
+
# Determine the "other" class (0 ↔ 1)
|
396 |
+
other_val = 1 - pred_val
|
397 |
+
other_count = len(df[df[lbl_col] == other_val])
|
398 |
+
|
399 |
+
label_df_list.append({
|
400 |
+
"Label": lbl_col,
|
401 |
+
"Class": f"Predicted_{pred_val}",
|
402 |
+
"Count": predicted_count
|
403 |
+
})
|
404 |
+
label_df_list.append({
|
405 |
+
"Label": lbl_col,
|
406 |
+
"Class": f"Opposite_{other_val}",
|
407 |
+
"Count": other_count
|
408 |
+
})
|
409 |
+
|
410 |
+
if label_df_list:
|
411 |
+
bar_lbl_df = pd.DataFrame(label_df_list)
|
412 |
fig_lbl = px.bar(
|
413 |
+
bar_lbl_df,
|
414 |
+
x="Label",
|
415 |
+
y="Count",
|
416 |
+
color="Class",
|
417 |
+
barmode="group",
|
418 |
+
title="Number of Patients with the Predicted vs. Opposite Label"
|
419 |
)
|
420 |
fig_lbl.update_layout(width=1200, height=400)
|
421 |
else:
|
422 |
fig_lbl = px.bar(title="No valid predicted labels to display.")
|
423 |
fig_lbl.update_layout(width=1200, height=400)
|
424 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
425 |
|
426 |
######################################
|
427 |
# 6) UNIFIED DISTRIBUTION/CO-OCCURRENCE
|