基于Spark的旅游大数据平台的计划与实现

打印 上一主题 下一主题

主题 656|帖子 656|积分 1968

摘要:随着社会经济的快速发展和人们生活水平的提高,旅游业逐渐成为人们休闲娱乐和增长见识的重要选择。旅游市场的需求不停扩大,旅游业的竞争也日益激烈。因此,对于旅游行业从业者来说,如何正确把握市场动态、了解游客需求、优化旅游资源和服务成为亟待解决的问题。大数据技术的快速发展为旅游数据分析提供了新的机会。大数据技术具有数据量巨大、处理速率快、价值密度低等特点,可以对旅游行业中的海量数据进行分析和发掘,从而为旅游从业者提供有价值的信息和决议支持。旅游数据的来源多样,包括旅游者的个人信息、旅游景点的客流量、旅游路线的安排、旅游评价和评论等。这些数据的范例和结构各异,需要进行有效的整合和分析。基于大数据的基于Spark的旅游大数据平台可以对这些数据进行处理和发掘,从而为旅游行业提供全面、正确的数据支持。
  本文计划了基于Spark的旅游大数据平台,本体系的核心功能是通过爬取实海量旅游信息的原始数据,并通过大数据技术将原始数据存储、计算,并将分析的结果以可视化列表形式展示。
  本论文的主要研究工作及取得的成果如下:
  使用Flask等软件开辟技术,计划并成功开辟出了一套基于大数据的旅游网站配景软件体系,本配景体系的旅游信息数据源于旅游网站上爬取的旅游信息。对爬取到的原始数据进行数据洗濯后存储到本地机器上,利用大数据分析技术,对收罗的旅游数据进行深入发掘以便更好地理解游客的行为特性和趋势。
  关键词:大数据;Python;旅游推荐;旅游信息
  

  
   
