健身风险分析系统
基于机器学习的智能健身风险分析系统,整合数据可视化与人工智能算法,为健身房会员健康管理和运营提供决策支持。
系统功能
用户端功能
-
数据集成与实时展示
- 会员基本信息、历史数据及生理数据的动态查询
- 数据可视化展示
-
会员群体结构与画像分析
- 性别、年龄、训练类型等分布特征的饼图和柱状图展示
- K-means聚类算法将会员划分为四类典型画像:
- 高风险久坐族
- 潜力健身达人
- 稳定健康人群
- 高强度训练者
-
个性化健康风险评估
- 基于随机森林、逻辑回归算法的健康风险评估模型
- 健康风险程度智能计算与预测(低、中、高)
- 个性化风险报告生成
-
AI健身方案生成
- 使用DeepSeek API生成个性化健身方案
- 根据用户健康数据(BMI、心率、体脂率等)制定专属训练计划
- 包含训练安排、饮食建议和注意事项
- 实时流式输出,提供即时反馈
- 高性价比,相比OpenAI节省约78%成本
管理员端功能
-
风险预测与管理
- 所有会员统一的风险等级预测
- 可视化风险指数报告
- 宏观风险监控
-
数据管理
- 完整的数据增、删、改、查(CRUD)操作
- CSV数据批量导入
- 会员信息管理
认证系统
-
用户注册
- 用户名、邮箱注册
- 密码强度检测
- 表单验证
-
用户登录
- 安全的密码验证
- 会话管理
- 记住我功能
-
权限控制
- 用户端和管理员端分离
- 基于角色的访问控制
- 未登录用户自动重定向
-
用户管理
- 退出登录
- 修改密码
- 个人资料管理
技术架构
后端技术
- 框架: Flask 3.0
- 认证: Flask-Login
- 数据库: SQLite
- 机器学习 : scikit-learn
- 随机森林(Random Forest)
- 逻辑回归(Logistic Regression)
- K-means聚类
- 数据处理: pandas, numpy
- 密码加密: Werkzeug
前端技术
- UI框架: Bootstrap 5.3
- 图表库: ECharts 5.4.3
- HTTP客户端: Axios
- 图标库: Bootstrap Icons
AI服务技术
- AI模型: DeepSeek API (deepseek-chat)
- 客户端: OpenAI Python SDK 1.58.1(兼容接口)
- 优势: 高性价比、中文优化、快速响应
项目结构
workspace/projects/
├── app.py # Flask应用主文件
├── requirements.txt # Python依赖
├── .coze # 项目配置
├── README.md # 项目说明
├── app/
│ ├── __init__.py
│ ├── database.py # 数据库操作
│ ├── models.py # 会员数据模型
│ ├── auth_models.py # 用户认证模型
│ ├── routes.py # 路由定义(集成DeepSeek API)
│ ├── auth.py # 认证相关路由
│ └── ml_service.py # 机器学习服务
├── static/
│ ├── css/
│ │ └── style.css # 样式文件
│ └── js/
│ └── main.js # JavaScript工具函数
├── templates/
│ ├── base.html # 基础模板
│ ├── user_dashboard.html # 用户端页面
│ ├── admin_dashboard.html # 管理员端页面
│ ├── fitness_plan.html # 健身方案生成页面
│ ├── health_assessment.html # 个人健康评估页面
│ ├── profile.html # 个人资料页面
│ └── auth/ # 认证相关模板
│ ├── login.html # 登录页面
│ ├── register.html # 注册页面
│ └── no_permission.html # 权限不足页面
├── models/ # 机器学习模型存储目录
└── gym_risk.db # SQLite数据库文件
数据模型
用户信息(User)
- 用户ID
- 用户名
- 邮箱
- 密码哈希
- 角色(user/admin)
- 创建时间
用户资料(UserProfile)
- 用户ID(外键)
- 全名
- 年龄
- 性别
- 电话
- 地址
会员信息(Member)
- 基本信息:ID、年龄、性别、体重、身高
- 健康指标:BMI、体脂率、静息心率、平均心率、最大心率
- 运动数据:训练类型、训练频率、训练时长、卡路里消耗
- 水分摄入量
- 风险等级(Risk Level):Low、Medium、High
- 聚类标签(Cluster ID):0-3
安装与运行
1. 安装Python依赖
bash
pip install -r requirements.txt
依赖包括:
- Flask 3.0 - Web框架
- Flask-Login 0.6.3 - 用户认证
- Flask-SQLAlchemy 3.1.1 - ORM
- Flask-CORS 4.0.0 - 跨域支持
- pandas 2.1.4 - 数据处理
- numpy 1.26.2 - 数值计算
- scikit-learn 1.4.0 - 机器学习
- joblib 1.3.2 - 模型持久化
- openai 1.58.1 - DeepSeek/OpenAI API客户端(兼容接口)
2. 配置DeepSeek API Key
在系统环境变量中设置 DEEPSEEK_API_KEY(推荐)或 OPENAI_API_KEY:
Linux/Mac:
bash
export DEEPSEEK_API_KEY=your_actual_deepseek_api_key_here
Windows (PowerShell):
powershell
$env:DEEPSEEK_API_KEY="your_actual_deepseek_api_key_here"
Windows (CMD):
cmd
set DEEPSEEK_API_KEY=your_actual_deepseek_api_key_here
获取DeepSeek API Key:https://platform.deepseek.com/api-keys
3. 启动服务
bash
python3 app.py
服务将在 http://localhost:5000 启动
3. 初始化系统
首次运行需要按顺序执行以下操作:
3.1 登录系统
访问 http://localhost:5000/login
默认管理员账户:
- 用户名:
admin - 密码:
admin123
或注册新账户:
- 点击"立即注册"
- 填写用户名、邮箱和密码
- 完成注册后登录
3.2 导入CSV数据
- 以管理员身份登录
- 访问 http://localhost:5000/admin
- 点击"导入CSV数据"按钮
- 数据将自动从
/tmp/gym_members_data.csv导入
3.3 训练机器学习模型
- 点击"训练机器学习模型"按钮
- 系统将训练随机森林和逻辑回归模型
- 训练完成后会显示模型准确率
3.4 预测健康风险
- 点击"预测所有会员风险"按钮
- 系统将为所有会员预测健康风险等级
3.5 执行K-means聚类
- 点击"执行K-means聚类"按钮
- 系统将会员划分为4个群体画像
API接口
认证相关
POST /login- 用户登录POST /register- 用户注册GET /logout- 用户退出GET /api/current-user- 获取当前登录用户信息(需要登录)POST /api/change-password- 修改密码(需要登录)
数据管理
POST /api/import-data- 导入CSV数据(需要管理员权限)GET /api/members- 获取会员列表(分页)(需要登录)GET /api/members/<id>- 获取单个会员信息(需要登录)POST /api/members- 添加会员(需要登录)PUT /api/members/<id>- 更新会员信息(需要登录)DELETE /api/members/<id>- 删除会员(需要登录)
机器学习
POST /api/train-models- 训练模型(需要管理员权限)POST /api/predict-risks- 预测所有会员风险(需要管理员权限)POST /api/perform-clustering- 执行K-means聚类(需要管理员权限)
数据统计
GET /api/statistics- 获取统计数据(需要登录)GET /api/risk-distribution- 获取风险分布(需要登录)GET /api/cluster-analysis- 获取聚类分析结果(需要登录)
页面访问
公共页面
-
登录页面: http://localhost:5000/login
- 用户登录
- 记住我功能
-
注册页面: http://localhost:5000/register
- 新用户注册
- 密码强度检测
需要登录的页面
-
- 数据集成与实时展示
- 会员群体结构与画像分析
- 个性化健康风险评估
-
管理员端: http://localhost:5000/admin(仅管理员可访问)
- 风险预测与管理
- 数据管理(CRUD操作)
- 系统操作(导入、训练、预测、聚类)
注意:未登录访问上述页面会自动重定向到登录页面。普通用户访问管理员端会显示权限不足页面。
机器学习模型说明
随机森林(Random Forest)
- 用于健康风险等级预测
- 模型准确率:约86%
- 基于多个决策树的集成学习
逻辑回归(Logistic Regression)
- 用于健康风险等级预测
- 模型准确率:约71%
- 简单高效的概率分类模型
K-means聚类
- 将会员划分为4个群体
- 基于:年龄、BMI、训练频率、卡路里消耗、经验等级
- 生成会员群体画像
风险评估指标
健康风险等级根据以下综合指标计算:
- BMI(身体质量指数)
- 年龄
- 静息心率
- 训练频率
- 体脂率
风险等级划分:
- 低风险:综合得分 < 3
- 中风险:3 ≤ 综合得分 < 5
- 高风险:综合得分 ≥ 5
数据说明
系统使用CSV格式的健身数据,包含以下字段:
- Index:会员ID
- Age:年龄
- Gender:性别
- Weight:体重
- Height:身高
- Max_BPM:最大心率
- Avg_BPM:平均心率
- Resting_BPM:静息心率
- Session_Duration:训练时长
- Calories_Burned:卡路里消耗
- Workout_Type:训练类型
- Fat_Percentage:体脂率
- Water_Intake:水分摄入
- Workout_Frequency:训练频率
- Experience_Level:经验等级
- BMI:身体质量指数




