旅游推荐系统毕业设计总结(包含旅游信息爬取、算法应用和旅游推荐系统实现)

哇塞,大学本科四年的时光就这样结束了,虽然做毕设的整个过程并不是特别煎熬,也没有像别人一样熬夜写代码,但是通过毕设我确实了解很多计算机相关知识,现在进行一个简单的总结:

最近更新这个系统,具体页面展示在这一片博客:

旅游推荐系统更新版本_#Amark的博客-CSDN博客

整个推荐模型的设计和实现的大体结构如下:

通过从数据库或csv文件中获取数据源,首先把数据进行数据清洗、数据集成、数据规约和模型鉴定,紧接着将数据与对应模式库的规则进行模式匹配,从而选择合适的算法进行模型训练和学习,并进行算法评估和对新出现的数据进行存储和学习,在上述过程中对所有操作进行日志管理和检验是否具备可操作权限,最后输出用户所期望的数据信息和内容。该模型能应用在景点分类、经费计算、路径规划、酒店推荐、特征提取、美食推荐。

目录

了解基于django的web开发

学会了python的基本使用,包含其中的numpy、pandas、jieba、sqlite、re等各式各样的库

开始接触算法的应用和创新,在毕设设计到了TF-IDF算法、朴素贝叶斯分类、蚁群算法

学会了网络爬虫,本次毕设使用的是beautifulsoup4v​

接触了数据挖掘、基于内容的推荐


现在目录上的章节如果有时间会进行详细的文章编写,目前暂时只完成了网络爬虫部分。

了解基于django的web开发

由于本次在研究中需要对模型的应用进行一个更好的可视化展示效果,我做了两个简单的开发界面,第一个是旅游界面的推荐,第二个是推荐后得到的结果。其具体Django教程在:快速入门Django开发教程(旅游推荐系统实现教程)

  1. 在做界面的时候主要是体验了一下循环渲染吧。{% %}
  2. 使用了json做了一下前后端数据的传输
  3. 使用ajax做了异步传输
  4. 还有如何快速获取网页的代码,当然这个只适用于日常的学习和研究。
  5. 模型的实现和应用

学会了python的基本使用,包含其中的numpy、pandas、jieba、sqlite、re等各式各样的库

自从使用了python以后,才发现python是真的很好用哈,基本可以使用python进行编程了。

  1. 了解到python中的字典、元组的使用并不局限于一维的方法,并能结合字典和元组一起使用。
  2. 在django开发中理解了class的使用和函数的定义和引用
  3. jieba用来处理的分词效果是真的很好哦
  4. numpy用来数据和矩阵的处理,真的很方便,基本上和pandans、matplotlib一起使用了
  5. 接触了一种新的数据库sqlite,了解了基本的增删改查。
  6. 接触到正则表达式,主要用了信息提取和信息删除
  7. 还有如何创建csv文件、遍历文件
  8. 接触到一种新的库管理工具homebrew

开始接触算法的应用和创新,在毕设设计到了TF-IDF算法、朴素贝叶斯分类、蚁群算法

  • 使用TF-IDF是进行的关键词提取
1. 将每一篇景点介绍文本进行分词处理
2. 求解各篇文章词的 TF IDF
3. 计算各篇文章各词的 TF-IDF
4. 根据权重值对各篇文章中词进行降序排序,选取权重值前 20 的词做为该景点的关键特征

 

  • 使用朴素贝叶斯来进行景点分类
1. 分解出各景点的关键特征并确定 训练数据 对应的特征 分类
2. 计算每个景点类别中对应特征的条件概率。
3. 计算景点所属各类别概率。
4. 选取概率值最高的类别作为该景点的分类。
景点分类标签:

现代风情、历史风情、当地特色、博物馆、动物园、游乐中心、历史伟人、当地公园、植物园、国内名校、购物中心、当地剧院、当地古镇、红色文化、体育公园、宗教圣地

景点分类研究结果

180个热门景点中有博物馆8个、当地动物园8个、当地公园17个、当地古镇4个、当地剧院3个、当地特色48个、购物中心8个、国内名校4个、红色文化6个、历史风情28个、历史伟人8个、体育公园3个、游乐中心17个、植物园3个、宗教圣地6个、现代风情10个。

  • 使用蚁群算法用来进行景点的路径规划
根据景点经纬度转换成对应的景点距离
蚂蚁从景点 i 转到景点 j 的概率
更新蚂蚁从景点 i 到景点 j 的信息素浓度
根据每日最佳游玩时间,和景点花费时间,分解最优路径得出每日景点规划

 

这些算法还是真的神奇,佩服数学的神奇!

学会了网络爬虫,本次毕设使用的是beautifulsoup4

第一次爬虫额,成功的爬取到了携程网的酒店、景点、美食信息。

其中本次爬虫的主要思想是:首先是找到携程网url的编写规律,然后根据规律使用beautifulsoup4对所需的html语言中的信息提取,最后就是封装处理。

如下是我爬取美食的代码,貌似景点和酒店已经我写的代码已经爬不了了。其具体代码在使用python爬取携程网旅游信息(包含景点、酒店、美食)

# -*- coding: utf-8 -*-
import requests
import io
from bs4 import BeautifulSoup as BS
import time
import re

"""从网上爬取数据"""