Design and implementation of tourism big data platform based on Spark

  Abstract: With the rapid development of social economy and the improvement of people's living standards, tourism has gradually become an important choice for people's recreation and insight. The demand of tourism market continues to expand, and the competition of tourism industry is becoming increasingly fierce. Therefore, for tourism industry practitioners, how to accurately grasp the market dynamics, understand the needs of tourists, and optimize tourism resources and services has become an urgent problem to be solved. The rapid development of big data technology provides new opportunities for tourism data analysis. Big data technology has the characteristics of huge amount of data, fast processing speed and low value density, which can analyze and mine massive data in the tourism industry, so as to provide valuable information and decision support for tourism practitioners. The sources of tourism data are various, including the personal information of tourists, the tourist flow of tourist attractions, the arrangement of tourist routes, tourism evaluation and comments. The types and structures of these data vary and require effective integration and analysis. The tourism data analysis system based on big data can process and mine these data, so as to provide comprehensive and accurate data support for the tourism industry.
  This paper designs a tourism big data platform based on Spark. The core function of this system is to obtain raw data of massive tourism information through crawling, store and calculate the original data through big data technology, and display the analysis results in the form of a visual list.
  The main research work and achievements of this paper are as follows:
  By using Flask and other software development technology, a set of backend software system of tourism website based on big data is designed and successfully developed. The tourism information data of this backend system is derived from the tourism information crawled from the tourism website. After data cleaning, the extracted original data is stored on the local machine. Big data analysis technology is used to dig the collected tourism data deeply in order to better understand the behavioral characteristics and trends of tourists.
  Keywords: Big data; Python; Travel recommendation; Tourist information
  
   1 绪论

  1.1研究配景与现状

  在现在的互联网时代下,景点旅游规划的也由传统的线下规划变化为互联网旅游规划,现在市场上盛行的旅游软件和网站种类繁多,旅游信息质量也乱七八糟,相对比较着名且应用广泛的旅游信息发布平台有美团、连连周边游、58同城旅游等。在上述平台中天天都会发布海量的旅游信息和景点的信息,然而由于网络信息存在肯定的虛假性,这会给嬉戏者带来肯定的误导结果,导致网上嬉戏的过程的体验不佳。并且由于各平台之间的用户数据不互通,用户需要来回反复的进行注册登录利用,这一过程也会浪费大量时间和精力。
  总而言之,从上述问题可以看出现在互联网旅游信息平台信息缺乏整合,用户在冗杂的旅游信息中难以筛选出有效的信息。本论文拟开端研究开辟出一套完整的基于大数据平台的旅游平台信息分析体系,本体系主要用于对旅游信息和公司信息进行收罗,通过大数据平台对数据进行存储和计算,将大数据分析结果以可视化形式给用户查询。这样,用户在使用本平台时只需一次注册利用,即可浏览各平台发布的旅游信息,并且可以根据用户的条件进行筛选,可极大的提高嬉戏的服从,给景点和嬉戏的者都带来肯定的便利。
  旅游业是环球经济活动中最重要的部分之一,也是世界上最大的行业之一。随着环球旅游市场的不停扩大和信息技术的快速发展,旅游数据呈现出爆炸式增长的趋势,旅游大数据应运而生。大数据技术可以从巨大的旅游数据中提取有价值的信息,为旅游行业提供更正确、更全面的决议支持。
  现在,旅游大数据平台已成为旅游行业的研究热点。旅游大数据平台基于旅游大数据,通太过析用户汗青行为、兴趣爱好、地理位置等多维度信息,提高旅游景点的推荐满足度。
  进入21世纪,国民经济飞速发展,人们的物质生活水平得到了进一步提升, 旅游业如雨后春笋得到了蓬勃发展,其作为人们休闲放松的重要途径,一方面丰富了人们的生活,另一方面促进了国民经济增长。从旅游业发展现状看,其在旅游人数、旅游效益方面迅猛增长,但由于发展时间短、配套办法不完善,尚缺乏科学的数据分析,旅游经济增收受到了肯定的限定。大数据时代的到来,使得旅游业发展进入一个新的阶段,行业需求呈现出精致化的特性,利用大数据、信息化手段,可以或许为游客提供极大的便利。现有的旅游大数据平台成熟度低,缺乏有效的监管,距离聪明旅游发展还存在肯定的距离。 构建基于大数据的基于Spark的旅游大数据平台是满足游客个性化旅游需求的有效举措,也是促进聪明旅游发展的一定选择。总之,大数据旅游大数据平台具有广阔的应用远景和研究价值。在未来,旅游行业将会越来越依赖大数据技术和旅游大数据平台,以提升旅游服务质量和用户满足度,推动旅游经济的可连续发展。
  

  1.2 国表里研究现状

  旅游大数据平台是一个涉及计算机科学、旅游管理、人工智能等多个领域的交叉研究领域,吸引了众多学者的关注。以下是旅游大数据平台在国表里研究现状的一些关键方面:
  数据源和特性提取:国表里的研究者使用各种数据源来构建旅游大数据平台,包括用户汗青行为数据、社交媒体数据、地理位置数据等。在特性提取方面,研究者通常将用户偏好、兴趣爱好、出行目标等作为重要特性进行分析。
  推荐算法和模型:研究者在推荐算法和模型方面进行了大量的尝试和探索。传统的算法包括基于内容的推荐、协同过滤推荐等,而近年来,深度学习和强化学习等技术也被应用于旅游大数据平台中,比方使用神经网络模型进行推荐。
  个性化推荐:个性化推荐是旅游大数据平台的核心目标之一。国表里的研究者都致力于提高个性化推荐的正确性和精度。一些研究者提出了基于用户偏好的推荐模型,比方通太过析用户汗青行为和兴趣爱好,为用户推荐符合其个性化需求的旅游产物和服务。
  实时推荐与在线学习:实时推荐是旅游大数据平台的发展方向之一。研究者积极探索如何利用实时数据来提供实时、个性化的推荐。此外,一些研究者还尝试将在线学习技术应用于旅游大数据平台中,以实现体系的自适应学习和优化。
  用户体验和可表明性:除了推荐正确性,研究者也关注提高用户体验和可表明性。比方,一些研究者试图通过增长推荐结果的多样性和生动性,提高用户满足度。同时,也有一些工作着重于表明推荐结果的原因和依据,以增强用户对推荐体系的信任。
  总体而言,国表里的研究者在旅游大数据平台领域取得了肯定的进展,但仍面临一些挑战,如数据希罕性、冷启动问题、推荐表明等。未来,旅游大数据平台研究将继续关注这些问题,并结合最新的技术发展,力求提供更正确、个性化、可表明的推荐服务。
  

  1.3论文主要研究工作

  本研究旨在基于大数据技术,结合旅游行业的实际需求,开展旅游推荐与个性化服务的分析与研究。对于推动旅游行业的技术创新和服务升级具有重要的意义。起首,通过对游客的旅游行为数据进行深入分析,可以帮助旅游企业更好地理解游客的需求和偏好,优化产物计划和服务流程,提升游客的满足度。其次,基于大数据的旅游大数据平台可以为游客提供更加精准、个性化的服务,提高游客的旅游体验和忠诚度。最后,本研究可以为其他行业提供鉴戒和参考,推动大数据技术在更多领域的应用和发展。
  
本体系起首需要提供给客户管理和使用的数据。本文使用基于Python语言的Scrapy框架的网络爬虫技术爬取用户使用率较高的旅游网站上实时的旅游信息以及公司信息作为数据来源,以此作为大数据分析的关键数据支撑。然后使用本地机器,生态圈中分布式运算模型词云框架对海量的旅游信息数据进行数据洗濯,数据融合,计算,分析等流程,数据通过处理后长期化到MySQL数据库中存储。在计算出分析结果数据后,使用Flask等软件开辟技术等框架完成基于大数据分析平台体系的配景的开辟。

  本文开辟一套Web体系将市面上的旅游信息通过大数据技术进行存储、计算与智能化分析,将会给应聘人员提供巨大的好处。在提供旅游信息列表展示以及筛选功能的同时,还为用户提供个人推荐管理,注册修改等功能,这样做便使得该体系成为功能相对完整,业务逻辑清晰,可大幅度提高嬉戏的和旅游的服从。
  

2 技术总述

2.1 Python爬虫技术

