Rahik-516/xai-medical-diagnosis-dashboard

GitHub: Rahik-516/xai-medical-diagnosis-dashboard

基于Streamlit构建的可解释AI医疗诊断仪表板,为糖尿病、心脏病和肺炎三种疾病提供带有SHAP、LIME、Grad-CAM多层次解释可视化的预测辅助,帮助临床人员理解模型判断依据。

Stars: 0 | Forks: 0

# 医疗诊断中黑盒模型的可解释 AI 基于研究的 Streamlit MVP 仪表板,用于辅助临床医生在糖尿病风险、心脏病风险以及胸部 X 光片肺炎模式检测方面进行决策支持。 ## 安全免责声明 此预测仅供参考,必须由具备资质的临床医生进行审核。 本系统并非自主诊断工具。 ## 概述 本应用程序复用了已训练的研究成果,并提供带有可解释性展示的推理时输出: - 糖尿病预测:使用已保存的 Stacking 模型 + 已保存的 Imputer/Scaler。 - 心脏病预测:使用已保存的 sklearn Pipeline。 - 肺炎图像预测:使用已保存的 DenseNet121 Keras 模型。 - 基于规则的自然语言摘要(确定性,未使用 LLM)。 - 静态 SHAP/LIME/Grad-CAM 笔记本输出作为备选的视觉证据。 ## 支持的任务 1. 基于表格输入的糖尿病风险预测。 2. 基于表格输入的心脏病风险预测。 3. 基于胸部 X 光片上传的肺炎检测。 4. 每个模块的可解释性渲染。 ## 研究背景 本仪表板基于在 Kaggle notebook 中实现的完整实验研究 Pipeline。该 Notebook 包含模型训练代码、特征工程步骤以及可解释性实验(SHAP、LIME、Grad-CAM),同时附带了 XAI 质量指标和可视化示例。 Kaggle Notebook(权威参考): https://www.kaggle.com/code/ismrahik/xai-medical-diagnosis-final ## 功能特性 - 基于 Streamlit 的 Web 仪表板,用于交互式推理和可解释性展示 - 多疾病支持:糖尿病、心脏病、肺炎 - 针对图像/表格预测的基于规则的自然语言临床摘要 - 针对表格模型的 SHAP 解释(当运行环境支持 SHAP 时) - 针对选定样本的 LIME 局部解释 - 针对胸部 X 光图像的 Grad-CAM 可视化(动态 + 静态备选方案) - 基于置信度的解释区间和决策阈值 - 静态和动态的 XAI 图表库,确保可重复性 ## 项目截图: 主页: image 糖尿病预测: image image 心脏病预测: image image 肺炎检测: image image 关于 / 方法论: image image image ## 技术栈 - Python - Streamlit - TensorFlow / Keras - Scikit‑learn, XGBoost, LightGBM - SHAP, LIME - NumPy, OpenCV, Pillow, Matplotlib ## 项目结构 ``` project_root/ |-- app.py |-- requirements.txt |-- README.md |-- NOTES_FOR_COPILOT.md |-- config/ | |-- manifest.json | |-- thresholds.json | |-- settings.py | `-- paths.py |-- notebook_reference/ | |-- xai_medical_diagnosis_FINAL.ipynb | `-- notebook_extracted.py |-- artifacts/ | |-- diabetes/ | | |-- models/ | | `-- preprocessors/ | |-- heart/ | | `-- models/ | `-- pneumonia/ | `-- models/ |-- static_outputs/ | |-- diabetes/ | |-- heart/ | |-- pneumonia/ | `-- dashboard/ |-- src/ | |-- components/ | |-- pages/ | |-- pipelines/ | |-- preprocessing/ | |-- features/ | |-- models/ | |-- explainability/ | |-- utils/ | `-- assets/ `-- tests/ ``` ## Artifact 放置说明 请严格按照以下方式放置 artifact: ### 糖尿病 - `artifacts/diabetes/models/best_Diabetes_Stack.pkl` - `artifacts/diabetes/preprocessors/diab_knn_imp.pkl` - `artifacts/diabetes/preprocessors/diab_scaler.pkl` - 糖尿病静态图表存放于 `static_outputs/diabetes/` ### 心脏病 - `artifacts/heart/models/best_Heart_pipe.pkl` - 心脏病静态图表存放于 `static_outputs/heart/` ### 肺炎 - `artifacts/pneumonia/models/best_pneumonia_densenet121.keras` - 肺炎静态图表存放于 `static_outputs/pneumonia/` ### 全局仪表板输出 - 将仪表板图像和 CSV 文件放置在 `static_outputs/dashboard/` 所有路径均由 `config/manifest.json` 集中管理。 ## 安装设置 1. 创建并激活 Python 环境。 2. 安装依赖项: ``` pip install -r requirements.txt ``` 3. 将 artifact 复制到上述列出的文件夹中。 ## 运行 ``` streamlit run app.py ``` ## 测试 ``` pytest -q ``` ## 局限性 - 此 MVP 依赖于外部 artifact 文件,且不会重新训练模型。 - 本地表格解释是基于规则的摘要,而非完全实时的 SHAP 重新计算。 - Grad-CAM 在某些 runtime 下可能会失败;在这种情况下将显示静态备用图像。 ## 未来工作 1. 增加经认证的临床医生工作区和审计日志。 2. 增加更丰富的不确定性校准视图。 3. 增加 artifact schema 检查和模型版本注册表。 4. 扩展针对 UI 和 artifact 契约的自动化测试。
标签:Apex, DenseNet121, Grad-CAM, Kaggle, Keras, Kubernetes, LIME, Python, scikit-learn, SHAP, sklearn, Streamlit, TensorFlow, XAI, X光片, 临床决策支持系统, 云计算, 仪表盘, 医疗影像, 医疗诊断, 可解释人工智能, 图像识别, 堆叠模型, 心脏病预测, 数据管道, 无后门, 机器学习, 深度学习, 特征工程, 糖尿病预测, 肺炎检测, 自然语言生成, 表格数据处理, 规则引擎, 计算机辅助诊断, 访问控制, 软件工程, 逆向工具