AI源码
AI源码AI 精选 · 优质源码 · 助力学习

基于协同过滤的电影推荐系统设计与实现

本系统是一个基于 Python Flask + SQLite 的电影推荐 Web 平台,内置豆瓣电影数据集,采用 scikit-surprise 实现 UserCF / ItemCF 协同过滤算法,提供热门推荐、个性化「猜你喜欢」、电影检索与详情、相似电影推荐、评分收藏及 ECharts 数据可视化,并配备管理后台,适用于推荐系统课程设计与学习演示。

评分:4.8/5.0
销量:81
发布:2026/6/25
难度:L2 进阶级
💬 联系咨询观看视频介绍
永久使用权限
免费更新维护
技术支持服务

项目封面

截图 1

项目说明

基于协同过滤的电影推荐系统设计与实现

一、项目简介

本系统是一个基于 Python Flask + SQLite 的电影推荐 Web 平台,内置豆瓣电影数据集,采用 scikit-surprise 实现 UserCF / ItemCF 协同过滤算法,提供热门推荐、个性化「猜你喜欢」、电影检索与详情、相似电影推荐、评分收藏及 ECharts 数据可视化,并配备管理后台,适用于推荐系统课程设计与学习演示。


一、运行环境

项目要求
操作系统macOS / Windows / Linux
Python3.12(macOS 用 python3.12,Windows 用 python)
数据库SQLite(内嵌,无需额外安装)
浏览器Chrome / Firefox / Edge 最新版
依赖管理pip + venv

核心依赖

版本用途
Flask3.0.3Web 框架
Flask-SQLAlchemy3.1.1ORM
scikit-surprise1.1.4协同过滤模型训练
pandas2.2.2数据处理
numpy1.26.4数值计算
pyecharts2.0.6数据可视化图表
joblib1.4.2模型序列化
requests2.32.3HTTP 请求(海报代理)
beautifulsoup44.12.3HTML 解析(豆瓣爬虫)

二、项目功能说明

2.1 用户端

功能说明
用户注册/登录账号密码体系,管理员/普通用户角色区分
首页热门推荐、高分佳作、猜你喜欢(个性化)三个板块
电影浏览按关键词搜索、按类型筛选、分页浏览
电影详情海报、评分、类型、导演、简介、相似推荐(ItemCF)
星级评分1-5 星交互评分,实时更新平均分
收藏管理收藏/取消收藏,我的收藏列表
个性化推荐三级冷启动降级:UserCF → ItemCF → 热门推荐
推荐算法讲解算法原理、相似度公式、三级策略详解页面

2.2 管理端

功能说明
数据概览电影总数、注册用户、评分总数、今日新增统计
用户管理用户列表、删除用户(数据集用户不可删除)
电影管理电影列表、搜索、编辑电影信息
图表分析类型分布饼图、评分分布柱状图、热门 Top10、评分趋势折线图
模型重训一键重训 ItemCF / UserCF 模型,显示 RMSE / MAE 指标

2.3 推荐算法

算法说明
UserCF基于用户的协同过滤(KNN, K=30, cosine),评分 ≥ 5 部时启用
ItemCF基于物品的协同过滤(KNN, K=40, cosine),电影详情页相似推荐、冷启动二级
热门推荐评分 0 部时的冷启动降级策略,推荐全站热门电影

三、文件目录