Python爬虫技术可以帮助我们获取旅游景点的热度和消费价格等相关数据,这些信息对于选择旅游目标地非常重要。通过爬取各大旅游网站或者社交媒体平台的数据,我们可以得到各个景点的热度排名和用户评价等信息,同时还能获取到景点的门票价格、过夜费用以及其他消费项目标平均价格。
利用Python爬虫技术,我们可以主动化地获取这些数据,并将其整理成易于阅读的格式,比方天生一个表格或者图表。这样,我们就可以或许快速正确地比较各个景点的热度和消费价格,从而更好地做出旅游决议。
比如,我们可以通过爬取各个景点的热度排名,了解哪些景点近期受到游客的热捧,从而选择热门景点,享受更好的旅游体验。同时,我们也可以通过获取消费价格数据,对比不同景点的门票价格、过夜费用等,帮助我们在预算范围内选择适合的旅游目标地。
总之,利用Python爬虫技术获取旅游景点的热度和消费价格等数据,可以帮助我们更加科学地选择旅游目标地,提供更好的旅游体验。
                        

2.2 推荐体系技术

推荐体系是一种信息过滤体系,通太过析用户的行为、偏好和个人信息,将最相关、最有效的信息或商品推荐给用户,以提高用户的满足度和体验。在电商、社交网络、音乐、视频等领域,推荐体系已经成为用户获取信息和产物的重要工具。
推荐体系算法可以分为基于内容的推荐算法和协同过滤算法。基于内容的推荐算法是根据物品的属性和用户的偏好进行匹配推荐,它主要关注物品的内容特性;而协同过滤算法则是基于用户的行为数据,通太过析用户与物品的汗青关系,找出具有相似行为特性的用户或物品,从而进行推荐。
在推荐体系中,Spark可以高效地处理大规模的用户行为数据和物品元数据。
协同过滤,简朴来说是利用与用户兴趣相投、拥有共同履历之群体的喜好来推荐给用户感兴趣的物品。兴趣相投使用数学语言来表达就是相似度  (人与人,物与物)。因此,根据相似度的对象,协同过滤可以分为基于用户的协同过滤和基于物品的协同过滤。
以评分矩阵为例,以行方向观测评分矩阵,每一行代表每个用户的向量表示,比方用户user-1的向量为 [4, 0, 2, 5, 0, 0]。以列方向观测评分矩阵,每一列表示每个物品的向量表示,比方物品item-1的向量为[4, 3, 0, 0, 5]。
基于向量表示,相似度的计算有多种公式,比方余弦相似度,欧氏距离,皮尔森。这里我们以余弦相似度为例,它是我们中学学过的向量夹角 (中学只涉及2维和3维) 的高维推广,余弦相似度公式很容易理解和使用。给定两个向量 A={a1,⋯,an}
 和B={b1,⋯,bn}
 ,其夹角界说如下:



比方,我们计算user-3和user-4的余弦相似度,二者对应的向量分别为 [0, 2, 0, 3, 0, 4],[0, 3, 3, 5, 4, 0]



向量夹角的余弦值越靠近1代表两个物品方向越靠近平行,也就是越相似,反之越靠近-1代表两个物品方向越靠近反向,表示两个物品相似度靠近相反,靠近0,表示向量靠近垂直/正交,两个物品几乎无关联。显然,这和人的直觉完全一致。
推荐算法是旅游大数据平台的核心构成部分,它负责根据用户的汗青行为、偏好和其他相关信息,为用户天生个性化的旅游推荐列表。在本体系中,我们采用了基于内容的推荐算法和协同过滤推荐算法相结合的方式,以提供更加精准和多样化的推荐结果。

在本体系中,我们将基于内容的推荐算法和协同过滤推荐算法相结合,以充实利用两种算法的优势。通过基于内容的推荐算法,我们可以为用户推荐与其汗青行为数据相符合的商品;然后,通过协同过滤推荐算法,我们可以进一步发掘用户的潜在兴趣和偏好,为用户推荐更加个性化和多样化的商品。通过这种方式,我们希望可以或许为用户提供更加精准、全面和高效的旅游推荐服务。

为了不停提高推荐算法的性能和正确度,我们还会不停引入新的算法和技术,如深度学习、强化学习等,以不停优化和完善我们的旅游大数据平台。



2.3 Flask技术

Flask 是一款 Python 的轻量级 Web 框架,它的特点是简朴易用、机动性高。Flask 框架可以快速搭建 Web 应用程序,是一个很好的选择。Flask 框架的核心头脑是 WSGI(Web Server Gateway Interface),它界说了 Web 服务器和 Web 应用程序之间的通信协议。

Flask 是一个简洁而机动的 Python Web 框架,适用于构建小型到中型的 Web 应用程序。通过掌握 Flask 的基础知识、创建 Flask 应用、界说路由和视图函数,以及使用模板和静态文件,你将可以或许快速搭建自己的 Web 应用程序。

在开始使用 Flask 之前,你需要先安装 Flask。你可以使用 pip 包管理器来安装 Flask。打开终端并运行以下下令:

pip install flask,安装完成后,你就可以在你的项目中使用 Flask 了。


2.4本章小结

本章主要分析了体系开辟过程中使用到的技术点和框架,通过研究这些技术的原理后,在本计划中加以应用,包括旅游信息收罗的爬虫技术,数据长期化存储技术,以及基于Flask框架的体系配景技术,通过预研上述技术点并加以应用从而开辟出基于大数据分析平台的基于Spark的旅游大数据平台。



3 旅游数据收罗


