Spaces:
Running
Running
| from __future__ import annotations | |
| from typing import Any | |
| import streamlit as st | |
| def render_model_explainer(rows: list[dict[str, Any]]) -> None: | |
| if not rows: | |
| return | |
| with st.expander("Algorithm Breakdown: Recommendation Explainer"): | |
| for row in rows: | |
| batter_name = row.get("batter_name", "Unknown") | |
| slot = row.get("slot", "") | |
| reasons = row.get("reason_tags", []) or [] | |
| st.markdown(f"**{slot}: {batter_name}**") | |
| st.write( | |
| { | |
| "fair_hr_odds": row.get("fair_hr_odds"), | |
| "book_hr_odds": row.get("book_hr_odds"), | |
| "hr_edge": row.get("hr_edge"), | |
| "adjusted_edge": row.get("adjusted_edge"), | |
| "hr_bet_ev": row.get("hr_bet_ev"), | |
| "confidence": row.get("confidence"), | |
| "confidence_bucket": row.get("confidence_bucket"), | |
| "tier": row.get("recommendation_tier"), | |
| "priority_score": row.get("priority_score"), | |
| "reason_tags": reasons, | |
| } | |
| ) |