headers = {
"Origin": "https://piao.ctrip.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
}
places=["beijing1","shanghai2","changsha148","sanya61","chongqing158","hongkong38","chengdu104","haerbin151",
"xian7","guangzhou152","hangzhou14"]
placenames=["北京","上海","长沙","三亚","重庆","香港","成都","哈尔滨","西安","广州","杭州"]

places=["changsha148"]
placenames=["长沙"]

base="https://you.ctrip.com/fooditem/";
base2="https://you.ctrip.com";
requestlist=[]

for j in range(len(places)):  #爬取对应的特色菜
	requestlist.append({"url":base+places[j]+".html","place":placenames[j]})
	for i in range(2,2):
		tmp=base+places[j]+"/s0-p"+str(i)+".html"
		requestlist.append({"url":tmp,"place":placenames[j]});
#对应的url地址和所查询的位置
print(requestlist)
l=[]
count=1;
for i in range(len(requestlist)):
	response = requests.get(requestlist[i]["url"], headers=headers)
	#print(response)
	html=response.text
	#print(html)
	soup=BS(html,'html.parser')
	vs=soup.find_all(name="div",attrs={"class":"rdetailbox"})
	print("len(vs)",len(vs))
	for j in range(len(vs)):
		print("正在打印的条数:",j)
		try:
			#获取子网页链接地址
			href=vs[j].find(name="a",attrs={"target":"_blank"}).attrs["href"];

			#print("href",href)
			# 再次请求子网页,获取景点详细信息
			res = requests.get(base2+href, headers=headers)
			print("当前访问的网址:",base2+href)
			with open("3.html","w",encoding="utf-8") as f:
				f.write(res.text)
			soupi = BS(res.text,"html.parser") #该网页的html代码
			#print(soupi)
			vis = soupi.find_all(name="li",attrs={"class":"infotext"}); #获取此时的dom文件位置所在
			#print(vis)
			introduce=[]
			for i in range(len(vis)):
				introduce.append(vis[i].get_text())
			imgs=[];
			imglinks=soupi.find_all(name="a",attrs={"href":"javascript:void(0)"})
			#print(imte)
			# print(imglinks)
			# print(type(imglinks))
			#for img in imte:
				#imgs.append(img.attrs["src"])
			tmp={};
			tmp["id"]=count;
			tmp["name"]=vs[j].find(name="a",attrs={"target":"_blank"}).string;
			tmp["name"]=tmp["name"].replace(" ","").replace("\n","");
			tmp["introduce"]=introduce
			tmp["img"]=imglinks
			tmp["city"]=requestlist[i]["place"]
			count=count+1;
			l.append(tmp);
			time.sleep(1);
		except Exception as e:
			print(e)
			pass
		#print ("打印tmp",tmp)
		# with open("datap/"+tmp["name"]+".pk",'wb') as f:
		# 	pickle.dump(tmp,f);

		with io.open("/Users/hujinhong/PycharmProjects/untitled5/food/changsha/"+tmp["name"]+".txt",'w',encoding="utf-8") as f:
			f.write(str(tmp))
#print(l)
for i in l:
	print((i))
# # browser.close()#关闭浏览器
# with open("data2.txt",'w',encoding='utf-8') as f:
# 	f.write(str(l))
# with open("data2.pk","w",encoding="utf-8") as f:
# 	pickle.dump(l,f);
#https://hotels.ctrip.com/hotel/qingdao7/star2/k1%E4%BA%94%E5%9B%9B%E5%B9%BF%E5%9C%BA#ctm_ref=ctr_hp_sb_lst

所以爬虫还是挺有意思的。

接触了数据挖掘、基于内容的推荐

这两个话题虽然比较大,但是我还是想简单说一下自己的理解

  1. 数据挖掘的主要是最有用信息的一个提取,而我此次做的我觉得跟和机器学习相关联,因为是一个自动学习的过程。
  2. 然后基于内容的推荐,跟需要的自身含有的数据量,数据越多可能得到的结果会跟好,但是过多过少都会影响结果的正确性,过少的话会导致信息的特征少,过多的话会导致特征太过于负责,并且基于内容的推荐是不能挖掘用户的潜在信息的。
  • 64
    点赞
  • 471
    收藏
    觉得还不错? 一键收藏
  • 48
    评论
旅游推荐系统毕业设计可以从以下几个方面展开研究: 1. 系统架构设计设计一个智慧旅游推荐系统的整体架构,包括数据收集、兴趣模型构建、推荐算法实现和用户界面设计等方面。 2. 数据挖掘与分析:利用数据挖掘技术,对游客的历史行为数据进行分析,提取出用户的兴趣模型,从而为用户推荐感兴趣的旅游服务信息。 3. 推荐算法研究:研究并实现不同的推荐算法,比如基于内容的推荐算法、协同过滤算法等,用于为游客推荐个性化的旅游服务。 4. 用户界面设计设计一个友好、直观的用户界面,让游客能够方便地浏览和选择推荐的旅游服务信息。 5. 系统性能优化:针对智慧旅游推荐系统存在的问题,如推荐性能较差、信息不准确等,进行性能优化研究,提升系统的推荐效果和用户体验。 通过以上几个方面的研究,可以设计一个完整的旅游推荐系统,并通过实验和评估验证系统的性能和效果。这样的毕业设计将涵盖了智慧旅游推荐系统的关键技术和实现思路。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [毕业设计-基于大数据技术的旅游推荐系统-python](https://blog.csdn.net/qq_37340229/article/details/128347325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值