数据收罗和处理是体系的核心部分,需要根据需求来计划数据收罗和处理方案。具体步骤如下:
1、确定命据来源:根据需求来确定命据来源,可以从各大旅游网站、当局数据发布平台等渠道获取数据。
2、计划数据收罗方式:根据数据来源来计划数据收罗方式,可以使用Python中的网络爬虫库(如Scrapy)来抓取数据。
3、数据洗濯和转换:获取到的数据可能存在格式不一致、数据质量不高等问题,需要进行数据洗濯、处理和转换,使其符合体系的数据分析需求。
3.1 旅游数据爬虫计划

这个项目我们的主要目标是爬取旅游网站网的旅游数据信息,包括旅游岗
位、景点名称和景点描述和规模等具体详情信息,下面描述本文爬虫工程主要设
计步骤。

  • 创建项目

打开一个终端输入:scrapy startproiect python_ city _data,Scrapy框架将会在指定目录下天生整个工程框架。体系天生的目录如下图3-2所示:

图3-2爬虫框架目录结构

(2)修改setting文件

如图3-1所示为修改后的setting文件主要内容,本计划主要修改三项内容,
第一个是不遵照机器人协议,第二个是下载间隙,由于下面的程序要下载多个页
面,所以需要给一个间隙(不给也可以,只是很容易被侦测到),第三个是请求
头,添加一个User-Agent。

(3)确认要提取的数据,item 项
item界说你要提取的内容(界说数据结构),比如我提取的内容为旅游信息的所在城市和景点旅游详情,于是需要在items类中新建对应的实体类,并需要设置相应的字段取出对应的数据。Field 方法实际上的做法是创建一个字典,给字典添加一个建,暂时不赋值,期待提取数据后再赋值。
表3-2 数据收罗核心代码

class xiecheng_SeleniumMiddleware:

    def __init__(self):

        self.driver = creat_browser()

        self.winflag = 0

   # 释放资源

    def closemidd(self,request):

        if request.meta.get('closeid')==request.meta.get('id'):

            self.driver.quit()

    def process_request(self, request, spider):

        if request.meta.get('use_selenium'):

            self.driver.get(request.url)

        # 在这里使用Selenium进行页面交互,如点击按钮、填写表单等

            # 并期待页面加载完成

            # 获取页面内容

            # page_source = self.driver.page_source

            # 转换为字节格式,以制止一些编码错误

            # self.driver.implicitly_wait(5)  # 设置隐式期待时间为5秒

            try:

                # 显示期待确保能找到元素,显示期待3s

                # raise IgnoreRequest("强制取消")

                elements = WebDriverWait(self.driver, 3).until(

                    lambda x: x.find_elements(by=By.CSS_SELECTOR, value='.guide-main-item-bottom .title'))

                Similarity_score = []

                for element in elements:

                    title = element.text

                    oldtitle = request.url.split('=')[1]

                    # url 转码中文

                    oldtitle = urllib.parse.unquote(oldtitle)

                    Similarity_score.append(get_similarity(oldtitle, title))

                    # if Similarity_score[-1][4] >=50:

                    #     print(Similarity_score[-1])

                max_score = None

                max_index = None

                if Similarity_score!=[]:

                    for index, score in enumerate(Similarity_score):

                        if max_score == None or max_score[-1] < score[-1]:

                            max_score = score

                            max_index = index

                # 找到最匹配的选项

                # print('max', max_score)

                # print(max_index)

                # 若成功找到最匹配项,且各种匹配方式得分都大于50.点击该景点获取url

                if max_score != None and max_score[2] >= 50 and max_score[3] >= 50 and max_score[4] >= 50:

                    print('max', max_score)

                    elements[max_index].click()

                    print("click yes")

                    # self.winflag+=1

                    # thiswim=self.winflag

                    li = self.driver.window_handles  # 出现多个窗口,需要切换句柄,先获取句柄列表

                    if len(li)>=2:

                        self.driver.switch_to.window(li[-1])  # 切换句柄

                        # 显示期待热度数据,期待详情页显示完毕

                        hot = WebDriverWait(self.driver, 3).until(

                            lambda x: x.find_elements(by=By.CSS_SELECTOR, value='.heatView .heatScoreView .heatScoreText'))

                        # 将详情页信息发送到spider

                        body = to_bytes(self.driver.page_source, encoding='utf-8')

                        print('传入爬虫url')

                        print(self.driver.current_url)

                        # 修改中间件判断参数

                        request.meta['use_selenium'] = False

                        response = HtmlResponse(url=self.driver.current_url, body=body, encoding='utf-8',

                                                request=request)

                        # 关闭窗口句柄减一

                        self.driver.close()

                        # 切换至搜索页面窗口

                        if len(li) >= 1:

                            self.driver.switch_to.window(li[0])

                        # self.winflag-=1

                        self.closemidd(request)

                        return response

                else:

                    self.closemidd(request)

                    raise IgnoreRequest("未找到相似度合格的元素")

            except Exception as e:

                raise IgnoreRequest("中间件报错,或可能是显示期待的元素期待超时或是元素不存在。")

                spider.logger.error(f"Error: 中间件报错,{e}")

                # return None

        else:

            print('未进入携程的中间件,被转移')

            # 不使用 Selenium,直接返回 None,让 Scrapy 使用默认的下载器处理这个请求

            # pass

           return None


