【重要提示主页置顶文章找我咨询】博主介绍全网个人号和企业号粉丝40W,每年辅导几千名大学生较好的完成毕业设计不断的进行新技术的项目实战可定制需求的各位可以先收藏起来1. 项目概述1.1 系统目标本系统旨在构建一个基于机器学习的高血压风险预测与分析平台通过分析用户的健康指标数据预测其患高血压的风险概率并提供个性化的健康建议。1.2 系统用途健康风险评估基于用户的年龄、血压、血脂、血糖等健康指标预测高血压风险概率数据可视化通过图表展示预测结果和健康指标分布历史记录管理保存用户的预测历史支持趋势分析个性化建议结合大语言模型生成针对性的健康管理建议1.3 整体流程数据预处理阶段对原始数据集进行清洗、特征工程、不平衡处理生成训练数据模型训练阶段使用随机森林、逻辑回归、XGBoost三种算法训练模型通过网格搜索优化超参数对比性能后选择最优模型系统运行阶段用户注册/登录系统输入健康数据年龄、血压、血脂、血糖等系统调用训练好的模型进行风险预测生成健康建议优先使用大模型失败则使用规则生成保存预测结果和历史记录可视化展示预测结果和趋势2. 技术栈简述2.1 后端技术Flask 2.3.3轻量级Web框架用于构建RESTful API服务Flask-CORS 4.0.0处理跨域请求支持前后端分离架构PyMySQL 1.1.0MySQL数据库连接驱动SQLAlchemy 2.0.23ORM框架简化数据库操作scikit-learn 1.3.0机器学习核心库提供模型训练、评估、特征选择等功能XGBoost 2.0.3梯度提升算法实现imbalanced-learn 0.14.1处理数据不平衡问题SMOTE过采样pandas 2.3.3数据处理和分析numpy 2.0.0数值计算基础库joblib 1.3.2模型序列化和加载requests 2.31.0HTTP请求库用于调用大模型APImatplotlib 3.7.2和seaborn 0.12.2数据可视化生成模型评估图表2.2 前端技术Vue 3.4.0渐进式JavaScript框架采用Composition APITypeScript 5.3.3类型安全的JavaScript超集Vite 7.2.6现代化前端构建工具提供快速开发体验Vue Router 4.2.5前端路由管理Pinia 2.1.7状态管理库Vue 3官方推荐Element Plus 2.4.4基于Vue 3的UI组件库ECharts 5.4.3数据可视化图表库Axios 1.6.2HTTP客户端用于API请求marked 11.1.1Markdown解析和渲染库2.3 数据库MySQL关系型数据库存储用户信息、健康数据和预测结果2.4 机器学习相关特征工程相关性分析、RFE递归特征消除特征选择模型算法随机森林、逻辑回归、XGBoost超参数优化GridSearchCV网格搜索 交叉验证模型评估准确率、召回率、F1值、AUC值、混淆矩阵、ROC曲线2.5 外部服务大语言模型API阿里云通义千问Qwen用于生成个性化健康建议3. 项目结构总览HyperML/ ├── backend/ # 后端服务 │ ├── app.py # Flask主应用入口配置CORS和路由 │ ├── config.py # 配置文件数据库、模型路径、LLM配置 │ ├── routes/ # API路由模块 │ │ ├── auth.py # 用户认证注册、登录、登出 │ │ ├── predict.py # 预测接口预测、快速预测、样本数据 │ │ └── history.py # 历史记录查询接口 │ ├── utils/ # 工具函数模块 │ │ ├── db_utils.py # 数据库操作封装UserDAO、HealthDataDAO、PredictionDAO │ │ ├── model_utils.py # 模型加载和预测ModelPredictor类 │ │ ├── advice_utils.py # 健康建议生成规则生成 LLM调用 │ │ └── llm_advice.py # 大模型API调用Qwen接口封装 │ ├── database/ # 数据库相关 │ │ ├── init_db.sql # 数据库表结构定义 │ │ └── init_database.py # 数据库初始化脚本 │ └── models/ # 训练好的模型文件 │ ├── best_model.pkl # 最优模型 │ ├── scaler.pkl # 特征标准化器 │ ├── feature_columns.pkl # 特征列名 │ └── [其他模型文件] │ ├── frontend/ # 前端应用 │ ├── src/ # 源代码目录 │ │ ├── main.ts # Vue应用入口 │ │ ├── App.vue # 根组件 │ │ ├── router/ # 路由配置 │ │ │ └── index.ts # 路由定义登录、注册、仪表盘、预测、历史 │ │ ├── views/ # 页面组件 │ │ │ ├── Login.vue # 登录页 │ │ │ ├── Register.vue # 注册页 │ │ │ ├── Dashboard.vue # 仪表盘统计信息、最近记录 │ │ │ ├── Predict.vue # 预测页面表单输入、结果展示、图表 │ │ │ └── History.vue # 历史记录列表、趋势图 │ │ ├── components/ # 公共组件 │ │ │ └── Navbar.vue # 导航栏 │ │ ├── layouts/ # 布局组件 │ │ │ └── MainLayout.vue # 主布局 │ │ ├── api/ # API封装 │ │ │ ├── request.ts # Axios请求拦截器配置 │ │ │ └── index.ts # API方法定义authApi、predictApi、historyApi │ │ ├── stores/ # 状态管理 │ │ │ └── user.ts # 用户状态Pinia store │ │ ├── utils/ # 工具函数 │ │ │ └── chart.ts # ECharts图表工具仪表盘、雷达图、折线图 │ │ └── styles/ # 样式文件 │ ├── vite.config.ts # Vite构建配置代理、别名 │ └── package.json # 前端依赖配置 │ ├── ml_scripts/ # 机器学习脚本 │ ├── data_preprocessing.py # 数据预处理加载、清洗、特征工程、RFE、SMOTE │ ├── model_training.py # 模型训练三种算法、超参数优化 │ ├── model_evaluation.py # 模型评估指标计算、可视化 │ ├── run_all.py # 完整流程执行脚本 │ └── processed_data/ # 处理后的数据文件 │ ├── datasets/ # 数据集目录 │ └── Hypertension-risk-model-main.csv # 原始数据集 │ ├── requirements.txt # Python依赖列表【重要提示主页置顶文章找我咨询】4. 主要功能模块说明4.1 数据预处理模块ml_scripts/data_preprocessing.py功能对原始数据集进行清洗、特征工程和平衡处理数据加载读取CSV格式的高血压数据集数据清洗处理缺失值、异常值特征工程相关性分析计算特征间相关性生成热力图RFE特征选择使用递归特征消除筛选重要特征数据平衡使用SMOTE过采样处理类别不平衡问题数据标准化使用StandardScaler标准化数值特征数据分割将数据分为训练集和测试集调用关系被run_all.py调用输出处理后的训练数据供模型训练使用4.2 模型训练模块ml_scripts/model_training.py功能训练多种机器学习模型并优化超参数模型类型随机森林RandomForestClassifier逻辑回归LogisticRegressionXGBoostXGBClassifier超参数优化使用GridSearchCV进行网格搜索和交叉验证模型保存将训练好的模型、最优参数、标准化器保存为pkl文件最优模型选择根据评估指标AUC、准确率等选择最优模型调用关系接收预处理后的数据输出训练好的模型文件到backend/models/4.3 模型评估模块ml_scripts/model_evaluation.py功能评估模型性能并生成可视化报告指标计算准确率、召回率、F1值、AUC值、混淆矩阵可视化生成ROC曲线对比图指标对比柱状图混淆矩阵热力图指标雷达图模型对比生成CSV格式的模型性能对比表调用关系评估训练好的模型生成评估报告和可视化图表4.4 用户认证模块backend/routes/auth.py功能处理用户注册、登录、登出用户注册验证用户名、密码格式检查重复密码SHA256加密存储用户登录验证用户名密码创建Session会话用户登出清除Session数据验证用户名格式3-20字符字母数字下划线、密码长度≥6位、邮箱格式调用关系前端通过/api/register、/api/login、/api/logout调用使用user_dao进行数据库操作4.5 预测模块backend/routes/predict.py功能接收健康数据调用模型进行风险预测数据验证验证必填字段和数值范围年龄、血压、胆固醇、血糖等模型预测调用model_utils.predict_risk()进行预测健康建议生成调用advice_utils.generate_health_advice()生成建议优先LLM失败则规则生成数据持久化保存健康数据和预测结果到数据库样本数据接口从数据集中随机返回一条样本数据供前端表单填充调用关系接收前端POST请求/api/predict调用model_utils进行预测调用advice_utils生成建议使用db_utils保存数据4.6 历史记录模块backend/routes/history.py功能查询用户的预测历史记录历史列表按时间倒序返回用户的预测记录详情查询根据预测ID查询完整的预测详情和健康数据权限验证检查用户登录状态确保只能查询自己的记录调用关系前端通过/api/history调用使用prediction_dao和health_data_dao查询数据4.7 模型预测工具backend/utils/model_utils.py功能加载模型并执行预测模型加载单例模式加载最优模型、标准化器、特征列特征预处理将用户输入的健康数据转换为模型所需格式应用标准化风险预测调用模型进行预测返回风险概率和风险状态0/1调用关系被predict.py路由调用是预测功能的核心逻辑4.8 健康建议生成模块backend/utils/advice_utils.py llm_advice.py功能生成个性化的健康建议LLM生成优先调用通义千问API基于用户健康数据和预测结果生成建议规则生成如果LLM不可用或调用失败使用规则引擎生成基础建议提示词构建将健康数据、风险概率、风险状态组织成结构化的提示词调用关系被predict.py调用advice_utils根据配置决定使用LLM还是规则生成4.9 前端页面模块功能提供用户交互界面登录/注册页用户认证入口支持表单验证仪表盘展示统计信息总预测次数、高风险次数、平均风险概率和最近预测记录预测页面健康数据输入表单基本信息、健康指标、其他信息样本数据快速填充功能预测结果展示风险等级、概率、健康建议可视化图表风险概率仪表盘、健康指标雷达图历史记录页列表展示历史预测趋势折线图详情查看调用关系通过api/index.ts中的API方法调用后端接口使用chart.ts生成可视化图表5. 关键接口或核心逻辑说明5.1 预测接口POST /api/predict功能接收健康数据返回风险预测结果和健康建议调用方式POST /api/predict Body: { age: number, sysBP: number, diaBP: number, totChol: number, glucose: number, male: 0|1, currentSmoker: 0|1, // ... 其他可选字段 }返回{ risk_probability, risk_status, risk_level, health_advice, prediction_id }核心逻辑验证用户登录状态Session验证健康数据格式和范围调用predict_risk()进行预测调用generate_health_advice()生成建议保存数据到数据库5.2 模型预测函数model_utils.predict_risk功能执行模型预测调用方式predict_risk(health_data: Dict) - (float, int)返回(风险概率, 风险状态)核心逻辑加载模型、标准化器、特征列单例模式将健康数据转换为DataFrame按特征列顺序排列应用标准化器标准化数值特征调用模型predict_proba()和predict()获取结果5.3 健康建议生成advice_utils.generate_health_advice功能生成个性化健康建议调用方式generate_health_advice(health_data, risk_probability, risk_status, use_llmTrue)返回健康建议文本Markdown格式核心逻辑如果启用LLM且配置完整调用llm_advice.generate_llm_advice()如果LLM失败或未启用使用规则引擎生成基础建议建议内容包含针对性建议、生活方式改善、医疗建议、预防措施5.4 用户认证POST /api/login功能用户登录创建Session调用方式POST /api/login Body: { username: string, password: string }返回{ user_id, username, email }核心逻辑验证用户名密码格式查询数据库验证用户密码SHA256加密后比对创建Session设置user_id5.5 历史记录查询GET /api/history功能获取用户的预测历史调用方式GET /api/history?limit10返回{ history: Array预测记录 }核心逻辑验证用户登录状态从数据库查询该用户的预测记录按时间倒序返回支持limit限制数量6. 前后端交互概述6.1 数据流转方式通信协议HTTP/HTTPS数据格式JSON认证方式基于Session的Cookie认证开发环境支持跨域跨域处理Flask-CORS配置允许前端域名localhost:8000访问支持凭证传递6.2 主要请求流程用户登录流程前端用户在登录页输入用户名密码前端调用authApi.login()发送POST请求到/api/login后端验证用户信息创建Session返回用户信息前端保存用户信息到Pinia store和localStorage前端路由跳转到仪表盘预测流程前端用户在预测页填写健康数据表单前端调用predictApi.predict()发送POST请求到/api/predict携带Session Cookie后端验证Session验证数据格式后端调用model_utils.predict_risk()加载模型并预测后端调用advice_utils.generate_health_advice()生成建议可能调用LLM API后端保存健康数据和预测结果到MySQL后端返回预测结果风险概率、状态、建议前端接收结果使用ECharts渲染图表仪表盘、雷达图使用marked渲染Markdown格式的健康建议历史记录查询流程前端在历史记录页调用historyApi.getHistory()前端发送GET请求到/api/history?limit100携带Session Cookie后端验证Session查询数据库后端返回历史记录列表前端渲染列表和趋势折线图6.3 API接口列表POST /api/register- 用户注册POST /api/login- 用户登录POST /api/logout- 用户登出POST /api/predict- 风险预测保存到数据库POST /api/predict/quick- 快速预测不保存GET /api/sample-data- 获取样本数据GET /api/history- 查询历史记录GET /api/history/id- 查询预测详情GET /api/health- 健康检查7. 需求文档对应关系概述7.1 数据处理需求实现数据清洗data_preprocessing.py中的clean_data()方法处理缺失值和异常值不平衡处理使用SMOTE过采样在feature_engineering()中实现特征工程实现了相关性分析analyze_correlation()和RFE特征选择select_features_rfe()数据标准化使用StandardScaler标准化数值特征7.2 多算法模型构建需求实现三种算法model_training.py中实现了随机森林、逻辑回归、XGBoost的训练超参数优化使用GridSearchCV进行网格搜索和交叉验证模型对比model_evaluation.py计算准确率、召回率、F1值、AUC值等指标生成对比图表最优模型选择根据评估结果选择最优模型保存为best_model.pkl7.3 系统开发需求实现前端使用Vue 3 TypeScript Element Plus实现用户界面ECharts实现可视化支持用户注册登录、数据输入、结果展示、历史记录查看后端基于Flask框架实现RESTful API支持多模型调用通过model_utils统一接口数据库MySQL数据库包含users、health_data、predictions三张表通过db_utils封装数据访问7.4 健康建议模块需求实现大模型接口集成llm_advice.py实现了通义千问QwenAPI的调用个性化建议生成advice_utils.py根据用户健康数据和预测结果调用LLM生成个性化建议失败时回退到规则生成Markdown渲染前端使用marked库渲染健康建议支持格式化显示7.5 系统测试需求功能测试通过前后端集成测试验证各功能模块性能测试模型预测响应时间、API响应时间模型评估通过测试集评估模型性能生成评估报告资料获取【重要提示主页置顶文章找我】
阅读完成 · 觉得有帮助?