跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
PythonAI算法

Python 协同过滤算法 Django 餐厅推荐系统

基于 Python 和 Django 构建餐厅推荐系统,核心采用协同过滤算法。通过 User-Based CF 计算用户相似度,利用 Pandas 处理评分矩阵预测偏好。系统架构遵循 MTV 模式,包含用户、餐厅及评分模型。API 设计支持前端动态渲染,性能优化涉及矩阵分解与混合推荐策略以缓解冷启动。最终通过 Docker 容器化部署,使用 RMSE 等指标评估效果。

SqlMaster发布于 2026/3/15更新于 2026/4/2611 浏览
Python 协同过滤算法 Django 餐厅推荐系统

协同过滤算法基础

协同过滤分为基于用户的协同过滤(User-Based CF)和基于物品的协同过滤(Item-Based CF)。核心思想是通过用户历史行为数据(如评分、点击)计算相似度,预测未评分项目的偏好。

  • 相似度计算:常用余弦相似度、皮尔逊相关系数。
    • 余弦相似度公式: [ \text{sim}(u, v) = \frac{\sum_{i \in I_{uv}} r_{ui} \cdot r_{vi}}{\sqrt{\sum_{i \in I_{u}} r_{ui}^2} \cdot \sqrt{\sum_{i \in I_{v}} r_{vi}^2}} ]
    • 皮尔逊相关系数: [ \text{sim}(u, v) = \frac{\sum_{i \in I_{uv}} (r_{ui} - \bar{r}u)(r{vi} - \bar{r}v)}{\sqrt{\sum{i \in I_{uv}} (r_{ui} - \bar{r}u)^2} \cdot \sqrt{\sum{i \in I_{uv}} (r_{vi} - \bar{r}_v)^2}} ]
  • 评分预测:加权平均用户或物品的相似评分。

Django 系统架构设计

采用 MTV(Model-Template-View)模式,核心模块包括用户管理、餐厅数据、评分记录和推荐引擎。

数据模型(models.py 示例):

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=100)
    # 其他字段如地理位置、饮食偏好

class Restaurant(models.Model):
    name = models.CharField(max_length=200)
    cuisine_type = models.CharField(max_length=100)
    # 其他字段如评分、价格区间

class Rating(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
    score = models.FloatField()
    # 用户评分(1-5 分)

推荐引擎实现

使用 Python 的 scikit-surprise 或 pandas 库实现协同过滤算法。

基于用户的 CF 示例代码:

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

def user_based_cf(target_user_id, ratings_df):
    # 构建用户 - 餐厅评分矩阵
    user_restaurant_matrix = ratings_df.pivot_table(index=, columns=, values=)
    user_similarity = cosine_similarity(user_restaurant_matrix.fillna())
    
    target_user_idx = user_restaurant_matrix.index.get_loc(target_user_id)
    similar_users = user_similarity[target_user_idx].argsort()[-:-]
    
    
    similar_users_ratings = user_restaurant_matrix.iloc[similar_users]
    predicted_scores = similar_users_ratings.mean(axis=)
     predicted_scores.sort_values(ascending=).head()
'user_id'
'restaurant_id'
'score'
0
# 找到相似用户
5
1
# 取前 4 个相似用户
# 预测未评分餐厅
0
return
False
10

性能优化与冷启动问题

  • 矩阵分解:使用 SVD 或 ALS 降低计算复杂度。
  • 混合推荐:结合内容过滤(如餐厅类型、价格)缓解冷启动。
  • 实时更新:定期重训练模型或增量更新相似度矩阵。

前端交互与 API 设计

  • 前端展示:通过 Ajax 调用 API,使用 Vue.js 或 React 渲染推荐列表。

RESTful API(Django REST Framework):

from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['GET'])
def get_recommendations(request, user_id):
    ratings_data = Rating.objects.all().values('user_id', 'restaurant_id', 'score')
    df = pd.DataFrame(list(ratings_data))
    recommendations = user_based_cf(user_id, df)
    return Response(recommendations.to_dict())

评估与部署

  • 评估指标:RMSE、精确率@K(Precision@K)。
  • 部署:Docker 容器化,Nginx+Gunicorn 部署。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

以上大纲涵盖技术实现关键点,可根据实际需求扩展冷启动策略(如基于流行度推荐)或引入深度学习模型(如神经协同过滤)。

目录

  1. 协同过滤算法基础
  2. Django 系统架构设计
  3. 推荐引擎实现
  4. 性能优化与冷启动问题
  5. 前端交互与 API 设计
  6. 评估与部署
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python OCC 三维建模实战与 CAD 应用开发
  • MC.JS WEBMC 在教育场景中的应用实践
  • 动态规划在斐波那契数列中的应用与优化
  • MetaAPP 前端一面面经深度解析
  • 前端安全实战:密码、XSS 与 CSRF 防护
  • Python + AI 智能害虫识别系统搭建指南
  • 日程事件管理日历应用(纯前端实现,支持导出 Excel)
  • Ubuntu 24.04 中文版 n8n Docker Compose 部署指南
  • Stable Diffusion 整合包安装与使用指南
  • 从零开始实现决策树——手撕 CART 算法(C++)
  • AIGC 插画创作技术解析与代码实战
  • HarmonyOS 5.0 物联网开发:基于星闪技术的智能家居边缘计算网关
  • 使用 OpenClaw 与飞书搭建专属 AI 机器人
  • WSL2 下 Webots 控制器地址错误 10.255.255.254 的原因与修复
  • Python Web 自动化测试实战:常用函数全解析与场景化应用指南
  • C++ 使用 CopyFileExA 实现带进度显示的文件拷贝
  • WebRTC P2P 信令服务架构设计文档
  • Qwen3-ASR-1.7B 在博物馆 AR 导览中的实时语音转写与知识图谱应用
  • 现代 C++ constexpr 特性演进:从 C++11 到 C++20
  • FPGA 部署 YOLOv5 算法的一般流程

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online