(4)开辟爬虫程序,访问下载网页,使用Xpath语法提取内容。

图3-3爬虫最终数据


4 数据存储


数据存储和管理是体系的另一个核心部分,需要根据需求来计划数据存储和管理方案。具体步骤如下:
1、确定命据存储方式:根据需求来确定命据存储方式,可以使用关系型数据库(如MySQL)或文档数据库(如MongoDB)来存储数据。
2、计划数据索引方式:根据数据查询需求来计划数据索引方式,可以使用数据库索引或全文索引等方式来进行数据检索。
3、数据备份和恢复:定期对数据进行备份,确保数据的可靠性和安全性。
4.1 数据库计划

数据库计划是体系计划中特别重要的一部分。数据库的好坏决定着整个体系的好坏,并且,在之后对数据库的体系维护、更新等功能中,数据库的计划对整个程序有着很大的影响。
根据功能模块的划分结果可知,本体系的用户由于使用账号和暗码进行登录,因此在本体系中需要分别进行数据记录。起首根据如下几个数据实体:用户、旅游景点等数据库表。
旅游景点的属性包括景点编号、景点名、景点范例和所在地区、单价。景点实体属性图如图4-1所示:

图4-1  用户实体图

景点实体图如图4-2所示:


图4-2  景点实体图

城市实体图如图4-3所示:

图4-3  城市实体图

点赞信息实体图如图4-4所示:


图4-4  点赞信息实体图


根据以上分析,各个实体之间有肯定的关系,使实体与实体可以联系起来,创建成整个体系的逻辑结构,本体系中,普通用户通过对旅游信息的管理,使旅游信息与用户实体存在对应关系。
数据库表总共包罗五个,具体信息如下:
(1) 用户信息表可以或许存储体系中的用户信息,用户信息表如表4-2所示。
表4-2  用户信息表
列名
数据范例
长度
主外键
注释
id
int
11

编号
username
varchar
45

名称
email
varchar
45

邮箱
password
varchar
45

暗码
phone
varchar
45

电话
address
varchar
45

地点
(2)景点数据表 可以或许存储景点数据 如表4-2所示
表4-3  城市数据表

列名
数据范例
长度
主外键
注释
id
int
11

景点ID
Name
varchar
1

景点名称
Type
varchar
11

范例
tag
varchar
45

标签
area
varchar
45

地区
Describe
varchar
300

描述信息
(3)城市数据表存储城市信息 如表4-4所示。

表4-4  城市数据表

列名
数据范例
长度
主外键
注释
id
int
11

城市ID
name
varchar
50

城市名称
Tag
varchar
50

标签
Describe
varchar
200

描述
hot
char
20

城市热度
times
int
11

点击次数
(4)点赞数据表如表4-5所示
表4-5  点赞数据表

列名

数据范例

长度

主外键

注释

URL

varchar

50


URL

Start-lew

varchar

50


星级

Score

int

11


评分

Content

varchar

200


内容

Viewp-id

varchar

50


景点ID

User-id

varchar

50


用户ID


4.2 数据模型查询计划



表4-6数据库模型类

class Case_item(models.Model):

    shiqu = models.CharField(verbose_name='城市',max_length=124)

    title = models.CharField(verbose_name='景点',max_length=124)

    details = models.CharField(verbose_name='详情页链接',max_length=424)

    pingfen = models.FloatField(verbose_name='评分')

    city = models.CharField(verbose_name='详细地点',max_length=424)

    heatdegree = models.FloatField(verbose_name='热度')

    img = models.CharField(verbose_name='图片链接',max_length=424)

    content = models.TextField(verbose_name='简介')

    openinghours = models.CharField(verbose_name='开放时间',max_length=424)

    count = models.FloatField(verbose_name='评论数量')

    def __str__(self):

        return self.title

    class Meta:

        verbose_name = u"数据表"

        verbose_name_plural = verbose_name


class PingLun(models.Model):

    case_item_id = models.ForeignKey(Case_item,on_delete=models.CASCADE)

    text = models.TextField(verbose_name='评论内容')

    class Meta:

        verbose_name = u"评论表"

        verbose_name_plural = verbose_name

class DianZhan(models.Model):

    case_item_id = models.ForeignKey(Case_item,on_delete=models.CASCADE)

    user_id = models.ForeignKey(Users,on_delete=models.CASCADE)

    class Meta:

        verbose_name = u"点赞表"

        verbose_name_plural = verbose_name

class JingDian(models.Model):

    name = models.CharField(verbose_name='景区名称', max_length=124)

    auth = models.CharField(verbose_name='评论者', max_length=124)

    pingfen = models.CharField(verbose_name='评分', max_length=124)

    text = models.TextField(verbose_name='评价文字')

    shijian = models.CharField(verbose_name='时间', max_length=124)

    laiyuan = models.CharField(verbose_name='数据来源', max_length=124)

    class Meta:

        verbose_name = u"景点表"

        verbose_name_plural = verbose_name

