基于回归分析的景区旅游监测系统的设计与实现

基于回归分析的景区旅游监测系统的设计与实现

摘要:随着旅游业的迅速发展,景区成为吸引大量游客的热门目的地。然而,随之而来的客流量增加和管理压力也带来了一系列挑战。为了更有效地运营景区、提升服务质量,并保障游客安全,构建一套先进的景区旅游监测系统变得至关重要。

本研究旨在创建一基于回归分析的景区旅游监测系统,以解决景区客流量管理和旅游营销挑战。系统实现流量监控和分析,监测景区客流量并合理调度,避免客流量激增导致意外事件。同时,系统可进行客流量及趋势预测,通过算法按月/天统计游客量并分析变化趋势,协助景区规划和决策。此外,系统还提供多维度的游客特征洞察,包括客流量分析、出行方式识别、客源地分析、属性分析等,为景区提供准确的营销策略。通过这项研究,可以为景区管理提供高效、准确的工具,推动景区可持续发展、提升旅游体验,并为整个旅游行业的进步做出贡献。

本论文的主要研究工作及取得的成果如下:

使用Django等软件开发技术,设计并成功开发出了一套基于回归分析的景区旅游监测系统,本后台系统的旅游信息数据源于旅游网站上爬取的旅游信息。

使用基于Python语言的网络爬虫,爬取了旅游网站上的旅游信息。对爬取到的原始数据进行数据清洗后存储到本地机器上,然后使用Python对数据计算,最后将结果保存至MySQL中存储分析。

关键词:大数据;Python; 回归分析;旅游信息

Design and implementation of tourist monitoring system based on regression analysis

Abstract: With the rapid development of tourism, scenic spots have become popular destinations attracting a large number of tourists. However, the attendant increase in ridership and management pressure also brings its own set of challenges. In order to operate the scenic spot more effectively, improve the service quality, and ensure the safety of tourists, it is very important to build an advanced scenic spot tourism monitoring system.

The purpose of this study is to create a tourism monitoring system based on regression analysis to solve the challenges of tourist flow management and tourism marketing in scenic spots. The system realizes traffic monitoring and analysis, monitors the tourist flow of scenic spots and makes reasonable scheduling to avoid unexpected incidents caused by the surge in passenger flow. At the same time, the system can forecast the passenger flow and trend, and calculate the tourist volume by month/day and analyze the change trend through the algorithm to assist the planning and decision-making of the scenic spot. In addition, the system also provides multidimensional insight into tourist characteristics, including passenger flow analysis, travel mode identification, tourist source analysis, attribute analysis, etc., to provide accurate marketing strategies for scenic spots. Through this research, we can provide efficient and accurate tools for scenic spot management, promote the sustainable development of scenic spots, enhance the tourism experience, and contribute to the progress of the entire tourism industry.

The main research work and achievements of this paper are as follows:

Using Django and other software development technology, a set of scenic spot tourism monitoring system based on regression analysis is designed and successfully developed. The tourism information data of this backstage system is derived from the tourism information crawled from the tourism website.

The web crawler based on Python language was used to crawl the tourism information on the tourism website. After data cleaning, the original data extracted is stored on the local machine, and then Python is used to calculate the data, and finally the results are saved to MySQL for storage and analysis.

Key words: Big data; Python; Regression analysis; Tourist information

1 绪论

1.1研究背景与现状

景区旅游监测系统的开发对于提升景区管理和运营效率至关重要。流量监控和分析功能使景区管理者能够准确了解客流量情况,及时调整以防止拥堵和安全问题。客流量及趋势预测功能帮助规划资源和服务,提高景区接待能力和游客满意度。同时为旅游业提供精准数据支持。通过多维度洞察游客特征、统计游客量和分析来源地、消费类型,可帮助机构理解游客需求,制定针对性产品和营销策略,提高竞争力和市场份额,推动旅游经济发展。本系统的研究对景区管理、旅游业发展和社会公众提供实用工具和信息,推动旅游产业可持续发展和优化。

总而言之,从上述问题可以看出目前互联网旅游信息平台信息缺乏整合,用户在冗杂的旅游信息中难以筛选出有效的信息。本论文拟初步研究开发出一套完整的基于大数据平台的旅游平台信息分析系统,本系统主要用于对旅游信息和公司信息进行采集,通过大数据平台对数据进行存储和计算,将大数据分析结果以可视化形式给用户查询。这样,用户在使用本平台时只需一次注册操作,即可浏览各平台发布的旅游信息,并且可以根据用户的条件进行筛选,可极大的提高游玩的效率,给景点和游玩的者都带来一定的便利。

