基于机器学习的心脏病发病风险预测系统
本系统是一个基于 Python Flask 框架的心脏病发病风险智能评估平台,以 UCI Cleveland 心脏病数据集为基础,通过 Bootstrap 有放回采样扩充至 1025 条样本训练机器学习模型。用户输入 13 项临床特征指标,系统输出心脏病风险概率与四级风险等级评估,支持单条预测与 CSV 批量预测,并提供 12 张 ECharts 可视化数据分析图表、模型管理、系统管理等功能。所有特征采用 UCI 原始编码方案(如 cp…
项目封面

项目说明
基于机器学习的心脏病发病风险预测系统
项目简介
本系统是一个基于 Python Flask 框架的心脏病发病风险智能评估平台,以 UCI Cleveland 心脏病数据集为基础,通过 Bootstrap 有放回采样扩充至 1025 条样本训练机器学习模型。用户输入 13 项临床特征指标,系统输出心脏病风险概率与四级风险等级评估,支持单条预测与 CSV 批量预测,并提供 12 张 ECharts 可视化数据分析图表、模型管理、系统管理等功能。所有特征采用 UCI 原始编码方案(如 cp: 1-4, slope: 1-3, thal: 3/6/7),与临床原始数据保持一致。
功能模块
| 模块 | 功能说明 |
|---|---|
| 首页 | 系统介绍、数据集概况、模型精度展示、技术栈展示、风险分级规则说明 |
| 用户系统 | 用户注册、登录、登出,基于 Flask-Login 的会话管理,管理员与普通用户两级权限 |
| 单条预测 | 输入 13 项临床特征(年龄、性别、胸痛类型、静息血压、血清胆固醇、空腹血糖、静息心电图、最大心率、运动心绞痛、ST段压低、ST段斜率、主要血管数、地中海贫血类型),输出风险概率、预测结果、风险等级,支持填入示例数据快速体验 |
| 批量预测 | 上传 CSV 文件批量评估,逐行特征校验,生成结果 CSV 下载,记录批量任务历史 |
| 预测历史 | 预测记录分页浏览、管理员可查看全部用户记录、支持 CSV 导出 |
| 数据分析 | 12 张 ECharts 可视化图表:患病数量统计、年龄分布、性别比例、概率分布、风险等级占比、胸痛类型分布、近7日预测趋势、模型性能对比、特征重要性、血压趋势、胆固醇/心率趋势、综合雷达图 |
| 模型信息 | 模型性能指标(准确率、精确率、召回率、F1、AUC、交叉验证)、混淆矩阵、特征重要性柱状图(ECharts)、数据集概况、训练历史 |
| 数据集浏览 | 数据集统计信息、特征统计表(均值、标准差、最小值、最大值、中位数)、前20条样本预览、数据来源说明 |
| 模型训练 | 管理员专属,支持单模型训练(随机森林、梯度提升、逻辑回归、SVM)和多模型对比选优,展示训练结果与历史记录 |
| 系统管理 | 管理员专属,用户管理(查看、删除)、系统日志(登录、预测、训练等操作记录) |
| REST API | /api/predict 单条预测、/api/stats 统计数据、/api/model/metrics 模型指标、/api/dataset/stats 数据集统计、/api/predictions 预测历史、/api/features 特征说明 |
数据来源
| 项目 | 说明 |
|---|---|
| 基础数据集 | UCI Cleveland Heart Disease Dataset |
| 来源 | UCI Machine Learning Repository |
| 原始文件 | data/processed.cleveland.data(303 条原始记录) |
| 训练数据 | data/heart_extended_1025.csv(1025 条,基于 297 条有效样本 Bootstrap 有放回采样扩充) |
| 有效样本 | 297 条(剔除含缺失值的 6 条) |
| 扩充样本 | 1025 条(有放回采样 + 连续变量微高斯噪声) |
| 特征数 | 13 个临床指标 |
| 编码方案 | UCI 原始编码(cp: 1-4, slope: 1-3, thal: 3/6/7) |
| 标签 | 0 = 无心脏病,1 = 有心脏病(训练时二值化) |
风险分级规则
| 概率区间 | 预测结果 | 风险等级 |
|---|---|---|
| < 0.3 | 无心脏病风险 | 低风险 |
| 0.3 ~ 0.5 | 无心脏病风险 | 临界风险(需关注) |
| 0.5 ~ 0.7 | 有心脏病风险 | 中风险 |
| ≥ 0.7 | 有心脏病风险 | 高风险 |
预测阳性阈值为 0.5(概率 ≥ 0.5 判定为有心脏病风险)。
目录结构
python-xingzangbing-fenxi/
├── app.py # Flask 应用主入口,页面路由与 API 接口
├── config.py # 应用配置(密钥、路径、特征定义、管理员账号)
├── run.py # 项目启动脚本(初始化数据库、训练模型、启动服务)
├── requirements.txt # Python 依赖包清单
├── data/
│ ├── processed.cleveland.data # UCI Cleveland 原始心脏病数据集(303条)
│ └── heart_extended_1025.csv # 训练用数据集(1025条)
├── database/
│ ├── __init__.py # 数据库模块包标识
│ └── db.py # SQLite 数据库初始化与 CRUD 操作
├── instance/
│ └── heart_disease.db # SQLite 数据库文件(自动生成)
├── ml/
│ ├── __init__.py # 机器学习模块包标识
│ ├── train.py # 模型训练(4种模型对比、特征重要性、指标保存)
│ └── predict.py # 模型预测(单条/批量、特征校验、风险分级、概率校准)
├── models/
│ ├── heart_model.pkl # 训练完成的模型文件(自动生成)
│ ├── scaler.pkl # StandardScaler 标准化器(自动生成)
│ ├── metrics.json # 模型评估指标(自动生成)
│ └── feature_importance.json # 特征重要性(自动生成)
├── static/
│ ├── css/
│ │ └── style.css # 自定义样式(专业医疗配色)
│ ├── js/
│ │ └── main.js # 全局脚本(提示自动关闭)
│ └── uploads/
│ ├── sample_batch.csv # 批量预测示例 CSV 文件
│ ├── test_low_risk.csv # 批量预测测试数据(低风险)
│ ├── test_high_risk.csv # 批量预测测试数据(高风险)
│ └── test_boundary.csv # 批量预测测试数据(临界值)
├── templates/
│ ├── base.html # 基础模板(导航栏、CDN 引用、页脚)
│ ├── index.html # 首页
│ ├── login.html # 登录页
│ ├── register.html # 注册页
│ ├── dashboard.html # 数据分析(12张 ECharts 图表)
│ ├── predict.html # 单条风险预测
│ ├── batch.html # 批量预测
│ ├── history.html # 预测历史
│ ├── model_info.html # 模型信息
│ ├── dataset.html # 数据集浏览
│ ├── train.html # 模型训练(管理员)
│ └── admin.html # 系统管理(管理员)
├── 运行步骤必看/
│ └── window.md # Windows 运行步骤说明
├── mac_run.sh # macOS/Linux 一键启动脚本
├── window_run.bat # Windows 一键启动脚本
├── 训练手册.md # 模型训练手册
├── 项目说明.md # 本文件
└── README.md # 项目简介
技术栈
| 类别 | 技术 |
|---|---|
| 后端 | Python 3.12 + Flask 3.0 |
| 数据库 | SQLite 3 |
| 前端 | HTML5 + Bootstrap 5.3 + ECharts 5.5 |
| 机器学习 | scikit-learn 1.5(随机森林、梯度提升、SVM、逻辑回归) |
| 数据处理 | pandas 2.2 + numpy 2.0 |
| 模型持久化 | joblib 1.4 |
| 用户认证 | Flask-Login 0.6 |
| 密码安全 | Werkzeug pbkdf2:sha256 |
环境要求
| 项目 | 要求 |
|---|---|
| Python | 3.12 |
| 操作系统 | Windows / macOS / Linux |
| 内存 | 建议 2GB 以上(模型训练时使用) |
| 磁盘 | 约 200MB(含依赖和数据库) |
| 浏览器 | Chrome / Firefox / Safari / Edge 现代版本 |
账号信息
| 角色 | 用户名 | 密码 |
|---|---|---|
| 管理员 | admin | admin123 |
管理员拥有模型训练和系统管理页面访问权限,可查看模型指标、管理用户、重新训练模型。新注册用户默认为普通用户角色,仅可使用预测、历史、数据分析等功能。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
城市交通流量预测与拥堵成因分析系统
是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

电商用户行为漏斗与CRO转化率优化分析
电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

多组学癌症预后预测分析系统
基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

基于 Apriori 算法的中药配伍审查系统
本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

基于 Python 的城市共享单车骑行需求时空分析系统
本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

基于 Python 的短视频用户行为分析系统
基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。