1、项目介绍
技术栈:
python 语言、django框架、MySQL数据库 、协同过滤推荐算法(基于物品+基于用户)、Echarts可视化、HTML

摘要
随着流媒体时代的到来,旅游推荐系统随之具有重要的地位。时代在进步,科技在进步,互联网改变了世界,在互联网时代,各行各业的人们都在寻求增长点,人们的日常生活越来越离不开互联网。以旅游信息为例,线下大量的各种旅游信息基本只会出现在旅游会上,但是现如今,人们越来越重视时间成本,所以越来越多的年轻人在网上查找自己想要查找的旅游旅游信息。然而,在互联网信息和海量数据源混合的情况下,如何快速精确的找到自己想要的数据是一个值得探讨的问题。
本系统使用Python开发 ,运用协同过滤推荐算法,完成通过用户的行为向其推荐旅游的目的。后端主要使用Django框架,前端页面的开发选择了Bootstrap 框架。利用MySQL数据库存储信息。本系统的前端用户模块主要包括注册、登录、旅游标签分类、旅游推荐、旅游列表、旅游排序等、后台管理模块主要包括用户管理、旅游旅游管理、用户权限管理等。推荐算法方面同时含有基于用户的协同过滤以及基于物品的协同过滤推荐。

关键词 旅游推荐; 协同过滤; Python;可视化 

2、项目界面
(1)首页—旅游景点排序

在这里插入图片描述

(2)旅游景点详情页—点赞、收藏、评分、景点详情信息

在这里插入图片描述

(3)基于用户推荐、基于物品推荐

在这里插入图片描述

(4)景点评分与数量分析

在这里插入图片描述

(5)景点词云图分析

在这里插入图片描述

(6)旅游景点年份分析

在这里插入图片描述

(7)省份占比分析

在这里插入图片描述

(8)旅游景点分类

在这里插入图片描述

(9)个人中心----我的收藏、评论、评分

在这里插入图片描述

(10)后台数据管理

在这里插入图片描述

3、项目说明

3、项目说明
随着流媒体时代的到来,旅游推荐系统随之具有重要的地位。时代在进步,科技在进步,互联网改变了世界,在互联网时代,各行各业的人们都在寻求增长点,人们的日常生活越来越离不开互联网。以旅游信息为例,线下大量的各种旅游信息基本只会出现在旅游会上,但是现如今,人们越来越重视时间成本,所以越来越多的年轻人在网上查找自己想要查找的旅游旅游信息。然而,在互联网信息和海量数据源混合的情况下,如何快速精确的找到自己想要的数据是一个值得探讨的问题。
本系统使用Python开发,运用协同过滤推荐算法,完成通过用户的行为向其推荐旅游的目的。后端主要使用Django框架,前端页面的开发选择了Bootstrap框架。利用MySQL数据库存储 信息。本系统的前端用户模块主要包括注册、登录、旅游标签分类、旅游推荐、旅游列表、旅游排序等、后台管理模块主要包括用户管理、旅游旅游管理、用户权限管理等。推荐算法方面同时含有基于用户的协同过滤以及基于物品的协同过滤推荐。

关键词 旅游推荐; 协同过滤; Python;可视化

5.3基于用户的旅游推荐功能
该算法主要用相似统计的方法得到具有相似爱好或者兴趣的相邻用户。基于用户(User-Based)的协同过滤算法首先要根据用户历史行为信息,寻找与新用户相似的其他用户;同时,根据这些相似用户对其他项的评价信息预测当前新用户可能喜欢的项。给定用户评分数据矩阵 R,基于用户的协同过滤算法需要定义相似度函数 s:U×U→R,以计算用户之间的相似度,然后根据评分数据和相似矩阵计算推荐结果。
具体步骤如下:第一步,收集用户信息。收集可以代表用户兴趣的信息。一般的网站系统使用评分的方式或是给予评价,这种方式被称为“主动评分”。另外一种是“被动评分”,是根据用户的行为模式由系统代替用户完成评价,不需要用户直接打分或输入评价数据。电子商务网站在被动评分的数据获取上有其优势,用户购买的商品记录是相当有用的数据。第二步,最近邻搜索(Nearest neighbor search, NNS)。以用户为基础(User-based)的协同过滤的出发点是与用户兴趣爱好相同的另一组用户,就是计算两个用户的相似度。例如:查找 n 个和 A 有相似兴趣用户,把他们对 M 的评分作为 A 对 M 的评分预测。一般会根据数据的不同选择不同的算法, 目前较多使用的相似度算法有 Pearson Correlation Coefficient(皮尔逊相关系数)、Cosine-based Similarity(余弦相似度)、Adjusted Cosine Similarity(调整后的余弦相似度)。

图 5.2-6 基于用户的旅游推荐

5.4基于物品的旅游推荐功能
该以项目为基础的协同过滤方法有一个基本的假设“能够引起用户兴趣的项目,必定与其之前评分高的项目相似”,通过计算项目之间的相似性来代替用户之间的相似性。
具体步骤如下:第一步,收集用户信息。同以用户为基础(User-based)
协同过滤。第二步,针对项目的最近邻搜索。先计算已评价项目和待预测项目的相似度,并以相似度作为权重,加权各已评价项目的分数,得到待预测项目的预测值。例如:要对项目 A 和项目 B 进行相似性计算,要先找出同时对 A 和 B 打过分的组合,对这些组合进行相似度计算。第三步,产生推荐结果。以项目为基础的协同过滤不用考虑用户间的差别,所以精度比较差。但是却不需要用户的历史数据,或是进行用户识别。对于项目来讲,它们之间的相似性要稳定很多,因此可以离线完成工作量最大的相似性计算步骤,从而降低了在线计算量,提高推荐效率,尤其是在用户多于项目的情形下尤为显著。
在协同过滤算法中,相似度的计算至关重要。只有计算了用户或者物品之间的相似度才能得出推荐列表.常用的相似度计算方法有以下几种:
(1)余弦相似度
在 n 维空间中,任意两个向量之间的夹角的余弦值大小即代表这两个向量的相似程度。余弦值的取值范围为[-1,1].假设 n 维空间中存在向量 i 和向量 j, 式(2-1)为计算其余弦相似度的公式.

(2)欧式距离
欧式距离也称为欧几里得度量,是指在 n 维向量空间中,任意两个向量之间的自然长度.同样的,假设存在向量 M 和 N,则欧式距离表达公式如式(2-2)所示。

(3)皮尔逊(Pearson)相关系数
如果一个推荐算法使用的是皮尔森相关系数来计算相似度,那么该算法将会比使用余弦相似度公式计算相似度的算法的精确度更高。然而这是要建立在两个用户拥有较多共同评分项目的基础上,如果两个用户之间共同评分项目很少,使用皮尔森相关系数进行计算无法反映出真实的相似度.假设存在两个向量J 与K,这两个向量间的皮尔森相关系数计算公式如式(2-3)所示

4、核心代码

5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