1.2国内外研究现状

景区旅游监测系统是指利用各种信息技术手段对景区内的游客流量、行为、环境等进行实时监测和管理的系统。国内外在景区旅游监测系统方面的研究现状可以总结如下:

国外研究现状:

国外景区监测系统通常利用各类传感器技术,如视频监控、红外传感器、无线传感器网络等,实时监测游客数量、活动轨迹以及环境指标。在数据处理方面,国外研究倾向于利用大数据分析和数据可视化技术,将监测得到的数据进行分析和挖掘,提取有用信息并通过可视化界面展示给管理者。一些先进的系统还结合了人工智能和机器学习技术,为管理者提供智能决策支持,例如预测高峰时段、推荐游览路线等。国外景区监测系统不仅关注游客流量和行为,还注重对景区环境的监测与保护,例如监测空气质量、水质状况等,并采取相应措施进行管理。

国内研究现状:国内景区监测系统的研究重点通常在于基础设施的建设和信息采集,如搭建监控摄像头、安装人流计等设备。国内研究也开始关注数据采集与处理技术,但相对于国外,国内在数据处理和分析方面的技术水平仍有待提高。

近年来,随着国内旅游业的快速发展,景区监测系统的应用场景也在不断拓展,例如在节假日旅游高峰期的应急管理、景区资源调度等方面得到了更广泛的应用。国内一些地方政府也开始重视景区监测系统的建设,并出台相关政策支持和资金投入。

综合来看,国外景区监测系统在技术应用和智能化程度上相对领先,而国内则更注重基础设施建设和应用场景拓展。未来,随着技术的进步和应用需求的不断增长,国内外在景区旅游监测系统方面的研究与应用将会进一步发展和完善。

1.3论文主要研究工作

本系统首先需要提供给客户管理和使用的数据。本文使用基于Python语言的Scrapy框架的网络爬虫技术爬取用户使用率较高的旅游网站上实时的旅游信息以及公司信息作为数据来源,以此作为大数据分析的关键数据支撑。然后使用本地机器,生态圈中分布式运算模型词云框架对海量的旅游信息数据进行数据清洗,数据融合,计算,分析等流程,数据通过处理后持久化到MySQL数据库中存储。

流量监控和分析:通过分析各个景区的客流量,可以准确地了解每个景区的客流情况,包括客流量的高峰时段、客流量的分布状况等。

游客量及趋势预测:利用回归分析算法,按月或按天统计省/市/景区的游客量、流入量和流出量,并预测其变化趋势。通过这项功能,我们可以提前预测客流量的变化,为景区的资源配置和服务安排提供科学依据。

数据可视化:通过多维度的数据分析,显示不同地区的人流量排名。对游客量多的城市进行排名,对各个日期的人流量进行比较,可以直观的观察不同时期的人流量占比,最后对数据分析、清洗,筛选出热度排名靠前的景区,通过这项功能,我们可以更好地了解不同时间段不同地区的热度及人数,从而制定更加精准的旅游营销策略。

2 技术总述

2.1 基于Scrapy的网络爬虫技术

Scrapy是目前较为成熟的爬虫技术框架,一般采用Python语言开发程序,Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

在本设计中,由于需要使用到旅游网站的原始数据,因此需要开发相应的网

络爬虫程序完成对旅游原始数据的采集,图2-1为爬取旅游网站的旅游数据的原理流程图。

图2-1 旅游网站爬虫原理流程图

2.2 线性回归算法