class SC_food(models.Model):

    景区id = models.CharField(verbose_name='景区id', max_length=524)

    景区名称 = models.CharField(verbose_name='景区名称', max_length=524)

    地区 = models.CharField(verbose_name='地区', max_length=524)

    评分 = models.CharField(verbose_name='评分', max_length=524)

    范例 = models.CharField(verbose_name='范例', max_length=524)

    景区url = models.CharField(verbose_name='景区url', max_length=524)

    景区imgUrl = models.CharField(verbose_name='景区imgUrl', max_length=524)

    评论条数 = models.CharField(verbose_name='评论条数', max_length=524)

    数据来源 = models.CharField(verbose_name='数据来源', max_length=524)



5 数据分析与预测


数据分析和可视化是体系的另一个重要功能,需要根据需求来计划数据分析和可视化方案。具体步骤如下:
1、确定命据分析方式:根据需求来确定命据分析方式,可以使用Python中的数据分析库(如Pandas、NumPy、SciPy等)进行数据分析。
2、计划数据可视化方式:根据数据分析结果来计划数据可视化方式,可以使用Python中的可视化库(如Matplotlib、Seaborn等)来进行数据可视化。
3、实现数据分析和可视化功能:根据需求来实现各种分析和可视化功能,如数据统计、数据发掘、数据可视化等。
5.1 部署HDFS

(1)在master服务器上确定存在hadoop安装目录
[root@master ~]# ls  /usr/cstor/hadoop
(2)设置JDK安装目录
编辑文件“/usr/cstor/hadoop/etc/hadoop/hadoop-env.sh”,找到如下一行:
export JAVA_HOME=${JAVA_HOME}
将这行内容修改为:
export JAVA_HOME=/usr/local/jdk1.7.0_79/
(3) 指定HDFS主节点
编辑文件“/usr/cstor/hadoop/etc/hadoop/core-site.xml”,将如下内容嵌入此文件里最后两行的<configuration></configuration>标签之间:
<property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/cstor/hadoop/cloud</value>
</property>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://master:8020</value>
</property>
(4) 在master服务器上格式化主节点:
[root@master ~]# hdfs  namenode  -format
统一启动HDFS:
[root@master ~]#cd /usr/cstor/hadoop
[root@master hadoop]# sbin/start-dfs.sh
(5) 通过查看进程的方式验证HDFS启动成功
[root@master sbin]#  jps #jps查看java进程
若启动成功,会看到类似的如下信息:
6208 NameNode
6862 Jps
6462 SecondaryNameNode

图5-1  Hadoop启动成功结果图

5.2 部署Spark集群

(1) 在master上利用:确定存在spark。
[root@master ~]# ls /usr/cstor
spark/
[root@master ~]#
在master机上利用:进入/usr/cstor目录中。
[root@master ~]# cd /usr/cstor
[root@master cstor]#
进入配置文件目录/usr/cstor/spark/conf, 先拷贝并修改slave.templae为slave。
[root@master ~]# cd /usr/cstor/spark/conf
[root@master cstor]# cp  slaves.template slaves
(2) 在spark-conf.sh中加入JAVA_HOME。
[root@master cstor]# vim /usr/cstor/spark/sbin/spark-config.sh
加入以下内容
export JAVA_HOME=/usr/local/jdk1.7.0_79
(3) 启动Spark集群。
[root@master local]# /usr/cstor/spark/sbin/start-all.sh


图5-2  Spark启动成功结果图


5.3 景点推荐与数据分析

5.3.1景点推荐
使用了TF-IDF向量化景点描述,并通过计算余弦相似度来推荐与用户偏好相关的景点。在实际应用中,需要思量更多因素,如用户行为数据、地理位置、季候等,以构建更加正确和个性化的推荐系。旅游大数据平台的代码如下表5-1所示:

图5-1 旅游景点推荐代码

import pandas as pdfrom sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.metrics.pairwise import linear_kernel
# 假设有一个包罗景点信息的数据集,包括景点名称和描述
data = {
    '景点名称': ['景点A', '景点B', '景点C'],
    '描述': ['景点A的描述', '景点B的描述', '景点C的描述']
}
df = pd.DataFrame(data)
# 用户的偏好关键词,可以通过用户行为或问卷调查获取
user_preference = "山水风光"
# 使用TF-IDF向量化景点描述
tfidf = TfidfVectorizer(stop_words='chinese')
tfidf_matrix = tfidf.fit_transform(df['描述'])
# 计算景点之间的相似度
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
# 根据用户偏好计算推荐def recommend_places(user_preference, df, cosine_sim):
    idx = df.index[df['景点名称'] == user_preference][0]
    sim_scores = list(enumerate(cosine_sim[idx]))
    sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
    sim_scores = sim_scores[1:4]  # 推荐3个最相关的景点
    place_indices = [i[0] for i in sim_scores]
    return df['景点名称'].iloc[place_indices]

recommendations = recommend_places(user_preference, df, cosine_sim)print("推荐的景点:")for place in recommendations:
    print(place)

5.3.2景点数据分析
用户登录时需要在登录界面输入用户名、暗码进行身份认证,要求必须是表单认证、校验。其配置文件中配置了相应的Realm 类,当用户登录体系进行身份认证和权限控制时,比较用户输入的账号是否存在或者输入的暗码与数据源中的暗码是否匹配。旅游大数据平台的用户登录界面如下图所4-3所示:

图5-2 旅游景点数据分析代码

import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns

# 读取旅游景点数据集

