基于python旅游推荐系统 协同过滤算法 爬虫 Echarts可视化 Django框架(源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、项目介绍

(1)技术栈:
Django框架、基于用户协同过滤推荐算法、requests爬虫、MySQL数据库、去哪儿网站、Echarts可视化
(2)介绍
本系统主要针对解决获取旅游信息滞后、参加线下旅行社和人工检索时间成本高等问题,运用网络爬虫信息技术设计思想,实现了一个基于Python的旅游信息推荐系统。本系统以Python计算机设计语言为基础,使用 requests对去哪儿旅游信息源进行抓取,针对网页信息编写抽取规则,对旅游信息进行必要的过滤和提取,使用MySql对旅游信息进行数据存储。然后使用 Python 开源web框架 Django进行系统搭建,基于旅游信息采用协同过滤推荐算法完成对用户的旅游信息推荐,完成整个爬取以及数据检索到成功进行旅游推荐的网页端操作展示。

2、项目截图

1、首页—数据概况

在这里插入图片描述

2、价格与销量分析

在这里插入图片描述

3、城市与景点等级分析

在这里插入图片描述

4、评分情况分析

在这里插入图片描述

5、景点推荐---------协同过滤推荐算法

在这里插入图片描述

6、景点数据管理

在这里插入图片描述

7、后台管理

在这里插入图片描述

3、项目说明

Django旅游采集可视化推荐系统是基于Django框架开发的一个旅游信息采集和推荐的应用。该系统通过爬虫技术从各个旅游网站抓取旅游信息,并利用推荐算法对用户进行个性化推荐,同时提供可视化展示界面。

以下是该系统的主要功能和组成部分的介绍:

旅游信息采集:系统通过编写爬虫程序,定期从各大旅游网站抓取旅游景点、酒店、机票等相关信息,包括价格、评价、位置等。这些采集到的数据会被保存到数据库中供后续使用。

用户注册与登录:用户可以注册自己的账号,并通过登录来获取个性化推荐和享受更多功能。

个性化推荐:系统会根据用户的历史浏览记录、收藏记录以及其他行为数据,利用推荐算法生成个性化推荐结果。推荐算法可以使用协同过滤、内容过滤、混合推荐等方法,根据用户的兴趣和偏好为其推荐最相关的旅游信息。

可视化展示界面:系统会将采集的旅游信息以可视化方式展示给用户,包括地图标记、图片展示、价格对比等功能。用户可以通过地图选择感兴趣的地区,查看该地区的旅游景点、酒店等信息。

用户交互和反馈:系统提供用户评价、评论和收藏等功能,用户可以对自己的旅游经历进行评价和分享,同时也可以保存自己喜欢的旅游信息以便日后查看。

后台管理:系统提供一个后台管理界面,管理员可以对用户信息、采集的数据、推荐算法参数等进行管理和配置。

Django旅游采集可视化推荐系统的目标是为用户提供便捷的旅游信息获取和个性化推荐,并通过可视化展示使用户更好地了解和选择适合自己的旅游产品。它可以帮助用户节省时间和精力,提高旅行的满意度。

4、核心代码

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
import os
import json
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE','travel.settings')
django.setup()
from app.models import TravelInfo


def getUser_ratings():
    user_ratings = {}
    for travel in TravelInfo.objects.all():
        comments = json.loads(travel.comments)
        for com in comments:
            try:
                com['userId']
            except:
                continue
            if user_ratings.get(com['userId'],-1) == -1:
                user_ratings[com['userId']] = {travel.title:com['score']}
            else:
                user_ratings[com['userId']][travel.title] = com['score']
    return user_ratings

def user_bases_collaborative_filtering(user_id,user_ratings,top_n=20):
# 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


if __name__ == '__main__':
    user_id =1
    user_ratings = getUser_ratings()
    recommended_items = user_bases_collaborative_filtering(user_id,user_ratings)

5、源码获取方式

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/337159.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年一整年的考试报名时间表不许再错过考试啦

每个大学生都不能错过的超全考试报名表! 有了它谁还会再错过考试哇!!! 1月报名 专转本考试 12月底-1月报名 卫生资格考试 1月中旬报名 教师资格证笔试 1月报名 各省省考 2月报名 医师资格考试 2月报名 初级高级会计 2月报名 计算机…

专业137总分439东南大学920专业基础综合考研经验电子信息与通信电路系统芯片

我本科是南京信息工程大学,今年报考东南大学信息学院,成功逆袭,专业137,政治69,英语86,数一147,总分439。以下总结了自己的复习心得和经验,希望对大家复习有一点帮助。啰嗦一句&…

NLP论文阅读记录 - 2021 | WOS 基于多头自注意力机制和指针网络的文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.问题定义和解决问题的假设问题定义解决问题的假设 三.本文方法3.1 总结为两阶段学习3.1.1 基础系统 3.2 重构文本摘要 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4…

[ VSCode ]command ‘python.setInterpreter‘ not found

ctrlshiftP 想用Python选择解释器 却出现如下报错,十分苦恼 开始解决问题 首先, 然后, 这里的路径是您安装在您电脑的路径,我的是如下 最后重启vscode或者电脑就好啦

vue.js js 雪花算法ID生成 vue.js之snowFlake算法

随着前端业务越来越复杂,自定义表单数据量比较大,每条数据的id生成则至关重要。想到前期IOS中实现的雪花算法ID,照着其实现JS版本,供大家学习参考。 一、库的建立引入 在你项目中创建一个snowFlake.js的文件:拷贝以下…

『MySQL快速上手』-⑩-索引特性

文章目录 1.索引的作用2.索引的理解建立测试表插入多条记录查看结果 2.1 MySQL与磁盘交互的基本单位2.1 为何IO交互要是 Page2.3 理解单个Page2.4 理解多个Page2.5 页目录2.6 单页情况2.7 多页情况2.8 B vs B2.9 聚簇索引 vs 非聚簇索引非聚簇索引聚簇索引 3.索引操作3.1 创建主…

webpack 核心武器:loader 和 plugin 的使用指南(下)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

c++函数重载(同名函数)功能,区别于c语言

c可以使用同名函数,实现功能类似的多个功能 规则: ①函数名相同,但是函数的参数(形参)绝不相同 ②参数个数不同 ③参数个数相同,参数类型不同 只有返回值类型不同,不可以;只有形…

Unity中ShaderGraph下获取主灯

文章目录 前言一、ShaderGraph获取主灯1、创建ShaderGraph2、创建一个自定义方法(Custom Function)节点3、新建两个 Vector3 类型的输出变量4、选择自定义节点程序体为 string 类型5、编写程序体6、我们输出主光方向看看效果7、我们输出主光颜色看看效果…

JRP Version 1.4.120

使用Flask学习制作网页一个月后: 借用HTML书籍学习,自己做的NAS管理系统终于是长得好看了一些: 使用模版继承,最开始是引用人家的库 from flask_bootstrap import Bootstrap, 效果: 我准备进一步管理但是发…

Arduino开发实例-MTH02温湿度传感器驱动

MTH02温湿度传感器驱动 文章目录 MTH02温湿度传感器驱动1、MTH02温湿度传感器介绍2、硬件准备及接线3、代码实现1、MTH02温湿度传感器介绍 市场上的温湿度传感器在价格、精度和测量范围等方面种类繁多。 MTH02O 是这些传感器中最小的一种。 该传感器使用数字引脚传输温度和湿度…

C++中const和constexpr的区别:了解常量的不同用法

C中const和constexpr的区别 一、C中的常量概念二、const关键字的用法和特点三、constexpr关键字的用法和特点四、const和constexpr的区别对比4.1、编译时计算能力4.2、可以赋值的范围4.3、对类和对象的适用性4.4、对函数的适用性4.5、性能和效率的差异 五、使用示例六、总结 一…

k3s x GitLab Runner Operator,GitLab CI 云原生构建新体验

GitLab CI 是非常常用的一款 CI/CD 工具,只需要在 .gitlab-ci.yml 文件中用 YAML 语法编写 CI/CD 流水线即可。而 GitLab CI 能够运行的关键组件是 GitLab Runner。GitLab Runner 是一个轻量级、高扩展的代理,主要用来执行 GitLab CI/CD 流水线中的 Job&…

《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(20)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(19) 2.4 PCI总线的配置 PCI总线定义了两类配置请求,一个是Type 00h配置请求,另一个是Type 01h配置请求。PCI总线使用这些配置请求…

1432 - 走出迷宫的最少步数-广度优先搜索BFS

代码 #include<bits/stdc.h> using namespace std; char a[51][51]; int r,c; int fx[4]{0,0,1,-1}; int fy[4]{1,-1,0,0}; int tx,ty; struct Node{int x,y,step; }; int bfs(int x,int y){a[x][y]#;queue<Node> q;q.push({x,y,1});while(!q.empty()){Node Curre…

Maven error in opening zip file?maven源码debug定位问题jar包

文章目录 问题发现调试Maven1. 查看maven版本2. 下载对应版本的maven源码3. 打开maven源码&#xff0c;配置启动选项 启动maven debug模式进入maven 源码&#xff0c;打断点调试找jar包算账 已录制视频 视频连接 问题发现 最近使用maven分析jar包的时候遇到了一个很搞的问题。…

鸿蒙星河版启航,开发者驶入生态新征程

操作系统市场的气候已经不同以往。在鸿蒙决定不再兼容安卓之后&#xff0c;这里正欲长出一片全新的天地。 四年前&#xff0c;华为鸿蒙系统横空出世&#xff0c;彼时它还不完全与安卓和iOS的性质划等号&#xff0c;而是定义为物联网操作系统。而如今的华为鸿蒙要改写故事篇章&…

前端基础面试题大全

一、Vue 文章目录 一、Vue1、vue 修改数据页面不重新渲染**数组/对象的响应式 &#xff0c;vue 里面是怎么处理的&#xff1f;** 2、生命周期Vue 生命周期都有哪些&#xff1f;父子组件生命周期执行顺序 3、watch 和 computed 的区别4、组件通信&#xff08;组件间传值&#xf…

WordPress怎么去除jquery和CSS静态文件链接中的版本号?附2种方法

我们很多WordPress网站默认情况下所加载的jquery和CSS静态文件链接中都会带有相应的版本号&#xff0c;比如boke112百科使用的YIA主题&#xff0c;加载CSS文件时就会在链接地址后面加上?ver2.7&#xff0c;即是style.css?ver2.7 除了CSS文件会加上版本号外&#xff0c;加载主…

32 登录页组件

效果演示 实现了一个登录页面的样式&#xff0c;包括一个容器、左侧和右侧部分。左侧部分是一个背景图片&#xff0c;右侧部分是一个表单&#xff0c;包括输入框、复选框、按钮和忘记密码链接。整个页面的背景色为白色&#xff0c;容器为一个圆角矩形&#xff0c;表单为一个半透…