旅游推荐数据分析可视化系统——讯飞AI助手(超级v2版本)+论文+数据+源码
项目介绍
本项目是一个基于Django框架开发的旅游推荐数据分析可视化系统,集成了讯飞AI大模型助手功能。系统通过对去哪儿网的旅游数据进行采集、分析和可视化,为用户提供个性化的旅游景点推荐服务,同时通过数据可视化展示各类旅游数据的分析结果,帮助用户更好地了解旅游市场趋势和景点特点。
系统功能特点
1. 用户管理功能
- 用户注册与登录
- 个人信息管理(修改个人资料、密码等)
- 用户浏览历史记录
2. 数据可视化功能
- 景点地理分布热力图
- 景点评分与销量排行榜
- 景点价格分布分析
- 用户评论数量统计
- 省份景点数量分布
- 用户活跃度时间分布
3. 景点推荐功能
- 基于协同过滤的个性化推荐
- 基于浏览历史的智能推荐
- 主题推荐(亲子游、文化游、自然风光游)
- 热门景点推荐
4. 文本分析与可视化
- 景点介绍词云图生成
- 用户评论词云图分析
- 评论情感分析
5. 讯飞AI助手功能
- 智能问答服务
- 旅游咨询与建议
技术架构
前端技术
- HTML/CSS/JavaScript
- Bootstrap框架
- ECharts图表库
- ApexCharts图表库
后端技术
- Python 3.x
- Django Web框架
- MySQL数据库
- 讯飞星火大模型API
数据分析与可视化
- NumPy/Pandas:数据处理
- Matplotlib/Seaborn:绘图
- Jieba:中文分词
- WordCloud:词云生成
数据库设计
系统主要包含以下数据表:
TravelInfo表:存储景点基本信息
- 景点名称、等级、折扣、销量
- 省份、热度、地址、简介
- 详情URL、评分、价格、评论数
- 详细介绍、图片列表、用户评论、封面图
User表:存储用户信息
- 用户名、密码、性别
- 地址、头像、个人简介
- 创建时间
UserBrowseHistory表:存储用户浏览历史
- 用户ID(外键)
- 景点ID(外键)
- 浏览时间
推荐算法详解
系统实现了多种推荐算法,以提供个性化的旅游推荐服务:
1. 基于用户的协同过滤推荐
def user_bases_collaborative_filtering(user_id, user_ratings, top_n=3):
# 获取目标用户的评分数据
target_user_ratings = user_ratings[user_id]
# 初始化用户相似度得分字典
user_similarity_scores = {}
# 将目标用户的评分转化为numpy数组
target_user_ratings_list = np.array([
rating for _, rating in target_user_ratings.items()
])
# 计算目标用户与其他用户之间的相似度得分
for user, ratings in user_ratings.items():
if user == user_id:
continue
# 将其他用户的评分转化为numpy数组
user_ratings_list = np.array([ratings.get(item,0) for item in target_user_ratings])
# 计算余弦相似度
similarity_score = cosine_similarity([user_ratings_list],[target_user_ratings_list])[0][0]
user_similarity_scores[user] = similarity_score
# 对用户相似度得分进行降序排序
sorted_similar_user = sorted(user_similarity_scores.items(), key=lambda x:x[1], reverse=True)
# 选择 TOP N 个相似用户喜欢的景点作为推荐结果
recommended_items = set()
for similar_user, _ in sorted_similar_user[:top_n]:
recommended_items.update(user_ratings[similar_user].keys())
# 过滤掉目标用户已经评分过的景点
recommended_items = [item for item in recommended_items if item not in target_user_ratings]
return recommended_items
算法步骤说明:
- 获取目标用户的评分数据
- 计算目标用户与其他用户之间的相似度(使用余弦相似度)
- 找出与目标用户最相似的N个用户
- 将这些相似用户喜欢的景点(但目标用户尚未评分的)作为推荐结果
2. 基于浏览历史的推荐
系统通过分析用户的浏览历史,识别用户偏好的省份和评分阈值,推荐符合用户口味的景点:
def getBrowseBasedRecommendation(user_id, limit=10):
# 获取用户浏览过的景点
browsed_travels = UserBrowseHistory.objects.filter(user_id=user_id)
# 统计用户偏好的省份
province_count = {}
for travel in browsed_travels_info:
if travel.province not in province_count:
province_count[travel.province] = 0
province_count[travel.province] += 1
# 获取前3个最受欢迎的省份
favorite_provinces = []
if province_count:
sorted_provinces = sorted(province_count.items(), key=lambda x: x[1], reverse=True)
favorite_provinces = [p[0] for p in sorted_provinces[:3]]
# 计算平均评分
avg_score = 计算用户浏览景点的平均评分
# 根据用户喜欢的省份和评分阈值筛选景点
# 返回符合条件的景点列表
3. 主题推荐
系统还提供了几种主题推荐功能:
- 亲子游推荐:分析景点描述中包含"亲子"、“家庭”、"儿童"等关键词的景点
- 文化游推荐:分析景点描述中包含"文化"、“历史”、"博物馆"等关键词的景点
- 自然风光推荐:分析景点描述中包含"自然"、“风景”、“山”、"海"等关键词的景点
讯飞AI助手集成
系统集成了讯飞星火大模型API,提供智能问答和旅游咨询服务:
# 讯飞星火API配置
appid = "xxx"
api_secret = "xxx"
api_key = "xxx"
domain = "lite" # 使用Lite版本
Spark_url = "wss://spark-api.xf-yun.com/v1.1/chat"
数据分析与可视化效果
系统对旅游数据进行了多维度分析,包括:
- 词云分析:通过jieba分词和WordCloud生成景点介绍和用户评论的词云图
def getIntroCloudImg(targetImgSrc, resImgSrc):
travelList = TravelInfo.objects.all()
text = ''
stopwords = ['的', '是', '在', '这', '那', '他', '她', '它', '我', '你','和','等','为','有','与']
for travel in travelList:
text += travel.detailIntro
cut = jieba.cut(text)
newCut = []
for tex in cut:
if tex not in stopwords:
newCut.append(tex)
string = ' '.join(newCut)
# 生成词云图
地理分布:通过ECharts实现全国景点地理分布可视化
评分与销量分析:展示不同景点的评分和销量数据,帮助用户识别高品质景点
价格分析:分析景点价格分布,帮助用户了解旅游市场价格行情
系统部署指南
Mac部署
- 安装Python环境(建议Python 3.8+)
- 安装MySQL数据库
- 克隆项目到本地
- 安装依赖:
pip install -r requirements.txt
- 创建MySQL数据库:
qunarinfos
- 修改数据库配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'qunarinfos', 'USER': "root", 'PASSWORD': 'your_password', 'HOST': "localhost", 'port': '3306' } }
- 迁移数据库:
python manage.py makemigrations python manage.py migrate
- 启动服务:
python manage.py runserver
Windows部署
- 安装Python环境(建议Python 3.8+)
- 安装MySQL数据库
- 克隆项目到本地
- 在虚拟环境中安装依赖:
pip install -r requirements.txt
- 创建MySQL数据库:
qunarinfos
- 修改数据库配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'qunarinfos', 'USER': "root", 'PASSWORD': 'your_password', 'HOST': "localhost", 'port': '3306' } }
- 修改词云生成中的字体路径为Windows系统字体路径
- 迁移数据库并启动服务
技术创新点
多维度数据可视化:系统通过多种图表类型(地图、柱状图、折线图、词云等)对旅游数据进行可视化展示,使数据分析结果更加直观。
混合推荐算法:结合协同过滤、内容分析和浏览历史等多种推荐策略,提高推荐准确性。
讯飞AI大模型集成:集成讯飞星火大模型API,为用户提供智能问答服务,增强用户体验。
用户行为分析:通过记录和分析用户的浏览历史,实现个性化推荐。
文本挖掘技术:对景点介绍和用户评论进行分词和词云分析,挖掘有价值的信息。
作者信息
B站: 万能程序员
b站视频:https://www.bilibili.com/video/BV1tAVezxED6