df = pd.read_csv('tourist_spots_data.csv')

# 查看数据集的根本信息print(df.info())

# 数据洗濯:处理缺失值和非常值

df.dropna(subset=['评分'], inplace=True)

df = df[df['评分'] >= 0]  # 假设评分应该大于即是0

# 探索性数据分析# 统计评分分布

plt.figure(figsize=(10, 6))

sns.histplot(df['评分'], bins=10, kde=True)

plt.title('评分分布')

plt.xlabel('评分')

plt.ylabel('频数')

plt.show()

# 按地区统计景点数量

spots_by_region = df['地区'].value_counts()print(spots_by_region)

# 计算平均评分最高的前5个景点

top_rated_spots = df.groupby('景点名称')['评分'].mean().sort_values(ascending=False).head(5)print(top_rated_spots)

# 可视化不同地区景点数量

plt.figure(figsize=(12, 6))

sns.barplot(x=spots_by_region.index, y=spots_by_region.values)

plt.title('不同地区景点数量')

plt.xlabel('地区')

plt.ylabel('景点数量')

plt.xticks(rotation=45)

plt.show()




5.4 体系功能模块实现

5.4.1登录认证
主要由两部分构成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和暗码,当用户名和暗码此中一个输入为空时,给出提示“用户名,暗码不能为空”。获取用户名和暗码后到数据库中查找,假如用户名存在,以及对应的暗码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。


图5-3用户登录流程图

旅游大数据平台的用户登录界面如下图所5-4所示:


图5-4用户登录界面

登岸成功后,体系会成功跳转至首页,在首页中,位于上方的横栏是对本体系的根本信息的描述和欢迎登录结果,另外登录用户的用户名也会显示在首页中,可直接表明用户己成功登录。左侧则是本体系的导航菜单,可折叠展示,较为方便,右方则为欢迎页结果。提交景点信息列表后配景会主动天生景点信息列表列表。旅游大数据平台的景点界面如下图所5-5所示,有景点分析,景点推荐等功能:

图5-5旅游景点首页界面


5.4.2旅游信息推荐功能
旅游推荐管理功能是对旅游信息进行查询,删除等利用的功能集合,旅游信
息管理功能使用到了旅游信息表t_ lvyou ,旅游信息表t_lvyou 的主要数据字段,结构,范例及描述如下表4-2所示。我们使用了ALS(交替最小二乘法)推荐算法,起首加载旅游景点数据,然后使用StringIndexer对用户ID进行编码,以便在模型中使用。接着,我们将数据集划分为训练集和测试集,并使用ALS模型进行训练。训练完成后,我们对测试集进行预测,并使用RMSE评估模型的性能。最后,我们查看了为全部用户天生的前10个推荐景点。

图4-7 旅游景点个性化推荐界面


5.4.3旅游信息分析功能
数据可视化模块就是对我们收罗和计算的分析结果的展示。数据分析模块的
数据进行一个精美而又直接的展示,我们采用大屏的方式进行展示,展示数据结
构分明,配景具有科技感,把相对复杂的、抽象的数据通过可视的、交互的方式
进行展示,从而形象直观地表达数据蕴含的信息和规律。旅游信息大数据看板界面如图4-7所示。

图4-8旅游景点大数据分析界面

旅游信息大数据分析可视化开辟的难点并不在于图表范例的多样化,而在于如何能在简朴的一页之内让用户读懂旅游数据之间的层次与关联,这就关系到布局、色彩、图表、动效的综合运用。如排版布局应服务于业务,制止为展示而展示;配色一样平常以深色调为主,注重整体配景和单个视觉元素配景的一致性。本文使用Echarts中地图、线条等组件,将分析结果较为直观的展示给平台用户,使得用户可以或许简便的获取有效的信息。

5.5 本章小结

本章主要分析了基于大数据的旅游信息分析体系开辟过程中使用到的技术和具体的实现步骤,这此中主要介绍了基于Flask框架的旅游大数据平台的搭建环境和开辟步骤,包括程序中的一些数据库配置等。前端页面采用的是Echarts和HTML实现。

第6章 体系的测试

6.1登录功能

6.1.1功能概要
该功能是用于用户登岸基于Spark的旅游大数据平台,当用户输入用户名和暗码之后,颠末数据校验,成功则进入主页面。
6.1.2详细描述
该配景登录功能,通过向配景登录接口发送请求,如图6.1是配景登录界面。登岸成功,则提示登岸成功,并跳转到快手物流运输路线主页界面,如图6.2所示。

图 6-1 登录页面截图

登岸成功则直接进入体系首页,如图6-2所示。

图6-2  首页界面

6.2景点数据查询功能

6.2.1功能概要
基于Spark的旅游大数据平台的可视化查询功能是指用户可以通过图形化界面进行数据查询和筛选,获取符合特定条件的物流运输路线评论数据,并以可视化方式展示结果。下面是一个关于可视化查询功能的简要描述:
界面计划: 可视化查询功能应该具有效户友好的交互式界面,包括输入框、下拉框、复选框等控件,可以方便用户进行数据查询和筛选。同时,界面还应该有肯定的美观性和易用性,以提高用户的使用体验。
查询条件: 可视化查询功能应该提供多种查询条件,如时间范围、评论内容、商品范例、情感极性、评分等,使用户可以根据自己的需求进行筛选。查询条件还可以根据实际情况进行扩展和调整。
数据展示: 查询结果应以可视化方式呈现,如柱状图、折线图、饼图等,可以直观地展示数据的分布和趋势。同时,也可以提供表格或列表形式的展示方式,以方便用户查看更详细的数据信息。
交互式利用: 可视化查询功能还应该支持用户的交互式利用。比方,用户可以通过鼠标单击或拖动、缩放等方式对图表进行利用,以获得更精确的数据信息。同时,也可以提供导出数据、分享链接等功能,便于用户进行数据分析和共享。

