项目简介
本项目是学习《推荐系统开发实战》一书过程中编写的代码集合。前端运用Vue框架,后端采用Django框架,实现了新闻、图书和音乐三个推荐系统。通过一系列的数据处理、模型训练和算法计算,为用户提供个性化的推荐服务。
项目的主要特性和功能
新闻推荐系统
- 按各大主题热度排序展示新闻。
- 抽取并展示每篇新闻的关键词。
- 基于item进行新闻推荐。
- 展示热度榜,保证一定覆盖度。
- 为不同用户提供个性化“为你推荐”内容。
图书推荐系统
- 基于GBDT模型为不同用户提供个性化图书推荐。
- 展示图书详情信息。
- 记录用户的浏览足迹。
音乐推荐系统
- 利用网易云API获取部分数据。
- 基于标签推荐歌单、歌曲、歌手详情页。
- 基于用户和物品的协同过滤算法推荐用户、歌曲、歌手。
- 基于内容的推荐算法推荐歌单。
- 提供个性化排行榜。
- 为不同用户提供个性化“为你推荐”内容。
- 展示用户在站内的行为足迹。
安装使用步骤
通用准备
- 安装Node.js,使用Node的npm安装Vue、Vue-cli、Vue-router。
- 对于每个案例,在对应项目目录下,通过
npm install安装package.json中的Vue包。
新闻推荐系统
- 数据库迁移:在
NewsRec目录下,首次运行python manage.py migrate,再运行python manage.py makemigrations news,最后再次运行python manage.py migrate。 - 创建超级用户:运行
python manage.py createsuperuser,创建后台管理账户(如:admin/9003)。 - 数据处理
- 整合7个Excel文件中的新闻类别,插入到
cate表。 - 将原始Excel中类别字段用数字替代,对应
cate表。 - 通过Navicat或其他工具将增加字段后的Excel文件(可转成CSV格式)导入MySQL的
news表。 - 运行
NewsKeyWordsSelect.py抽取新闻关键词。 - 运行
NewsHotValueCal.py计算新闻热度值,写入newhot表。 - 运行
NewsTagcCorres.py根据新闻标签或关键词获取新闻信息,写入newtag表。 - 运行
NewsCorrelationCalculation.py计算新闻相关度,写入newsim表。
- 整合7个Excel文件中的新闻类别,插入到
- 启动服务
- 在
NewsRec目录下,运行python manage.py runserver,访问后台管理地址:http://127.0.0.1:8000/admin。 - 在
NewsRec-Vue目录下,运行npm run dev,访问前端地址:http://127.0.0.1:8000/。
- 在
图书推荐系统
- 数据库迁移:在
BookRec目录下,首次运行python manage.py migrate,再运行python manage.py makemigrations indexbook,最后再次运行python manage.py migrate。 - 创建超级用户:运行
python manage.py createsuperuser,创建后台管理账户(如:admin/9003)。 - 数据处理
- 使用
pandas将“豆瓣图书.xlsx”转换为“豆瓣图书.xls”。 - 运行
prepare.py将“豆瓣图书.xls”转换成可导入数据库的to_sql.txt。 - 利用Navicat将
to_sql.txt内容导入数据库的book表,增加book表的name字段长度到200。 - 运行
model.py对模型进行训练和保存。
- 使用
- 启动服务
- 在
BookRec目录下,运行python manage.py runserver,访问后台管理地址:http://127.0.0.1:8000/admin。 - 在
BookRec-Vue目录下,运行npm run dev,访问前端。
- 在
音乐推荐系统
- 数据库迁移:在对应目录下,首次运行
python manage.py migrate,依次运行python manage.py makemigrations indexmusic、python manage.py makemigrations playlist、python manage.py makemigrations sing、python manage.py makemigrations song、python manage.py makemigrations user,最后再次运行python manage.py migrate。 - 创建超级用户:运行
python manage.py createsuperuser,创建后台管理账户(如:admin/9003)。 - 数据获取
- 拷贝
playlist_id_name_all.txt到指定位置。 - 在
playlist_url下创建playlist_get_fail.txt。 - 运行
GetPlayListMess.py进行歌单信息处理。 - 运行
GetSongMess.py根据歌曲ID获取歌曲信息。 - 若
GetSingMess.py运行失败,使用案例中给的歌手信息数据。
- 拷贝
- 数据导入:运行
ToMySQL.py中的各个方法,分别将歌曲、歌词、歌手、用户、歌单等信息导入相应的数据库表。 - 数据分析
- 运行
RecPlayList.py,并将结果导入userplaylistrec表。 - 运行
RecSing.py,并将结果导入usersingrec表。 - 运行
RecSong.py,并将结果导入usersongrec表。 - 运行
RecUser.py,并将结果导入useruserrec表。
- 运行
- 计算相似度
- 运行
UserSim.py,并将结果导入usersim表。 - 运行
SongSim.py,并将结果导入songsim表。 - 运行
SingSim.py,并将结果导入singsim表。
- 运行
- 启动服务
- 在后端项目目录下,运行
python manage.py runserver。 - 在前端项目目录下,运行
npm run dev。
- 在后端项目目录下,运行
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】