糖尿病风险预测系统
基于 FastAPI 构建的糖尿病风险预测系统,集成机器学习模型,提供风险评估和数据分析功能。
主要功能
- 用户认证系统(登录/注册)
- 基于机器学习的糖尿病风险预测
- 预测历史记录追踪
- 数据分析面板和可视化
- 特征重要性分析
- 响应式设计,支持移动端访问
技术栈
- 后端框架: FastAPI
- 前端技术: HTML, CSS, JavaScript
- 数据库: SQLite
- 机器学习: scikit-learn
- 数据处理: pandas, numpy
- 数据可视化: Chart.js
- UI 框架: Bootstrap 5
- 图标: Boxicons
项目结构
diabetesDemos/
├── data/ # 数据目录
│ └── diabetes.csv # 训练数据集
├── model/ # 模型目录
│ ├── diabetes_model.pkl # 训练好的模型
│ └── scaler.pkl # 数据标准化模型
├── static/ # 静态资源
│ └── css/
│ └── style.css # 自定义样式
├── templates/ # 模板文件
│ ├── base.html # 基础模板
│ ├── index.html # 首页
│ ├── login.html # 登录/注册页
│ ├── predict.html # 预测页面
│ ├── history.html # 历史记录
│ └── analytics.html # 数据分析
├── database.py # 数据库操作
├── predictor.py # 预测模型
├── main.py # 主应用
└── requirements.txt # 依赖清单
安装说明
- 克隆项目代码
- 创建并激活虚拟环境:
python -m venv venv venv\Scripts\activate
- 安装依赖:
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt
- 运行应用:
python main.py
- 访问地址:
http://localhost:8000
使用指南
- 注册新账号或登录已有账号
- 进入预测页面
- 输入健康指标数据(支持以下指标):
- 怀孕次数:0-17 次
- 血糖水平:70-200 mg/dL
- 血压:40-130 mm Hg
- 皮褶厚度:7-99 mm
- 胰岛素水平:0-846 mu U/ml
- 体重指数:18-67 kg/m²
- 糖尿病家族史指数:0.078-2.42
- 年龄:21-81 岁
- 获取即时风险预测结果
- 查看预测历史记录
- 探索数据分析和见解
数据说明
系统使用以下健康指标进行预测:
- 怀孕次数:历史怀孕次数
- 血糖水平:空腹血糖浓度 (mg/dL)
- 血压:舒张压 (mm Hg)
- 皮褶厚度:三头肌皮褶厚度 (mm)
- 胰岛素:2小时血清胰岛素水平 (mu U/ml)
- 体重指数:身体质量指数 (kg/m²)
- 糖尿病家族史:基于家族史计算的糖尿病风险指数
- 年龄:年龄(岁)
模型信息
系统使用基于 Pima Indians 糖尿病数据库训练的逻辑回归模型。该模型使用 scikit-learn 训练,准确率约为 75%。模型特点:
- 使用标准化处理确保数据一致性
- 通过特征重要性分析提供决策依据
- 提供风险概率评估
安全特性
- 使用 SHA-256 进行密码加密
- 基于会话的身份认证
- CSRF 防护
- 输入数据验证和清洗
功能亮点
-
用户友好的界面
- 响应式设计,适配各种设备
- 清晰的数据输入指引
- 直观的结果展示
-
完整的数据追踪
- 详细的预测历史记录
- 支持历史数据查看和删除
- 数据可视化分析
-
专业的分析功能
- 预测结果分布统计
- 特征重要性分析
- 风险趋势追踪
注意事项
- 本系统仅供参考,不应替代专业医疗建议
- 预测结果基于统计模型,可能存在误差
- 请在医生指导下理解和使用预测结果