在现实世界中,我们常与各种变量打交道,在解决实际问题过程中,我们常常会遇到多个变量同处于一个过程之中,它们之间互相联系、互相制约.常见的关系有两种:一类为“确定的关系”即变量间有确定性关系,其关系可用函数表达式表示.例如:路程s,时间t,与速度v之间有关系式:s=vt 在圆体给与半径r之间有关系式v= 另外还有一些变量.他们之间也有一定的关系,然而这种关系并不完全确定,不能用函数的形式来表达,在这种关系中至少有一个变量是随机的.例如:人的身高与体重有一定的关系,一般来讲身高高的人体重相对大一些.但是它们之间不能用一个确定的表达式表示出来.这次变量(或至少其中有一个是随机变量)之间的关系。我们称之为相关关系。又如环境因素与农作物的产量也有相关关系,因为在相同环境条件下 农作物的产量也有区别,这也就是说农作物的产量是一个随机变量。回归分析就是研究相关关系的一种数学方法,是寻找不完全确定的变量间的数学关系式并进行统计推断的一种方法.它能帮助我们从一个变量取得的值去估计另一个变量的值.在这种关系中最简单的是线性回归。

线性回归分析是对客观事物数量关系的分析,是一种重要的统计分析方法,被广泛的应用于社会经济现象变量之间的影响因素和关联的研究.由于客观事物的联系错综复杂经济现象的变化往往用一个变量无法描述, 故本篇论文在深入分析一元线性回归及数学模型的情况下,又详细地介绍了多元线性回归方程的参数估计和其显著性检验等.全面揭示了这种复杂的依存关系,准确测定现象之间的数量变动.以提高预测和控制的准确度

图2-3 一元线性回归结构

2.3 Django技术

Django是一个开放源代码Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。2019年12月2日,Django 3. 0发布 。

Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性 [2]  。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。其工作流程主要可划分为以下几步:

1.用manage .py runserver 启动Django服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls .py

2.当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。

3.然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)

4.最后该view函数负责返回一个HttpResponse对象

2.4 本章小结

本章主要分析了系统开发过程中使用到的技术点和框架,通过研究这些技术的原理后,在本设计中加以应用,包括旅游信息采集的爬虫技术,数据持久化存储技术,以及基于Django框架的系统后台技术,通过预研上述技术点并加以应用从而开发出基于回归分析的景区旅游监测系统。

3 基于回归分析的景区旅游监测系统实现

3.1系统功能

通过前面的功能分析可以将基于回归分析的景区旅游监测系统的研究与实现的功能主要包括用户登录旅游信息管理数据分析等内容。后台管理是针对已登录的用户看到满意的旅游数据分析而设计的。

3.2可行性研究

通过对系统研究目标及内容的分析审察后,提出可行性方案,并对其进行论述。主要从技术可行性出发,再进一步分析经济可行性和操作可行性等方面。

3.2.1 经济可行性

开发系统所涉及到的资料,一般是在图书馆查阅,或是在网上进行查找收集。所需要的一些应用软件也都是在网上可以免费下载的,因此,开发成本是几乎为零。但是开发出来的系统,还是具有高效率,低成本,较高质量的。所以,从经济可行性的角度,该系统符合标准。

3.2.2 技术可行性

技术可行性是考虑在现有的技术条件下,能否顺利完成开发任务。以及判断现有的软硬件配置是否能满足开发的需求。而本系统采用的是本地机器开发框架,并非十分困难,所以在技术上是绝对可行的。此外,计算机硬件配置是完全符合发展的需要。

3.2.3 运行可行性

当前计算机信息化的知识已经十分普及了,现在的操作人员也都是对系统环境有很强的适应性,各类操作人员大都是有过培训补充的,因此完全不影响组织结构,所以在运行上也是可行的。

3.2.4 时间可行性

从时间上看,在大四的最后一个学期,在实习工作与完成毕设两件大事相交叉的时间里,结合之前学习的相关知识,并开发系统,时间上是有点紧,但是也不是完全没可能实现,通过这段时间的努力功能基本实现。

3.3 系统实现流程

(1)明确目的

在设计旅游信息大数据分析平台初期需要了解如何获取旅游信息原始数据

是非常基础也是关键的一步。要了解大数据分析平台期望达到什么样的运营效

果,从而在标签体系构建时对数据深度、广度及时效性方面作出规划,确保底层

设计科学合理。

(2)数据采集

只有建立在客观真实的数据基础上,大数据计算分析的结果才有效。在采集

数据时,需要考虑多种维度,比如不同行业旅游数据、各行业门票水平数据、行

业就业情况数据、行业旅游景点等等,还可以通过行业调研、用户访谈、用户信

息填写及问卷、平台前台后台数据收集等方式获得。

(3)数据清洗

就对于各大旅游网站或者APP平台采集到的数据而言,可能存在非目标数据、

