当前位置: 首页 > news >正文

基于 XGBoost 与 SHAP 的医疗自动化办公与可视化系统(下)

在这里插入图片描述

— 登录接口 —

@app.post(“/token”)
def login(form_data: OAuth2PasswordRequestForm = Depends()):
user = fake_users_db.get(form_data.username)
if not user or form_data.password != user[“password”]:
raise HTTPException(status_code=400, detail=“用户名或密码错误”)
access_token = create_access_token(data={“sub”: user[“username”]})
return {“access_token”: access_token, “token_type”: “bearer”}

— AI 预测接口 —

@app.post(“/predict”)
def predict(file: UploadFile = File(…), username: str = Depends(verify_token)):
try:
model = load(“ai_module/model.pkl”)
scaler = load(“ai_module/scaler.pkl”)
except Exception:
raise HTTPException(status_code=500, detail=“模型未训练,请先训练”)

df = pd.read_csv(io.BytesIO(file.file.read()))
if not set(["age", "blood_pressure", "glucose", "cholesterol"]).issubset(df.columns):raise HTTPException(status_code=400, detail="CSV 缺少必要列")features = df[["age", "blood_pressure", "glucose", "cholesterol"]]
df["risk_score"] = model.predict_proba(scaler.transform(features))[:, 1]
return df.to_dict(orient="records")

---### 🚀 启动命令:```bash
uvicorn api_server.app:app --reload

🔐 Token 流程测试(推荐用 Postman 或 curl):

  1. 获取 token:
curl -X POST http://localhost:8000/token -F 'username=admin' -F 'password=admin123'
  1. 带 Token 调用 /predict
curl -X POST http://localhost:8000/predict \-H "Authorization: Bearer YOUR_TOKEN_HERE" \-F "file=@yourfile.csv"

完整模块:💻 streamlit_app.py(企业级医疗门户 UI)


✅ 功能概览:

功能模块 描述
🔐 登录界面 简易用户名+密码验证(可扩展为 OAuth 或 LDAP)
📂 多文件上传 支持上传多个 CSV 并合并展示
🧠 风险预测 基于 XGBoost 模型计算 risk_score
📊 可视化 展示分布图、趋势图、SHAP 图
📄 PDF 报告 可点击按钮下载 AI 分析报告

在这里插入图片描述

✅ 安装依赖(如未安装):

pip install streamlit pandas plotly joblib matplotlib fpdf

💻 streamlit_app.py

# streamlit_app.pyimport streamlit as st
import pandas as pd
import plotly.express as px
from joblib import load
import matplotlib.pyplot as plt
from PIL import Image
import os
from report.generate_pdf import generate_pdf  # 调用你之前的 PDF 生成模块# 页面设置
st.set_page_config(page_title="医疗 AI 门户", layout="wide")
st.title("🏥 医疗 AI 辅助分析平台")# 登录模拟(可换成 OAuth、LDAP)
def login():st.sidebar.title("🔐 登录")username = st.sidebar.text_input("用户名")password = st.sidebar.text_input("密码", type="password")if st.sidebar.button("登录"):if username == "admin" and password == "admin123":st.session_state["authenticated"] = Trueelse:st.sidebar.error("用户名或密码错误")# 主体功能
def main_app():st.success("✅ 登录成功!欢迎使用医疗 AI 辅助系统")uploaded_files = st.file_uploader("📂 上传一份或多份 HIS 数据文件(CSV)", type="csv", accept_multiple_files=True)if uploaded_files:dfs = []for f in uploaded_files:df = pd.read_csv(f)df["source_file"] = f.namedfs.append(df)df = pd.concat(dfs, ignore_index=True)st.subheader("📝 数据预览")st.dataframe(df)# 模
http://www.xdnf.cn/news/1172683.html

相关文章:

  • 用Phi-3 Mini微调实现英文到尤达语翻译
  • SpringCloud sentinel服务熔断 服务降级
  • 希尔排序cc
  • 电子电气架构 --- 汽车软件全生命周期
  • Cesium绘制圆锥
  • 「源力觉醒 创作者计划」深度讲解大模型之在百花齐放的大模型时代看百度文心大模型4.5的能力与未来
  • 深度图像滤波
  • Java 时间处理 API 全解析:从 JDK7 到 JDK8 的演进
  • Linux基本命令
  • Python实战:基于Streamlit的股票筛选系统,实时K线图+数据缓存优化
  • 应急响应基础
  • 通用图片 OCR 到 Word API 数据接口
  • 增强LLM最后隐藏层的意义与效果
  • 代码随想录算法训练营第五十二天|图论part3
  • 分享鸢尾花数据集:iris.csv,以及简单数据分析与分类预测示例(决策树)
  • 动态IP+AI反侦测:新一代爬虫如何绕过生物行为验证?
  • PyTorch中nn.Module详解和综合代码示例
  • 【前端】ikun-pptx编辑器前瞻问题三: pptx的图片如何提取,并在前端渲染。
  • 7月23日华为机考真题第二题-200分
  • python在windows电脑找回WiFi密码
  • 前端/后端,前台/中台/后台概念区别
  • python自动化测试框架,封装方法方式
  • 【Unity编辑器开发与拓展Handles】
  • CRMEB 单商户PRO多商户通用去版权教程
  • Oracle迁移到高斯,查询字段默认小写,解决办法
  • 微软Fabric重塑数据管理:Forrester报告揭示高ROI
  • 基于Kafka实现简单的延时队列
  • BUUCTF(web)部分题解
  • 设计模式九:构建器模式 (Builder Pattern)
  • springboot 升级到3.5.x后knife4j 文档无法识别问题解决