code/
├── app.py                      # Flask 应用工厂、路由注册、图片代理
├── config.py                   # 配置(数据库路径、端口、豆瓣参数)
├── requirements.txt            # Python 依赖清单
├── mac_run.sh                  # macOS 启动脚本
├── window_run.bat              # Windows 启动脚本
├── train_model.sh              # macOS 数据导入 & 模型训练脚本
├── _train_helper.py            # train_model.sh 调用的训练辅助脚本
├── fetch_posters.py            # 海报批量抓取脚本(OMDB + 豆瓣)
│
├── models/                     # 数据模型
│   ├── user.py                 #   User 模型
│   ├── movie.py                #   Movie 模型
│   ├── rating.py               #   Rating 模型
│   └── favorite.py             #   Favorite 模型
│
├── routes/                     # 路由蓝图
│   ├── auth_routes.py          #   注册 / 登录 / 登出
│   ├── movie_routes.py         #   电影列表 / 详情 / 评分 / 收藏
│   ├── recommend_routes.py     #   推荐中心 / 算法讲解
│   ├── user_routes.py          #   个人中心 / 收藏列表
│   └── admin_routes.py         #   后台管理(概览 / 用户 / 电影 / 图表 / 重训)
│
├── services/                   # 业务逻辑
│   ├── user_service.py         #   用户注册、验证、CRUD
│   ├── movie_service.py        #   电影查询、评分提交、收藏
│   ├── recommend_service.py    #   三级冷启动推荐策略
│   └── chart_service.py        #   Pyecharts 图表生成
│
├── recommend/                  # 推荐引擎
│   ├── train.py                #   ItemCF / UserCF 模型训练
│   ├── recommend_engine.py     #   模型加载与推荐推理
│   └── model/                  #   训练产物(.pkl)
│
├── utils/                      # 工具
│   ├── db.py                   #   SQLAlchemy 实例
│   ├── helper.py               #   装饰器、年份提取、时间格式化
│   ├── logger.py               #   日志
│   ├── data_loader.py          #   CSV 数据导入、管理员创建、用户补全
│   └── spinner.py              #   终端进度动画
│
├── database/                   # SQLite 数据库文件目录
├── cleaned_dataset/            # MovieLens 数据集
│   ├── movies.csv              #   电影元数据(34,894 部)
│   ├── ratings.csv             #   评分记录(1,198,272 条)
│   └── links.csv               #   MovieLens ↔ IMDb / 豆瓣 ID 映射
│
├── static/                     # 静态资源
│   ├── css/
│   │   ├── main.css            #   全局样式、导航栏、下拉菜单
│   │   ├── movie_card.css      #   电影卡片、网格、类型标签
│   │   └── admin.css           #   后台样式
│   ├── js/
│   │   ├── rating.js           #   星级评分交互
│   │   ├── favorite.js         #   收藏按钮交互
│   │   ├── retrain.js           #   模型重训交互
│   │   └── echarts/             #   Pyecharts 本地化资源
│   │       ├── echarts.min.js
│   │       └── themes/
│   └── img/
│       ├── avatars/            #   用户头像
│       └── default_poster.png  #   默认海报占位图
│
├── templates/                  # Jinja2 模板
│   ├── base.html               #   全局布局(导航栏、Flash)
│   ├── index.html              #   首页
│   ├── login.html              #   登录
│   ├── register.html           #   注册
│   ├── movie_list.html         #   电影列表
│   ├── movie_detail.html       #   电影详情
│   ├── recommend.html          #   推荐中心
│   ├── favorite.html           #   我的收藏
│   ├── profile.html            #   个人中心
│   ├── algorithm.html          #   算法讲解
│   └── admin/
│       ├── dashboard.html      #   数据概览
│       ├── user_manage.html    #   用户管理
│       ├── movie_manage.html   #   电影管理
│       ├── movie_edit.html     #   编辑电影
│       └── charts.html         #   图表分析
│
├── 模型训练.md                  # 训练步骤文档
└── 运行步骤必看/
    └── window.md               # Windows 运行步骤文档

技术分类

包含内容

完整源码
项目说明文档

适用人群

学习参考与二次开发

关于 AI源码

AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。

QQ: 861077046
邮箱: 861077046@qq.com
已服务 81+ 位用户
立即咨询

相关推荐

查看全部 →
城市交通流量预测与拥堵成因分析系统
Python
进阶

城市交通流量预测与拥堵成因分析系统

是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

PythonHTMLSQLite
4.820
电商用户行为漏斗与CRO转化率优化分析
Python
NEW
进阶

电商用户行为漏斗与CRO转化率优化分析

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

PythonHTMLSQLite
4.866
多组学癌症预后预测分析系统
Python
进阶

多组学癌症预后预测分析系统

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

PythonHTMLSQLite
4.834
基于 Apriori 算法的中药配伍审查系统
Python
NEW
进阶

基于 Apriori 算法的中药配伍审查系统

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

PythonHTMLSQLite
4.840
基于 Python 的城市共享单车骑行需求时空分析系统
Python
NEW
进阶

基于 Python 的城市共享单车骑行需求时空分析系统

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

PythonHTMLSQLite
4.857
基于 Python 的短视频用户行为分析系统
Python
NEW
进阶

基于 Python 的短视频用户行为分析系统

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

PythonHTMLSQLite
4.875