无效数据及虛假数据,因而需要过滤原始数据,去除一些无用的信息以及脏数据,

便于后续的处理。

(4)特征工程

特征工程能够将原始数据转化为特征,是--些转化与结构化的工作。在这个

步骤中,需要剔除数据中的异常值并将数据标准化。

(5)数据计算

在这一步我们将得到的数据存储到大数据分析平台,通过开发词云,

程序对原始数据进行计算,将不同维度的结果存储到Mysql中。

(6)数据展示

分析结果可以通过大数据后台展示到前端界面,对于普通用户而言,只需.

要登录到该后台系统,就可以获取到旅游数据分析后的计算结果,从而了解行业

的旅游情况,对于游玩的者而言可以极大地提高效率。

3.4 系统平台架构

在任何信息系统当中有价值的数据都是必不可少的重要部分,如何通过手上

的资源获取得到有价值的数据便是开发系统。首先需要考虑的问题根据系统的功

能设计数据获取和处理的流程以及其实现方法都已经基本上确定获取和处理流

程。

3.5 旅游数据爬虫设计

这个项目我们的主要目的是爬取旅游网站网的旅游数据信息,包括旅游

位、景点名称和景点描述和规模等具体详情信息,下面描述本文爬虫工程主要设

计步骤。

(1)创建项目

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

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

(2)修改setting文件

如图3-1所示为修改后的setting文件主要内容,本设计主要修改三项内容,

第一个是不遵循机器人协议,第二个是下载间隙,由于下面的程序要下载多个页

面,所以需要给一个间隙(不给也可以,只是很容易被侦测到),第三个是请求

头,添加一个User-Agent。

(3)确认要提取的数据,item 项

item定义你要提取的内容(定义数据结构),比如我提取的内容为旅游信息的所在城市和景点旅游详情,于是需要在items类中新建对应的实体类,并需要设置相应的字段取出对应的数据。Field 方法实际上的做法是创建一个字典,给字典添加一个建,暂时不赋值,等待提取数据后再赋值。

  1. 开发爬虫程序,访问下载网页,使用Xpath语法提取内容

表3-1 爬虫代码

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

3.6 数据库模型程序设计

数据库设计是系统设计中特别重要的一部分。数据库的好坏决定着整个系统的好坏,并且,在之后对数据库的系统维护、更新等功能中,数据库的设计对整个程序有着很大的影响。

根据功能模块的划分结果可知,本系统的用户由于使用账号和密码进行登录,因此在本系统中需要分别进行数据记录。首先根据如下个数据实体:用户、旅游景点等数据库表。

旅游景点的属性包括景点编号、景点名、景点类型所在地区单价景点实体属性图如图3-4所示:

图3-4 用户实体图

景点实体图如图3-5所示:

图3-5  景点实体图

根据以上分析,各个实体之间有一定的关系,使实体与实体可以联系起来,建立成整个系统的逻辑结构,本系统中,普通用户通过对旅游信息的管理,使旅游信息与用户实体存在对应关系。

数据库表总共包含五个,具体信息如下:

(1) 用户信息表能够存储系统中的用户信息,用户信息表如表3-4所示。

表3-4  用户信息表

列名

数据类型

长度

主外键

注释

id

int

11

编号

username

varchar

45

名称

email

varchar

45

邮箱

password

varchar

45

密码

phone

varchar

45

电话

address

varchar

45

地址

(2)景点数据表 能够存储景点数据 如表3-5所示

表3-5  景点数据表

列名

数据类型

长度

主外键

注释

id

int

11

景点ID

Name

varchar

1

景点名称

Type

varchar

11

类型

tag

varchar

45

标签

area

varchar

45

地区

Describe

varchar

300

描述信息

表3-2 数据库模型类

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)

如图3-6所示,是本文设计的基于线性回归网络的景点监测系统,该模型由两层卷积层,两层池化层和三层全连接层和一个输出层组成,其中卷积层的卷积核大小2×2,卷积核数为64个;全连接层共分为三层,第一层为1024个神经元,第二层为512个神经元,输出层为一个神经元,是关节角度的预测值。本文采用Adam优化器对网络进行优化,并设置学习速率为

3-6 分类预测模型网络结构图

损失函数为均方误差函数:

,其中y为景点的真实数值,output为线性回归学习后的预测值,图5-10是上述线性回归在训练100000次迭代内的损失图,由图可以看出在前60000次迭代的网络损失变化幅度较大,在100000次迭代后网络的损失接近在5°以内。

 

3-7 线性回归迭代损失图

4 后台系统实现

基于回归分析的景区旅游监测系统的基本业务功能是采用Django框架实现的, 前端 JS采用jQuery框架,页面样式采用HTML框架,页面展示使用css,js技术,权限管理,日志管理应用Log4j 框架实现,数据 存储采用关系型数据库Mysql。在本文的第四章将详细介绍后台系统的实现部分,包括详细阐述了系统功能模块的具体实现,并展示说明了部分模块的功能界面。

4.1 开发环境与配置

4.1.1 开发环境

本系统设计基于B/S架构,其中服务器包括应用服务器和数据库服务器。这种架构模式,使用户只需要在有网络的地方即可通过浏览器访问,而不需要再安装客户端软件,交互性更强。基于回归分析的景区旅游监测系统使用Pycharm集成开发工具。而系统运行配置时,选择应用本地来部署Web服务器来保障平台的正常运行。本系统的主要开发环境以及开发工具如表4-1所示。

表4-1 系统开发环境和工具

项目

系统环境及版本

硬件环境

Windows 64 位操作系统

开发语言

Python

Web服务器

本地

数据库

MySql

开发工具

Pycharm

项目架构

Django+Scrapy

4.2 系统功能模块实现

4.2.1登录认证

用户登录时需要在登录界面输入用户名、密码进行身份认证,要求必须是表单认证、校验。其配置文件中配置了相应的Realm 类,当用户登录系统进行身份认证和权限控制时,Shiro会在该类中从数据库获取到用户信息及其具有的权限信息,并 且比较用户输入的账号是否存在或者输入的密码与数据源中的密码是否匹配。在实际实现中, 程序中自定义了MyRealm 类继承Realm 类,并重写了doGetAuthenticationInfo( )认证方法和doGetAuthorizationInfo( )授权方法。具体流程如时序图如4-2所示。

图4-2登录认证流程图

基于回归分析的景区旅游监测系统的用户登录界面如下图所4-3所示:

图4-3用户登录界面

登陆成功后,系统会成功跳转至首页,在首页中,位于上方的横栏是对本系统的基本信息的描述和欢迎登录效果,另外登录用户的用户名也会显示在首页中,可直接表明用户己成功登录。左侧则是本系统的导航菜单,可折叠展示,较为方便,右方则为欢迎页效果。基于回归分析的景区旅游监测系统景点分析界面如下图所4-4所示,有景点分析、预测等功能:

图4-4旅游景点监测系统首页界面

4.2.2旅游信息管理功能

旅游信息管理功能是对旅游信息进行查询,删除等操作的功能集合,旅游信

息管理功能使用到了旅游信息表t_ jingdian,旅游信息表t_jingdian 的主要数据字段,结构,类型及描述如下表4-2所示。

表4-2 旅游信息表字段

字段名称

数据类型

是否允许为空

描述

id

int

不允许

自增主键,唯一ID

cityname

String

允许

城市名称

company

String

允许

景点名称

company_size

String

允许

景点规模

education

String

允许

星级

experience

String

允许

评分

industry

String

允许

所属区域

recruiter

String

允许

旅游者姓名

salary

String

允许

门票范围

基于回归分析的景区旅游监测系统的旅游信息管理功能界面如下图所4-5所示:

图4-5旅游信息数据管理界面

旅游信息数据管理

功能流程功能图如图3-6所示:

图4-6 旅游信息管理功能流程图

 通过“旅游信息管理”按钮,进入旅游信息管理界面,用户可以看到旅游信息列表,例如:景点名称、所在城市、数量、旅游要求、门票待遇、旅游时间的详细信息。通过此界面,用户可以对旅游信息进行删除管理操作。

图4-7景区旅游监测系统预测界面

4.2.3景区旅游监测系统分析界面功能

数据可视化模块就是对我们采集和计算的分析结果的展示。数据分析模块的

数据进行一个精美而又直接的展示,我们采用大屏的方式进行展示,展示数据结

构分明,背景具有科技感,把相对复杂的、抽象的数据通过可视的、交互的方式

