我的毕业设计选题是《基于协同过滤的旅游推荐系统的设计与实现》,用到了python语言,在pycharm中实现。系统主要包含用户的登录注册、个人信息管理、个性化推荐、景点查找、景点收藏评论和后台管理六大功能模块。同组的一个女生是电影推荐系统,不过是用java实现的。
一、简述
整个程序是用的B站一个学长的代码,只不过那个代码中没有用到协同过滤的推荐,展示的结果是随机推荐的几个。视频中使用到了VMware虚拟机,python2,我的是python3,一开始想着可能不太通用,python卸了重装了好几回。后来发现在pycharm只用2to3这个工具就可以实现了,直接把Python2变成Python3,不需要改太多代码。运行该系统也可以在本机上,不必在虚拟机。传送门
当时在闲鱼上加了QQ,有一个卖家的展示视频就是B站的那个,而且要价很贵,1千加,都快够定制的了。
旅游推荐系统Django框架
1.数据爬取
数据来源是爬取“去哪儿”网的数据,用到了beautifulsoup库。具体网址为——去哪儿。该网址下方包含了全国各个城市的数据,从中选取了几个城市,进行爬取。每个城市爬取的景点个数为去哪儿网的前八名景点。在每一个具体景点信息中,爬取的内容为四张主图、景区所在地区、景区概述、景点评分、建议游玩时间。将文字内容存放在tour数据库中,图片则是另存在一个文件夹里,图片的命名规则是“城市_景区_x.png”x为1~4,对应下载的每一张图片。
2.基于用户的协同过滤推荐
由于这个推荐功能没有实现,我在闲鱼上买了一个系统,本身打算是用那个的,但那个界面有点普通,推荐只是一小个模块。我把买的系统里的推荐应用到了b站的这个上面。他的推荐算法是根据一篇博客的——基于用户的协同过滤算法。可以详细看一下这篇博客。协同过滤一般有基于用户的和基于物品的。这两种的适用场景不同,对于电影音乐旅游这类推荐,用户对其的偏好跟自身有关,适合用基于用户的协同过滤。而对于网上购物商城这类,商品之间的关联程度对用户的购买行为影响更为明显,所以适合用基于物品的协同过滤。
这个系统中总共是四种推荐方式。热门推荐——根据爬取的评分高低排序。随机推荐。猜你喜欢——基于用户的协同过滤。类似推荐——根据地点的推荐,位于同一地区的其他景点。
随机推荐有点问题,当点击图片时跳转到的景点不是图片上的,所以我是按北京地区进行的推荐。
3.后台管理
代码运行成功后,只有在页面上的操作,所以可以加入后台管理模块。在pycharm终端中输入python manage.py createsuperuser命令语句,并按照给出的提示语输入邮箱和密码,创建一个新的管理员用户。使用时在地址栏输入http://127.0.0.1:8000/admin/即可访问。Django自带的后台管理员功能超级方便。
看了关于Django的简介,能够参照代码对后端的连接有了大致印象,但前端页面的设计就不大懂,像前面的轮播图了,Ajax异步传输就很担心会被问到,还好答辩时几乎很少问前端的部分。强烈推荐看一下b站这个关于Django的视频,讲的很好,很全面,不过我太懒了,没看完。传送门
美女老师Django基础+实战全套视频教程
二、答辩问题
- URL什么意思(统一资源定位符)
- 你的http中网站啥不是8080,是8083,怎么设置的(端口占用)
- 某一个功能的具体实现过程
- 改网页的前端代码,如某个颜色
- 后台数据库是怎么连接的
- 前后台分离吗
也有让改后台的,室友糊弄地说了说,没有改,真改担心把程序都运行不了。有让演示查找功能的,并问其实现。(模糊查询)。
我们是在演示过程中,老师遇到感兴趣的开始提问,其实自己的系统功能都没有展示完。专业一共八十多个人,在两个办公室里,一天面完,差不多一晌是20个人左右。
我的问题:
①个性化推荐是怎么实现的(基于用户的协同过滤算法)
②其他几个推荐部分是怎么实现的(基于地理位置,大众评分和随机推荐)
③你是怎么理解冷启动问题的(这个是我在描述系统时提到了冷启动问题,就问了我)
三、前期准备
一开始还有时间我看了几篇不错的博客。有一篇是专门介绍她的旅游系统的——博客。她写了很多篇,内容都很好。但在爬取时会报错,没能成功爬取到相关数据,只有美食的代码可以爬取。——博客
所以,我又找了几篇文章,用这篇里面的代码可以成功爬取到数据——爬取去哪儿数据
系统源代码
链接:https://pan.baidu.com/s/1kwJhgnij6bwNMouZzjJN9w
提取码:qubw