6.2.2详细描述

图 6.3数据查询界面


6.3本章小结

本章主要分析了基于Spark的旅游大数据平台的测试过程,包括体系架构各模块测试,用户登录测试,数据分析等功能测试等。

7 总结与预测

7.1 体系开辟遇到的问题 

由于基于大数据旅游信息分析平台是由本人独立开辟,因此在体系计划和业务逻辑方面更多地鉴戒了现在市场上较为盛行的框架和技术点,包括大数据技术,很多是不认识没打仗过的,在开辟过程中不停学习新知识。另外由于本人的时间和精力的原因,在体系开辟过程中有很多地方可能并不可以或许完全尽如人意,另有许多需要增补的功能与模块。
7.2 总结与预测 

大数据旅游信息体系是在对相关管理范畴进行详细调研后,确定了体系涉及的领域,包括数据库计划、界面计划等,是一个具有实际应用意义的管理体系。根据本毕业计划要求,颠末四个多月的计划与开辟,大数据旅游信息体系根本开辟完毕。其功能根本符合用户的需求。
    为包管有足够的技术本领去开辟本体系,起首本人对开辟过程中所用到的工
具和技术进行了认真地学习和研究,详细地研讨了基于Python的网络爬虫技术
以及Echarts, CSS, HTML等前端开辟技术,同时还研究了大数据开辟技术本地机器, HDFS, 词云等。
从旅游数据大数据分析平台需求分析开始,到整体框架的计划以及各个详细功能的计划具体实现,最后基于大数据平台的旅游信息分析体系的基础架构和详细功能已经大抵开辟完毕,并将其部署在本地服务器当中运行,用户可以登录使用该体系进行旅游信息的筛选,同时查询大数据的分析结果。


参考文献


[1] 王家明,李湘.基于大数据分析的新疆聪明旅游网站的计划与实现[J].电脑知识与技术:学术版, 2021.

[2] 刘燕.基于大数据技术的智能旅游数据间的相关性分析及应用研究[J].林业调查规划, 2022(003):047.

[3] 吴开军,温锦婷,杨州,等.基于大数据文天职析的境外游客对粤港澳大湾区旅游形象感知研究[J].深圳社会科学, 2022, 5(1):11.

[4] 杨佳鹏,俎毓伟,纪佳琪,等.基于Spark框架的瀑布型融合旅游大数据平台[J].智能计算机与应用, 2023, 13(4):142-146.

[5] 闵冬梅,许正松,韩宸辰,等.基于大数据的亳州市国内旅游客源市场时空结构研究[J].  2021.DOI:10.3969/j.issn.1674-0874.2021.04.014.

[6] 张志雄.大数据助推"聪明"旅游发展研究[J].  2021(2019-7):34-40.

[7] 蔡绍博潘坛鲍玲玲蔡同建.基于大数据的文化旅游分析管理体系研究[J].科技创新与应用, 2022, 12(34):91-94.

[8] 翟娟,杜雨.基于大数据分析的聪明旅游模型体系[J].电子技术(上海), 2021(007):000.

[9] 吴开军温锦婷杨州郭莹莹.基于大数据文天职析的境外游客对粤港澳大湾区旅游形象感知研究[J].深圳社会科学, 2022, 5(1):14-24.

[10] 李伟.基于大数据发掘技术的聪明旅游大数据平台的计划研究[J].现代计算机, 2021, 27(32):4.

[11]  Yang J , Zheng B , Chen Z .Optimization of Tourism Information Analysis System Based on Big Data Algorithm[J].Complexity, 2020, 2020.DOI:10.1155/2020/8841419.

[12]  Hao Y , Song N .Key Technologies and Discrete Dynamic Modeling Analysis of Online Travel Planning System Based on Big Data Scenario Aware Service[J].Discrete dynamics in nature and society, 2021(Pt.12):2021.

[13]  Jeong C S , Ryu K , Lee J Y ,et al.Deep Learning-based Tourism Recommendation System using Social Network Analysis[J].The Institute of Internet, Broadcasting and Communication, 2020.DOI:10.7236/IJIBC.2020.12.2.113.

谢  辞


韶光飞逝,四年的本科生生活即将结束。在这四年的韶光里,有遇到困难时的手足无措,有获得专业进步时的开心。履历了许多的事情,自己也在不知不觉中成长了很多,心中充盈最多的仍是感激。
起首感谢我的导师,她严谨的治学态度深深地影响每位同学。我要感谢我的父母,他们总是默默的付出,在生活上给与我最大的帮助,在学习上也给我很多发起。
最后,由衷的感谢各位评审老师在百忙之中抽出时间来到场我的论文评审和答辨。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表