进行展示,从而形象直观地表达数据蕴含的信息和规律。景区旅游监测系统分析界面如图4-7所示。

图4-8景区旅游监测系统分析界面1

图4-9景区旅游监测系统分析界面2

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

4.3 本章小结

本章主要分析了基于大数据的旅游信息分析系统开发过程中使用到的技术和具体的实现步骤,这其中主要介绍了基于Django框架的基于回归分析的景区旅游监测系统的搭建环境和开发步骤,包括程序中的一些数据库配置等。前端页面采用的是Echarts和JSP实现。

5 总结与展望

5.1 系统开发遇到的问题 

由于基于大数据旅游信息分析平台是由本人独立开发,因此在系统设计和业务逻辑方面更多地借鉴了目前市场上较为流行的框架和技术点,包括大数据技术,很多是不熟悉没接触过的,在开发过程中不断学习新知识。另外由于本人的时间和精力的原因,在系统开发过程中有很多地方可能并不能够完全尽如人意,还有许多需要补充的功能与模块。

5.2 总结与展望 

大数据旅游信息系统是在对相关管理范畴进行详细调研后,确定了系统涉及的领域,包括数据库设计、界面设计等,是一个具有实际应用意义的管理系统。根据本毕业设计要求,经过四个多月的设计与开发,大数据旅游信息系统基本开发完毕。其功能基本符合用户的需求。
    为保证有足够的技术能力去开发本系统,首先本人对开发过程中所用到的工

具和技术进行了认真地学习和研究,详细地钻研了基于Python的网络爬虫技术

以及Echarts, CSS, HTML等前端开发技术等。

从旅游数据大数据分析平台需求分析开始,到整体框架的设计以及各个详细功能的设计具体实现,最后基于大数据平台的旅游信息分析系统的基础架构和详细功能已经大致开发完毕,并将其部署在本栋服务器当中运行,用户可以登录使用该系统进行旅游信息的筛选,同时查询大数据的分析结果。


参考文献:

[1] 金俊栋,赵有益,史战红等. 基于BOPPPS模型的应用回归分析项目驱动式教学模型设计实践 [J]. 廊坊师范学院学报(自然科学版), 2023, 23 (04): 120-124.

[2] 梁航.回归分析模型在大坝监测中的应用分析[J].江西建材,2023,(04):54-55.

[3] 刘宣,马海强,盛志雁等. 高维空间相依数据的Expectile回归分析 [J/OL]. 中国科学:数学, 1-30[2024-01-09]

[4] 单雅辉,张宝印,张庆等. 基于依赖分析的回归测试工具设计与实现 [J]. 微型电脑应用, 2023, 39 (10): 216-220.

[5] 陈帝. 基于信息融合的电力营销数据回归分析方法研究 [J]. 电气技术与经济, 2023, (08): 242-245.

[6] 李存笔,闵瑞,舒兆亚等. 基于PCA-logistic回归分析的大直径曲线顶管中继间优化设计要素研究 [J]. 科技通报, 2023, 39 (09): 59-64+97.

[7] 钱则人.旅游客流监测系统技术解决方案[J].通讯世界,2017,(06):13-14.

[8] 谢铮. 基于线性回归分析的大直径盾构机刀盘扭矩预测模型研究 [J]. 今日制造与升级, 2023, (06): 15-16.

[9]Chi Dianwei,Tang Chunhua,Yin Chen. Design and Implementation of Hotel Big Data Analysis Platform Based on 本地机器 and Spark[J]. Journal of Physics: Conference Series,2021,2010(1):

[10]Costa Rogério Luís de C.,Moreira José,Pintor Paulo,dos Santos Veronica,Lifschitz Sérgio. A Survey on Data-driven Performance Tuning for Big Data Analytics Platforms[J]. Big Data Research,2021,25(prepublish):

谢  辞

时光飞逝,四年的本科生生涯即将结束。在这四年的时光里,有遇到难题时的手足无措,有获得专业进步时的开心。经历了许多的事情,自己也在不知不觉中成长了很多,心中充盈最多的仍是感激。

首先感谢我的导师,她严谨的治学态度深深地影响每位同学。我要感谢我的父母,他们总是默默的付出,在生活上给与我最大的帮助,在学习上也给我很多建议。

最后,由衷的感谢各位评审老师在百忙之中抽出时间来参与我的论文评审和答辨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值