# Diet-Recommend **Repository Path**: zeron2022/Diet-Recommend ## Basic Information - **Project Name**: Diet-Recommend - **Description**: 本项目是一个智能化的饮食推荐系统,通过结合先进的机器学习算法和营养科学知识,为用户提供个性化的饮食建议。系统采用三阶段推荐架构: 🔍 协同过滤推荐(UPICF):基于用户行为数据计算用户相似度,生成候选菜品推荐列表 ⚖️ 多目标优化(MOPSO):根据用户健康目标和营养需求优化推荐,平衡营养均衡、用户偏好和多样性 📊 模型评估:对推荐结果进行全面评估,提供多种评估指标和可视化图表 🌟 项目 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-07-26 - **Last Updated**: 2026-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🍽️ 饮食推荐系统 > 🎯 基于UPICF协同过滤和MOPSO多目标优化的个性化饮食推荐系统 [![Python](https://img.shields.io/badge/Python-3.10-blue.svg)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.104.1-green.svg)](https://fastapi.tiangolo.com/) [![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://www.docker.com/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) --- ## 📋 目录 - [✨ 项目简介](#-项目简介) - [🎯 核心功能](#-核心功能) - [🏗️ 系统架构](#️-系统架构) - [🚀 快速开始](#-快速开始) - [📊 项目结构](#-项目结构) - [🔧 技术栈](#-技术栈) - [📈 算法详解](#-算法详解) - [💾 数据说明](#-数据说明) - [🌐 API文档](#-api文档) - [📖 相关文档](#-相关文档) - [🤝 贡献指南](#-贡献指南) - [📄 许可证](#-许可证) --- ## ✨ 项目简介 本项目是一个智能化的饮食推荐系统,通过结合先进的机器学习算法和营养科学知识,为用户提供个性化的饮食建议。系统采用**三阶段推荐架构**: 1. **🔍 协同过滤推荐(UPICF)**:基于用户行为数据计算用户相似度,生成候选菜品推荐列表 2. **⚖️ 多目标优化(MOPSO)**:根据用户健康目标和营养需求优化推荐,平衡营养均衡、用户偏好和多样性 3. **📊 模型评估**:对推荐结果进行全面评估,提供多种评估指标和可视化图表 ### 🌟 项目特色 - **🎯 个性化推荐**:结合用户健康信息、评分历史、交互行为等多维数据 - **🥗 营养均衡**:通过多目标优化确保推荐餐食营养均衡 - **⚡ 高性能**:基于FastAPI框架,支持高并发请求 - **🐳 容器化部署**:支持Docker容器化部署,便于扩展和维护 - **📈 可视化分析**:提供丰富的评估指标和可视化图表 --- ## 🎯 核心功能 ### 1. 🍽️ 个性化菜品推荐 ```http GET /recommend/{user_id} ``` 基于UPICF算法,整合用户健康信息、评分、交互行为等多维数据生成个性化推荐 **功能特点:** - ✅ 考虑用户健康特征(年龄、身高、体重、活动水平) - ✅ 融合评分历史和交互行为 - ✅ 时间衰减权重,重视近期行为 - ✅ 支持多种相似度计算方法 ### 2. ⚖️ 营养目标优化 ```http GET /optimize/{user_id} ``` 基于MOPSO算法,根据用户营养目标优化菜品配比 **优化目标:** - 🎯 UPICF推荐分数最大化 - 🥗 营养均衡性优化 - 💪 健康目标匹配(减重/增肌/维持) - 👄 口味偏好匹配 ### 3. 📊 系统健康检查 ```http GET /health ``` 监控系统运行状态,确保服务可用性 ### 4. 🔄 数据库集成 - 🗄️ 支持MySQL数据库 - 🔗 自动连接和断开管理 - 💾 数据持久化存储 --- ## 🏗️ 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 用户请求层 │ │ (Web/Mobile App) │ └────────────────────┬────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ FastAPI 网关层 │ │ (RESTful API + CORS支持) │ └────────────────────┬────────────────────────────────────────┘ │ ┌────────────┴────────────┐ ▼ ▼ ┌───────────────────┐ ┌───────────────────┐ │ UPICF推荐引擎 │ │ MOPSO优化引擎 │ │ - 用户相似度 │ │ - 多目标优化 │ │ - 评分预测 │ │ - 营养均衡 │ │ - 推荐生成 │ │ - 帕累托最优 │ └─────────┬─────────┘ └─────────┬─────────┘ │ │ └───────────┬───────────┘ ▼ ┌─────────────────────────┐ │ 数据访问层 │ │ (SQLAlchemy ORM) │ └────────────┬────────────┘ │ ▼ ┌─────────────────────────┐ │ MySQL 数据库 │ │ - 用户健康信息 │ │ - 菜品信息 │ │ - 评分数据 │ │ - 交互记录 │ └─────────────────────────┘ ``` --- ## 🚀 快速开始 ### 📋 前置要求 - 🐳 Docker 20.10+ - 🐙 Docker Compose 1.29+ - 🗄️ MySQL 5.7+ (或使用远程数据库) - 🐍 Python 3.10+ (本地开发) ### 🔧 方式1:Docker部署(推荐) ```bash # 1. 克隆项目 git clone https://github.com/yourusername/Diet-Recommend.git cd Diet-Recommend/python-backend # 2. 配置数据库连接 # 编辑 docker-compose.yml 中的 DATABASE_URL # 3. 启动服务 docker-compose up -d # 4. 查看日志 docker-compose logs -f # 5. 访问API文档 # 浏览器打开: http://localhost:8000/docs ``` ### 💻 方式2:本地开发 ```bash # 1. 创建虚拟环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 2. 安装依赖 pip install -r requirements.txt # 3. 配置数据库 # 编辑 app/config.py 中的数据库连接信息 # 4. 启动服务 python -m app.main # 5. 访问API文档 # 浏览器打开: http://localhost:8000/docs ``` ### 🧪 快速测试 ```bash # 测试推荐接口 curl http://localhost:8000/recommend/1 # 测试优化接口 curl http://localhost:8000/optimize/1 # 健康检查 curl http://localhost:8000/health ``` --- ## 📊 项目结构 ``` Diet-Recommend/ ├── 📁 python-backend/ # 后端API服务 │ ├── 📁 app/ # 应用核心代码 │ │ ├── main.py # FastAPI主程序 │ │ ├── upicf_recommender.py # UPICF推荐算法 │ │ ├── mopso_optimizer.py # MOPSO优化算法 │ │ ├── database.py # 数据库配置 │ │ ├── models.py # 数据模型定义 │ │ └── config.py # 配置文件 │ ├── Dockerfile # Docker镜像构建文件 │ ├── docker-compose.yml # Docker编排配置 │ ├── requirements.txt # Python依赖包 │ ├── .dockerignore # Docker忽略文件 │ ├── deploy.sh # Linux部署脚本 │ ├── 打包部署.bat # Windows打包脚本 │ ├── README.md # 后端文档 │ ├── 快速开始.md # 快速部署指南 │ ├── 模型说明.md # 模型详细说明 │ └── 模型评估与参数指南.md # 评估和调优指南 │ ├── 📁 Data Processing/ # 数据处理模块 │ ├── 📁 model/ # 模型训练和评估 │ │ ├── recommendation_system_complete.ipynb │ │ ├── NSGA-II+MOPSO混合算法改进方案.md │ │ ├── 协同过滤算法详解.md │ │ ├── 多目标优化算法详解.md │ │ ├── 参数优化指南.md │ │ └── 模型说明.md │ ├── 📁 数据增强/ # 数据增强处理 │ │ ├── process1.py │ │ ├── enhanced_user_features_960.csv │ │ ├── 增强原理.md │ │ └── 说明文档.md │ ├── 📁 用户信息处理/ # 用户数据处理 │ │ ├── dataprocessing1.py │ │ ├── dataprocessing2.py │ │ ├── 用户饮食偏好.xlsx │ │ └── 特征说明文档.csv │ ├── 📁 菜品处理/ # 菜品数据处理 │ │ ├── process2.py │ │ ├── process3.py │ │ ├── process4.py │ │ ├── 菜品.xlsx │ │ ├── 菜品特征向量说明文档.csv │ │ └── 交互数据文档.md │ └── 模型评估与参数指南.md │ ├── 📁 data/ # 数据库脚本 │ ├── db-recommend.py # 数据库操作脚本 │ ├── diet_data.sql # 数据库初始化脚本 │ └── 数据生成报告.md # 数据统计报告 │ └── README.md # 项目主文档 ``` --- ## 🔧 技术栈 ### 🎯 核心框架 - **🚀 FastAPI**: 现代化的Python Web框架,支持异步处理 - **🐳 Docker**: 容器化部署,环境一致性保证 - **🗄️ SQLAlchemy**: 强大的ORM框架,数据库操作抽象 ### 🧮 算法库 - **📊 NumPy**: 高性能科学计算库 - **🐼 Pandas**: 数据处理和分析 - **🤝 Scikit-learn**: 机器学习工具包 - **📈 SciPy**: 科学计算和优化 ### 🗄️ 数据存储 - **🐬 MySQL**: 关系型数据库 - **🔗 PyMySQL**: MySQL数据库连接器 ### 🛠️ 开发工具 - **📝 Jupyter Notebook**: 交互式开发环境 - **🐍 Python 3.10**: 编程语言 - **🎨 Uvicorn**: ASGI服务器 --- ## 📈 算法详解 ### 🔍 UPICF协同过滤算法 **核心思想:** 基于用户相似度的加权推荐,考虑时间衰减和多维交互行为 **算法流程:** 1. **👥 用户相似度计算** - 使用余弦相似度计算用户间相似性 - 构建用户相似度矩阵 2. **⏰ 时间权重计算** - 基于艾宾浩斯遗忘曲线 - 近期行为权重更高 3. **🎯 评分预测** ``` r̂ᵤᵢ = r̄ᵤ + (Σ sim(u,v) × (rᵥᵢ - r̄ᥣ) × time_weight) / Σ |sim(u,v)| ``` 4. **📋 推荐生成** - 根据预测评分排序 - 选择Top-N菜品推荐 **详细文档:** [协同过滤算法详解](Data%20Processing/model/协同过滤算法详解.md) ### ⚖️ MOPSO多目标优化算法 **核心思想:** 使用粒子群优化算法平衡多个冲突目标,找到帕累托最优解 **优化目标:** 1. **🎯 UPICF推荐分数**:最大化协同过滤推荐的评分 2. **🥗 营养均衡性**:最小化实际摄入与理想营养比例的偏差 3. **💪 健康目标匹配度**:根据用户健康目标匹配菜品 4. **👄 口味偏好匹配度**:匹配用户的口味偏好 **算法流程:** 1. **🎲 初始化粒子群** 2. **🔄 迭代优化** - 更新粒子位置和速度 - 计算适应度函数 - 跟踪个体最优和全局最优 3. **📊 帕累托前沿选择** 4. **🎯 最优解选择** **详细文档:** [多目标优化算法详解](Data%20Processing/model/多目标优化算法详解.md) ### 📊 模型评估指标 **评分预测评估:** - 📉 RMSE(均方根误差) - 📉 MAE(平均绝对误差) - 📈 R²决定系数 - 🔗 皮尔逊相关系数 **排序质量评估:** - 🎯 Precision@N(精确率) - 🔄 Recall@N(召回率) - ⚖️ F1-Score@N - 📈 NDCG@N(归一化折损累积增益) **多样性评估:** - 🌐 覆盖率 - 🎨 多样性 - ✨ 新颖性 - 📊 Gini系数 **详细文档:** [模型评估与参数指南](python-backend/模型评估与参数指南.md) --- ## 💾 数据说明 ### 📊 数据统计 | 表名 | 记录数 | 说明 | |------|--------|------| | user_health_info | 500 | 用户健康基本信息 | | dish_info | 500 | 菜品信息 | | ingredient_info | 1,000 | 食材营养数据 | | dish_ingredient_rel | 2,698 | 菜品-食材关联关系 | | dish_rating | 9,802 | 用户评分数据 | | food_record | 500 | 饮食记录 | | opinion_feedback | 100 | 用户反馈 | | user_dish_interaction | 20,000 | 用户-菜品交互 | | user_nutrition_goal | 500 | 用户营养目标 | | **总计** | **35,600** | **所有表记录总数** | ### 👥 用户特征 - **📅 年龄分布**: 平均34.9岁 - **📏 身高分布**: 平均169.7cm - **⚖️ 体重分布**: 平均61.4kg - **🏃 活动水平**: 轻(44), 中(83), 重(373) ### 🍽️ 菜品特征 - **🌍 菜系分布**: 徽菜(66), 湘菜(64), 家常菜(62), 浙菜(57), 粤菜(54), 鲁菜(53), 闽菜(53), 川菜(53), 苏菜(38) - **👄 口味分布**: 咸(114), 鲜(99), 甜(99), 辣(98), 清淡(90) - **🔥 烹饪方式**: 炒(76), 煮(69), 烤(67), 煎(63), 蒸(61), 炖(55), 凉拌(55), 炸(54) - **🔥 平均热量**: 244.0千卡/100g ### ⭐ 评分数据 - **📊 平均评分**: 3.60分 - **📈 评分分布**: 1星(490), 2星(1005), 3星(2376), 4星(3954), 5星(1977) - **⏰ 时间范围**: 2025-09-01 至 2025-09-29 **详细报告:** [数据生成报告](data/数据生成报告.md) --- ## 🌐 API文档 ### 📡 推荐接口 **获取个性化推荐** ```http GET /recommend/{user_id} ``` **响应示例:** ```json { "user_id": 1, "recommendations": [ { "id": 123, "dish_name": "宫保鸡丁", "cuisine": "川菜", "taste": "辣", "cooking_method": "炒", "calories": 180.5, "protein": 15.2, "fat": 8.3, "carbohydrate": 12.1, "fiber": 1.5, "pred_score": 4.5 } ] } ``` ### ⚖️ 优化接口 **营养目标优化** ```http GET /optimize/{user_id} ``` **响应示例:** ```json { "user_id": 1, "selected_dishes": [ { "dish_id": 123, "dish_name": "宫保鸡丁", "portion_g": 150.0, "portion_ratio": 0.3, "calories": 270.75, "protein": 22.8, "fat": 12.45, "carbohydrate": 18.15, "fiber": 2.25 } ], "nutrition_totals": { "calories": 1850.5, "protein": 68.2, "fat": 58.3, "carbohydrate": 245.1, "fiber": 23.5 } } ``` ### 💚 健康检查 **系统状态** ```http GET /health ``` **响应示例:** ```json { "status": "healthy", "database": "connected", "timestamp": "2025-06-02T10:30:00Z" } ``` ### 📖 完整API文档 启动服务后访问:`http://localhost:8000/docs` --- ## 📖 相关文档 ### 🚀 部署文档 - **[快速开始指南](python-backend/快速开始.md)** - 3分钟快速部署 - **[模型说明](python-backend/模型说明.md)** - 系统模型详细说明 - **[模型评估与参数指南](python-backend/模型评估与参数指南.md)** - 评估指标和参数调优 ### 🔬 算法文档 - **[协同过滤算法详解](Data%20Processing/model/协同过滤算法详解.md)** - UPICF算法原理 - **[多目标优化算法详解](Data%20Processing/model/多目标优化算法详解.md)** - MOPSO算法原理 - **[NSGA-II+MOPSO混合算法改进方案](Data%20Processing/model/NSGA-II+MOPSO混合算法改进方案.md)** - 混合算法优化 - **[参数优化指南](Data%20Processing/model/参数优化指南.md)** - 算法参数调优 ### 📊 数据文档 - **[数据生成报告](data/数据生成报告.md)** - 数据统计和特征分析 - **[交互数据文档](Data%20Processing/菜品处理/交互数据文档.md)** - 用户交互数据说明 - **[数据增强原理](Data%20Processing/数据增强/增强原理.md)** - 数据增强方法说明 --- ## 🤝 贡献指南 我们欢迎所有形式的贡献!如果您想为项目做出贡献,请遵循以下步骤: ### 🌟 贡献方式 1. **🐛 报告Bug**: 在Issues中提交bug报告 2. **💡 功能建议**: 提出新功能或改进建议 3. **📝 文档改进**: 完善项目文档 4. **🔧 代码贡献**: 提交代码改进或新功能 ### 📋 贡献流程 1. **🍴 Fork项目** 2. **🌿 创建特性分支** (`git checkout -b feature/AmazingFeature`) 3. **✅ 提交更改** (`git commit -m 'Add some AmazingFeature'`) 4. **📤 推送分支** (`git push origin feature/AmazingFeature`) 5. **🔀 开启Pull Request** ### 📝 代码规范 - 遵循PEP 8代码风格 - 添加适当的注释和文档字符串 - 编写单元测试 - 确保代码通过linting检查 --- ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 --- ## 🙏 致谢 感谢以下开源项目和工具: - [FastAPI](https://fastapi.tiangolo.com/) - 现代化的Python Web框架 - [NumPy](https://numpy.org/) - 科学计算基础库 - [Pandas](https://pandas.pydata.org/) - 数据处理和分析工具 - [Scikit-learn](https://scikit-learn.org/) - 机器学习工具包 - [Docker](https://www.docker.com/) - 容器化平台 --- ## 📞 联系方式 - **📧 Email**: 2351321183@qq.com - **🐙 Gitee**: [https://gitee.com/cqiemushuo/diet](https://github.com/yourusername/Diet-Recommend) - **📝 Issues**: [项目Issues](https://github.com/yourusername/Diet-Recommend/issues) --- ## 🎯 路线图 ### ✅ 已完成 - ✅ UPICF协同过滤推荐算法 - ✅ MOPSO多目标优化算法 - ✅ FastAPI后端服务 - ✅ Docker容器化部署 - ✅ 完整的文档体系 ### 🚧 进行中 - 🚧 前端用户界面开发 - 🚧 实时推荐功能 - 🚧 用户反馈系统 ### 📅 计划中 - 📅 移动端应用 - 📅 社交分享功能 - 📅 AI营养师聊天机器人 - 📅 多语言支持 ---
**⭐ 如果这个项目对您有帮助,请给我们一个Star!⭐** Made with ❤️ by Diet Recommendation Team