电影推荐系统 基于MovieLens数据集的电影推荐Web应用,使用余弦相似度算法实现基于内容的电影推荐。
功能特点 电影搜索:实现搜索电影名称 智能推荐:基于电影类型相似度,返回Top-N相似电影 评分展示:显示电影平均评分,辅助用户决策 Web界面:简洁易用的网页交互界面 RESTful API:提供JSON格式的API接口
技术栈 后端框架:Python + Flask 数据处理:Pandas、NumPy、scikit-learn 数据存储:CSV文件(MovieLens数据集) 前端:HTML + CSS(简单样式)
项目结构 movie-recommendation/ ├── app.py # Flask主程序 ├── requirements.txt # 项目依赖 ├── README.md # 项目文档 ├── templates/ # HTML模板 │ ├── index.html # 搜索页面 │ └── results.html # 结果展示页面 └── ml-latest-small/ # 数据集文件夹(需自行下载) ├── movies.csv # 电影数据 └── ratings.csv # 评分数据
快速开始
环境要求 Python 3.8+ pip包管理工具
安装步骤 1.克隆项目 git clone https://github.com/Villsition/MyProject.git cd MyProject
2.安装依赖 pip install -r requirements.txt
3.下载数据集
从 MovieLens 下载 ml-latest-small 数据集
将解压后的 ml-latest-small 文件夹放到项目根目录
最终目录结构如上所示
4.运行应用 python app.py
5.访问应用 打开浏览器访问 http://127.0.0.1:5000
使用指南 Web界面使用 在输入框输入电影名称(如 "Toy Story") 选择推荐数量(默认为5) 点击"推荐"按钮 查看推荐结果
API调用
curl "http://127.0.0.1:5000/api/recommend?movie=Toy%20Story&top_n=5"
{ "query": "Toy Story", "results": [ { "title": "Toy Story 2 (1999)", "genres": "Adventure|Animation|Children|Comedy|Fantasy", "avg_rating": 3.8 }, ... ] }
核心算法 基于内容的推荐 特征提取:将电影类型字段(如"Adventure|Animation")转换为独热编码向量 相似度计算:使用余弦相似度衡量电影之间的类型相似度 计算平均分:融合电影平均评分,使大众能够在搜索相似电影的同时看到相关电影的评分
from sklearn.metrics.pairwise import cosine_similarity similarity_matrix = cosine_similarity(feature_matrix)
性能优化 预计算相似度矩阵,启动后常驻内存 平均响应时间 <100ms
数据集说明 使用 MovieLens Latest Small 数据集: 电影数量:9,742部 评分数量:100,836条 用户数量:610位 时间范围:1995-2018年
待优化方向 集成Redis缓存,提升重复查询性能 增加更多特征(导演、演员、年份) 支持用户注册和个性化推荐 部署到云服务器,提供在线Demo 添加单元测试
联系方式 邮箱:3066959840@qq,com 个人主页:https://github.com/Villsition
致谢 MovieLens 提供的数据集 Flask 轻量级Web框架 scikit-learn 机器学习库
小贴士 如果遇到任何问题,请检查: Python版本是否3.8+ 依赖是否安装完整 CSV文件是否放在正确位置 端口5000是否被占用
如果这个项目对你有帮助,欢迎给个Star⭐!