摘 要
随着我国经济的快速发展,城市化进程不断加快,大批的农村人口进入城市,进而导致城市的人口越来越多,车辆也越来越多,使得城市道路本就存在的拥堵现象更加严重,因此城市交通管理成为了一个重要问题。
现在城市的交通问题主要表现在:城市道路拥挤状况严重、交通事故频繁发生等问题,此外,大量的车辆行驶造成的尾气排放对城市有巨大影响。因此,解决城市交通问题已经成为当前城市交通管理者面临的一项重大问题。
面对以上问题,交通流量预测系统显得尤为重要,它可以帮助交通管理者通过历史和实时的交通数据预测道路状况,从而调整交通流量,进而缓解交通堵塞和降低交通事故的风险,更好的为道路使用者减少出行时间和增加安全保障,交通流量预测系统是一种只能化的交通工具,使用历史的交通流量信息来预测未来的交通流量数据。
通过线性回归方法进行道路车流量情况的预测,先将数据进行特征变化处理,并将历史数据集与处理后的实时数据集合在一起,通过分析方法对预测模型的各个特征属性对预测结果的影响值计算,最终确定预测模型进行分析预测。通过Echarts+html+css将交通流量的数据用可视化大屏展现,进而更加清楚的展示交通流量数据的变化。
关键字: 交通数据分析;Flask;线性回归;数据可视化
Urban traffic flow analysis and prediction based on big data
Abstract
With the rapid development of our country's economy, the acceleration of urbanization process, a large number of rural population into the city, which has led to more and more population in the city, and more and more vehicles, making the existing congestion phenomenon on urban roads more serious, so urban traffic management has become an important problem.
At present, urban traffic problems are mainly manifested in: serious urban road congestion, frequent traffic accidents and other problems, in addition, a large number of vehicles caused by exhaust emissions have a huge impact on the city. Therefore, solving the urban traffic problem has become a major problem facing the current urban traffic managers.
In the face of the above problems, traffic flow prediction system is particularly important. It can help traffic managers predict road conditions through historical and real-time traffic data, so as to adjust traffic flow, alleviate traffic jams and reduce the risk of traffic accidents, and better reduce travel time and increase safety for road users. Traffic flow prediction system is a kind of traffic tool, which uses the historical traffic flow information to predict the future traffic flow data.
The linear regression method is used to predict the road traffic flow. First, the data are processed with the feature changes, and the historical data set is combined with the processed real-time data. The influence value of each feature attribute of the prediction model on the prediction results is calculated through the analysis method, and the prediction model is finally determined for analysis and prediction. Through Echarts+html+css, the traffic flow data is displayed on a large visual screen, and then the change of traffic flow data is displayed more clearly.
Key words: traffic data analysis; Flask; Linear regression; Data visualization
目 录
1 绪论
1.1 研究背景及意义
随着我国社会经济的发展,城市的人口越来越多,城市交通问题日益突出,急剧增加的交通需求超过了交通基础设施的承载能力,城市交通压力持续上升,交通拥堵已经成为影响城市发展的重要问题之一。然而造成交通拥堵的原因有很多种,比如:红绿灯时间设置不合理、城市道路规划不佳、人们节假日出行没有规划等多种因素。由于交通堵塞,早高峰时人们出行往往会提前一两个小时,因此,对于个人来说,一天中的大多的时间就会被浪费,避免交通拥堵就会减少时间浪费,将时间更好的利用。除此外,交通拥堵还会引发大量的交通事故,经常会因为大家忙于赶时间而忽略车辆行驶的间距,进而会出现大量追尾事件,这将会带来人员伤亡和财产损失。
为了更好地管理和规划城市交通,2016年杭州的大脑指挥中心,运用人工智能、云计算、大数据等技术改善城市交通问题,这些准确的客流量数据帮助了运营管理部门进行决策因而避免了很多问题。基于大数据的交通流量分析与预测成为了一种重要的交通数据,它可以帮助城市决策者更好地了解交通状况,优化交通网络,提高交通效率,通过交通特性的分析,能够进一步预测出交通流量、速度等多种交通参数。交通流量预测依托于大数据环境,利用人工智能、云计算等手段较为准确的预测出未来一段时间内某路段甚至整个城市的交通流量,更能提高出行者的出行率及安全性,实现交通资源的充分协同,有效降低交通拥堵程度。因此,交通流量分析与预测具有重要意义。
1.2 国内外研究现状
大数据在交通管理系统中的应用已经成为国内外研究的热点之一,以下是一些关于大数据交通管理系统国内外研究现状的概述:
国内研究现状:
交通数据采集与处理:国内学者通过GPS、传感器、卫星遥感等手段采集交通数据,并利用大数据技术进行处理和分析。交通流预测与优化:利用大数据分析交通流量数据,预测交通拥堵情况,实现交通优化调度。交通流量信号控制:运用大数据技术改进交通信号控制系统,提高交通效率和减少拥堵。出行行为分析:通过大数据分析乘客出行数据,研究出行模式、偏好,为交通规划和设计提供参考。
国外研究现状:
交通流量管理系统:发达国家如美国、欧洲等致力于建立交通流量管理系统,利用大数据实现交通流量监控和管理。交通模型与仿真:国外学者利用大数据构建交通仿真模型,评估不同交通政策对城市交通系统的影响。交通数据共享与开放:倡导交通数据的共享和开放,以促进不同单位间的数据交换和合作,推动交通管理水平的提升。交通流量决策支持系统:建立基于大数据的交通流量决策支持系统,为决策者提供科学依据和参考。
1.3 论文结构
本文分为六章,主要内容如下:
- 首先介绍目前城市交通出现的一些问题,通过研究背景、研究意义、国内外现状的分析,了解城市交通的背景和现状,搞清楚城市交通面临的问题和解决方法。
- 先将数据进行预处理,将跨度较大的数据、缺失的数据以及错误的数据进行处理,再将数据进行筛选,筛选出确定研究的事件间隔和经纬度范围。
- 通过神经网络,对数据进行特征和关系分析,将数据进行分类、回归预测处理。
- 在数据库中建立角色,为系统设置系统管理员、用户。
- 通过大屏可视化分析进一步将道路车流量、车流数据时间段等信息用可视化展现出。
6、结论与展望,对本文主要研究内容和结论进行总结陈述,并对下一步研究进行展望。
2 开发技术
2.1 线性回归技术
线性回归是一种用于建立和预测变量之间线性关系的统计学方法。它是一种最简单且常用的回归分析方法之一,通常用于预测一个因变量(或响应变量)与一个或多个自变量(或解释变量)之间的关系。
在线性回归中,我们假设因变量(Y)与自变量(X)之间存在线性关系,可以表示为:
Y = β0 + β1X1 + β2X2 + ... + βn*Xn + ε
其中:
Y 是因变量(要预测的变量);
X1, X2, ..., Xn 是自变量(影响因变量的变量);
β0 是截距项(模型的常数项);
β1, β2, ..., βn 是自变量的系数(即自变量的权重);
ε 是误差项,表示模型无法完全解释的部分。
线性回归的目标是找到最佳拟合直线(或超平面),使得预测值与实际观测值之间的误差最小。通常采用最小二乘法来估计模型的系数,最小化残差平方和来拟合数据。
在线性回归中,常用的评估指标包括:
R平方(R-squared):表示模型对数据方差的解释程度,取值范围在0到1之间,越接近1表示模型拟合得越好;
均方误差(Mean Squared Error,MSE):表示预测值与实际值之间的平方误差的均值,用于衡量模型的预测精度。
线性回归适用于以下情况:
因变量和自变量之间存在线性关系;
数据之间的误差项是独立且具有相同方差的;
自变量之间不存在(或很少)多重共线性。
总的来说,线性回归是一种简单而有效的建模技术,可用于预测和建立变量之间的线性关系。在实际应用中,线性回归通常被广泛用于预测股票价格、销售量、房价等连续型变量的问题。
2.2 Mysql
MySQL是目前IT行业最流行的开放源代码的数据库管理系统,同时它也是一个支持多线程高并发多用户的关系型数据库管理系统。MySQL之所以受到业界人士的青睐,主要是因为其具有以下几方面优点:
(1)开放源代码
MySQL最强大的优势之一在于它是一个开放源代码的数据库管理系统。开源的特点是给予了用户根据自己需要修改DBMS的自由。
(2) 跨平台
MySQL可以在不同的操作系统下运行,简单地说,MySQL可以支持Windows系统、UNIX系统、Linux系统等多种操作系统平台。
(3) 轻量级
MySQL的核心程序完全采用多线程编程,这些线程都是轻量级的进程,它在灵活地为用户提供服务的同时,又不会占用过多的系统资源。因此MySQL能够更快速、高效的处理数据。
(4) 成本低
MySQL分为社区版和企业版,社区版是完全免费的,而企业版是收费的。免费的社区版支持多种数据类型和正规的SQL查询语言,能够对数据进行各种查询、增加、删除、修改等操作,所以一般情况下社区版就可以满足开发需求了,而对数据库可靠性要求比较高的企业可以选择企业版。
总体来说,MySQL是一款开源的、免费的、轻量级的关系型数据库,其具有体积小、速度快、成本低、开放源码等优点,其发展前景是无可限量的。
MySQL的执行流程如图2-3所示:
图2-3 Mysql的执行流程
解析器:在解析器中对 SQL 语句进行语法分析、语义分析。
优化器:在优化器中会确定 SQL 语句的执行路径,比如是根据全表检索,还是根据索引来检索等。
执行器:在执行之前需要判断该用户是否具备权限,如果具备权限就执行SQL查询并返回结果。
在 MySQL8.0 以下的版本,如果设置了查询缓存,这时会将查询结果进行缓存。
2.3 Flask
Flask 是使用 Python 语言开发的一款免费而且开源的 Web 应用框架。由于 Python 语言的跨平台性,所以 Flask 同样支持 Windows、Linux 和 Mac 系统。
相对于 Python 的其他 Web 框架,Flask 的功能是最完整的,Flask 定义了服务发布、路由映射、模板编程、数据处理的一整套功能。这也意味着 Flask 模块之间紧密耦合。
Flask 的主要特点如下:
完善的文档:经过 10 余年的发展和完善,Flask 官方提供了完善的在线文档,为开发者解决问题提供支持。
集成 ORM 组件:Flask 的 Model 层自带数据库 ORM 组件,为操作不同类型的数据库提供了统一的方式。
URL 映射技术:Flask 使用正则表达式管理URL映射,因此给开发者带来了极高的灵活性。
后台管理系统:开发者只需通过简单的几行配置和代码就可以实现完整的后台数据管理Web控制台。
错误信息提示:在开发调试过程中如果出现运行异常,Flask 可以提供非常完整的错误信息帮助开发者定位问题。
3 需求分析
3.1 可行性分析
3.1.1 经济可行性
开发系统所涉及到的资料,一般是在图书馆查阅,或是在网上进行查找收集。所需要的一些应用软件也都是在网上可以免费下载的,因此,开发成本是几乎为零。但是开发出来的系统,还是具有高效率,低成本,较高质量的。所以,从经济可行性的角度,该系统符合标准。
3.1.2 技术可行性
技术可行性是考虑在现有的技术条件下,能否顺利完成开发任务。以及判断现有的软硬件配置是否能满足开发的需求。而本系统采用的是本地机器开发框架,并非十分困难,所以在技术上是绝对可行的。此外,计算机硬件配置是完全符合发展的需要。
3.1.3 运行可行性
当前计算机信息化的知识已经十分普及了,现在的操作人员也都是对系统环境有很强的适应性,各类操作人员大都是有过培训补充的,因此完全不影响组织结构,所以在运行上也是可行的。
3.1.4 时间可行性
从时间上看,在大四的最后一个学期,在实习工作与完成毕设两件大事相交叉的时间里,结合之前学习的相关知识,并开发系统,时间上是有点紧,但是也不是完全没可能实现,通过这段时间的努力功能基本实现。
3.2 功能需求分析
3.2.1 总体流程
交通网站数据采集及分析系统通过对主流的交通信息网站的数据进行抓取,通过定向分析之后,得到了有价值的数据并呈现到前端页面中,同时将具体的业务映射到系统功能中,构成一个完整的系统。本流程中主要分为三部分,数据采集和预处理、数据分析和数据可视化,三部分互相关联,其中,数据采集得到的有效数据大部分是需要通过数据分析过程的,小部分的数据能直接的使用到前端页面中。通过三部分的关联,就可以完整的展现出系统的基本结构。
3.2.2 数据采集
数据采集流程是系统中所有的数据信息的起始,通过这个流程来获取所有的数据信息,交付给数据分析部分最后呈现到页面上。因此,数据采集部分的功能非常重要,具体如图3-1所示。
图3-1 数据采集用例
从图3.2.2可以看出,数据采集的主要任务是抓取工作,包含了四个部分,分别为抓取入口管理、初始数据管理、抓取任务管理和抓取规则管理: 一、抓取入口管理是针对一些特定的网站,需要对抓取的入口网页进行分析,同时对入口方法进行总结,当入口发生变化的时候,需要及时的进行更换和调整,保证系统的抓取流程能一直畅通, 获取更大量的数据信息;二、初始数据管理,初始数据包含了数据提交和数据转换,这对应着不同的数据信息,数据提交的是可以直接进行数据呈现的信息,包括了一些不需要更换的,维护性不强的信息,如交通的介绍信息或者是城市的描述信息等,另外一部分就是需要通过数据分析模块进行分析得到的二次甚至是多次数据,这些数据就需要通过数据转换之后才能进行提交;三、抓取任务管理,当系统中有抓取任务的时候,就需要对任务进行管理,其中包含了任务启动、任务终止和任务变更,这些都是对应着系统的数据需求,当需要不同类型的数据信息的时候,系统中就会提来获取抓取任务,进行数据的抓取;四、抓取规则管理,针对特定的网站,其中所包含的数据字段都是特定的,但是也会随着不同的时间而发生变化,此时,需要根据变化的时间进行更换,对抓取规则进行更换,保证抓取的数据字段不会发生紊乱。
3.2.3 数据分析
大数据交通管理系统的数据分析流程通常涉及多个环节,包括数据采集、数据清洗、数据存储、数据处理和数据应用等。
数据采集:
从交通监测设备(如摄像头、传感器、GPS设备)获取交通数据。从第三方数据提供商(如地图服务、交通信息平台)获取实时或历史交通数据。
数据清洗:
对采集到的原始数据进行去重、去噪、异常值处理等清洗步骤,确保数据的准确性和完整性。对数据进行格式转换、标准化,以便后续的分析和处理。
数据存储:
将清洗后的数据存储到数据库或数据仓库中,以便后续的查询和分析。选择合适的数据存储技术,如关系型数据库、NoSQL数据库或数据湖等,根据实际需求进行存储架构设计。
数据处理与分析:
利用大数据处理技术(如Hadoop、Spark等)对海量交通数据进行处理和分析,包括数据聚合、统计分析、时空分析等。运用数据挖掘、机器学习技术,发现交通模式、预测交通拥堵、优化交通流等。
3.3 非功能需求分析
非功能性需求不是用户实际提出来的,而且纵观这个系统,为了使用户有良好的使用性和用户体验,并把它作为一个优秀的软件而继续使用的一种重要的因素,因此非功能需求的分析是不可或缺的。
- 系统响应
响应时间是用户最为关注的一个指标,当用户点击了所需要的功能后,系统反馈的显示信息如果不能在有效反映时间内出现就会导致用户对系统产生厌烦和抵触。因此,系统响应时间很重要,本系统指定的系统响应时间为5秒以内,保证系统的功能反应最慢不超过5秒钟。
- 功能可靠
主要是系统在整个运行周期里都需要与所有的客户端保持高效连接,并且在用户发出了功能需求的时候,系统在进行事务交互或者数据查找的时候不会出现死锁的情况,保证系统的所有功能都能正常的运行。
- 方便使用
让用户使用起来更加便捷和顺畅是设计系统的基础,因此,无论是在设计系统的功能,还是在进行功能的逻辑衔接的时候都需要考虑到系统的功能结构,不要让用户在使用过程中,违背正常的使用规则,让一个业务操作可以按照惯常的方式来完成,并可以适当的使用提示信息,方便用户的功能选择和使用,提高系统功能的实用性。
- 高效运维
系统在设计完成之后,需要对系统进行运维,维护功能都是依赖于系统的基础性设计,因此,结构设计上就需要考虑到后期调整时的方便。另外系统在进行升级的时候,不需要让用户端进行复杂的操作,简化用户操作,提高运维的高效性。
4 系统设计
4.1 总体设计
在任何信息系统当中有价值的数据都是必不可少的重要部分,如何通过手上
的资源获取得到有价值的数据便是开发系统。首先需要考虑的问题根据系统的功能设计数据获取和处理的流程以及其实现方法都已经基本上确定获取和处理流程。交通数据分析系统是将数据采集、数据分析和数据可视化融合为一体的分析系统,
可以看出,交通数据分析系统总共分为了几个模块,分别为注册登录模块、交通数据管理模块、交通数据分析模块、个人中心模块。从图4-2可以发现,流程中主要分为三部分,数据采集和预处理、数据分析和数据可视化,三部分互相关联,其中,数据采集得到的有效数据大部分是需要通过数据分析过程的,小部分的数据能直接的使用到前端页面中,例如具体的交通信息等,这些不需要进一步分析,直接传递给数据库提供给前端页面的使用;而另外一部分就需要使用到数据分析过程,通过数据分析之后的价值信息可以通过图表或者是文本形式展现给用户页面。通过三部分的关联,就可以完整的展现出系统的基本结构。
图4-2 系统架构图
4.2 数据采集
交通流量数据的来源主要包括以下几个方面:一是通过交通调查获取数据,如人工调查、交通流量系统等;二是通过公共数据平台获取数据,如公共交通公司、导航软件等;三是通过传感器、摄像头等设备获取数据。其中,交通流量系统是最常用的数据来源之一,它可以实现监测道路交通流量、车速等信息。在采集方法上,主要包括数据挖掘、统计分析等方法
4.3 数据分析
数据分析是针对数据采集模块中得到的数据信息进行定向分析的过程,这个功能主要包括了地图分析、交通交通分析、交通温度分析、交通季节占比和交通好评分析,地图分析根据对一个城市的所有用户向全国各地交通的人数做出分析,按照排序可以明确该城市人最喜欢去哪个城市交通;交通交通分析是对全年的交通进行汇总统计出每个月的交通数,并得出某月在某个景区的的交通旺季。 具体数据分析核心代码如下所示。
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
4.4 逻辑设计
数据库表总共包含五个,具体信息如下:
(1) 用户信息表能够存储系统中的用户信息,用户信息表如表4-2所示。
表4-2 用户信息表
列名 | 数据类型 | 长度 | 主外键 | 注释 |
id | int | 11 | 是 | 编号 |
username | varchar | 45 | 名称 | |
| 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.5 交通流量分析与预测
数据分析是针对数据采集模块中得到的数据信息进行定向分析的过程,预测模型代码如下所示。
表4-5 模型训练代码
# 数据归一化 def normalize_data(data, flow_scaler, avg_kph_scaler): data["Flow"] = flow_scaler.transform(data["Flow"].values.reshape(-1, 1)) data["Avg kph"] = avg_kph_scaler.transform(data["Avg kph"].values.reshape(-1, 1)) return data # 反向归一化 def denormalize_data(data, scaler): data = scaler.inverse_transform(data.reshape(-1, 1)).reshape(1, -1)[0] return data # 添加时间滞后值以构建模型输入特征 def input_features(data): lag = 48 # 1h->4;24h->96 控制时间步 # data = df.to_numpy() # print(int(len(data) * 0.8)) #4684 train, test = [], [] for i in range(lag, len(data)): if i < 14105: # 0.8->4703 train.append(data[i - lag: i + 1]) else: test.append(data[i - lag: i + 1]) train = np.array(train) test = np.array(test) # 设置模型的输入输出 x_train = train[:, :-1, [0, 1]] # select Flow and Avg kph as input features y_train = train[:, -1, [0]] # select Flow as output x_test = test[:, :-1, [0, 1]] # select Flow and Avg kph as input features y_test = test[:, -1, [0]] # select Flow as output return x_train, y_train, x_test, y_test # 构建模型 def build_LSTM(): model = Sequential() model.add(Input(shape=(x_train.shape[1], x_train.shape[2]))) model.add(LSTM(units=256, activation='relu', kernel_regularizer=l2(0.0001), return_sequences=True)) model.add(Dropout(0.1)) model.add(Dense(units=64, activation='relu')) model.add(Dropout(0.1)) model.add(LSTM(units=16)) model.add(Dense(1)) optimizer = Adam(learning_rate=0.0001) model.compile(loss="mse", optimizer=optimizer, metrics=['mape']) return model def build_GRU(): model = Sequential() model.add(Input(shape=(x_train.shape[1], x_train.shape[2]))) model.add(GRU(units=256, activation='relu', kernel_regularizer=l2(0.0001), return_sequences=True)) model.add(Dropout(0.1)) model.add(Dense(units=64, activation='relu')) model.add(Dropout(0.1)) model.add(GRU(units=16)) model.add(Dense(1)) optimizer = Adam(learning_rate=0.0001) model.compile(loss="mse", optimizer=optimizer, metrics=['mape']) return model def evaluate_models(y_true, y_pred): y_true = [x for x in y_true if x > 0] y_pred = [y_pred[i] for i in range(len(y_true)) if y_true[i] > 0] # calculate the Mean Absolute Percentage Error sums = 0 # initialize value for i in range(len(y_pred)): tmp = abs(y_true[i] - y_pred[i]) / y_true[i] sums += tmp mape = sums * (100 / len(y_pred)) # calculate variance score vs = metrics.explained_variance_score(y_true, y_pred) mae = metrics.mean_absolute_error(y_true, y_pred) mse = metrics.mean_squared_error(y_true, y_pred) r2 = metrics.r2_score(y_true, y_pred) print('explained_variance_score:%f' % vs) print('mape:%f%%' % mape) print('mae:%f' % mae) print('mse:%f' % mse) print('rmse:%f' % math.sqrt(mse)) print('r2:%f' % r2) |
表4-6 Flask代码
# 添加时间滞后值以构建模型输入特征 lag = 48 # 1h->4;24h->96 控制时间步 train, test = [], [] for i in range(lag, len(df)): if i < 14109: # 0.8->4703 train.append(df[i - lag: i + 1]) else: test.append(df[i - lag: i + 1]) test = np.array(test) # 设置模型的输入 x_test = test[:, :-1, [0, 1]] # select Flow and Avg kph as input features x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 2)) # 加载模型 print("Loading LSTM keras model...") model_lstm = load_model('../webapp/model/LSTM.h5') print("LSTM model successfully loaded") print("Loading GRU keras model...") model_gru = load_model('../webapp/model/GRU.h5') print("GRU model successfully loaded") # 调用模型 predicted_lstm = model_lstm.predict(x_test) predicted_gru = model_gru.predict(x_test) # 反向归一化模型预测数据 predicted_lstm = flow_scaler.inverse_transform(predicted_lstm.reshape(-1, 1)).reshape(1, -1)[0] predicted_gru = flow_scaler.inverse_transform(predicted_gru.reshape(-1, 1)).reshape(1, -1)[0] # 前端请求 if flask.request.method == 'GET': return flask.render_template('index.html') if flask.request.method == 'POST': # 接收文本框输入 date = flask.request.form['date'] time = flask.request.form['time'] col = date + " " + time # 读取对应日期的真实数据,由于前面读入df后进行了归一化,所以真实数据也需要反向归一化 x = df.loc[col] print(x) print(x["Flow"]) true = int(flow_scaler.inverse_transform(x["Flow"].reshape(-1, 1)).reshape(1, -1)[0]) # 数据读入处理后索引变成了时间,所以需要计算时间步来提取模型的预测数据 index_time = x.name pred_time = pd.Timestamp(index_time) # 2019-05-20 00:00 起始为0,计算预测时间点与起始时间点的时间步之差,间隔为15min time_point = datetime.strptime('2019-05-20 00:00', '%Y-%m-%d %H:%M') time_step = int((pred_time - time_point).total_seconds() / 60 / 5) # 时间步之差,单位为5分钟 pred_LSTM = predicted_lstm[time_step].astype(int) # 4705-0 pred_GRU = predicted_gru[time_step].astype(int) percentege = int((pred_LSTM / 1000) * 100) print("预测时间:" + str(pred_time)) print("预测车流:" + str(pred_LSTM)) return flask.render_template('index.html', true_val=true, pred_val_LSTM=pred_LSTM, date=date, time=time, pred_val_GRU=pred_GRU, percentage=percentege) |
5. 系统实现
5.1 系统后台搭建
基于大数据的交通流量信息分析平台的基本业务功能是采用Flask框架实现的, 在本文的第五章将详细介绍后台系统的实现部分,包括详细阐述了系统功能模块的具体实现,并展示说明了部分模块的功能界面。
4.1 开发环境与配置
本系统设计基于B/S架构,其中服务器包括应用服务器和数据库服务器。这种架构模式,使用户只需要在有网络的地方即可通过浏览器访问,而不需要再安装客户端软件,交互性更强。基于大数据的交通流量信息分析平台使用Pycharm集成开发工具。而系统运行配置时,选择应用本地来部署Web服务器来保障平台的正常运行。本系统的主要开发环境以及开发工具如表4-1所示。
表4-1 系统开发环境和工具
项目 | 系统环境及版本 |
硬件环境 | Windows 64 位操作系统 |
Python | Python2.6 |
数据库 | MySql |
开发工具 | Pycharm |
项目架构 | Flask |
本系统使用集成开发工具Pycharm进行开发,由于 Pycharm中本地配置详细资料有很多,不做详细赘述, 本文主要介绍 Flask框架的配置。首先需要在项目中中引入各框架以及数据库连接等所需要工具包。
4.2 数据库的设计
数据库设计是系统设计中特别重要的一部分。数据库的好坏决定着整个系统的好坏,并且,在之后对数据库的系统维护、更新等功能中,数据库的设计对整个程序有着很大的影响。
根据功能模块的划分结果可知,本系统的用户由于使用账号和密码进行登录,因此在本系统中需要分别进行数据记录。首先根据如下6个数据实体:用户、交通流量信息等数据库表。
用户的属性包括用户编号、用户名、密码和性别、注册账号的时间。用户实体属性图如图4-2所示:
图4-2 用户实体属性图
根据以上分析,各个实体之间有一定的关系,使实体与实体可以联系起来,建立成整个系统的逻辑结构,本系统中,普通用户通过对交通流量信息的管理,使交通流量信息与用户实体存在对应关系。
5.2 数据可视化
5.2.1 登录
用户登录时需要在登录界面输入用户名、密码进行身份认证,要求必须是表单认证、校验。其配置文件中配置了相应的类,当用户登录系统进行身份认证和权限控制时,会在该类中从数据库获取到用户信息及其具有的权限信息,并 且比较用户输入的账号是否存在或者输入的密码与数据源中的密码是否匹配。具体界面图如5-3所示。
图5-3 登录界面
5.2.2 交通数据管理
用户输入用户名和密码可以登录到系统中,在交通管理界面中能够管理交通推荐的信息,可以选择增加或者删减交通,交通推荐管理界面如图5-5所示。
图5-5 交通流量数据管理
5.2.3 交通数据分析
系统通过对某一城市交通词云的数量进行统计,计算,在前端界面渲染结果,最终交通大数据展示看板如图5-8所示,图中内容展示的是上海迪士尼交通的分析结果。
图5-8 交通流量大数据可视化界面
5.2.4 交通拥堵预测
系统通过对某一城市交通拥堵预测的数量进行统计,计算,在前端界面渲染结果,最终交通拥堵预测展示看板如图5-9所示。
图5-9 交通流量拥堵预测界面
5.4 本章小结
本章主要分析了基于大数据的交通信息可视化分析系统开发过程中使用到的技术和具体的实现步骤,这其中主要介绍了基于Spark框架的交通信息可视化分析系统的搭建环境和开发步骤,包括程序中的一些Spark集群搭建过程,系统页面介绍等。前端页面采用的是Echarts和html实现。
6.1登录功能
6.1.1功能概要
该功能是用于用户登陆交通流量分析系统,当用户输入用户名和密码之后,经过数据校验,成功则进入主页面。
6.1.2详细描述
该后台登录功能,通过向后台登录接口发送请求,如图6.1是后台登录界面。登陆成功,则提示登陆成功,并跳转到交通流量分析主页界面,如图6.2所示。
图 6. 1 后台登录页面截图
6.2数据管理功能
6.2.1功能概要
交通流量分析系统的可视化查询功能是指用户可以通过图形化界面进行数据查询和筛选,获取符合特定条件的物流运输路线评论数据,并以可视化方式展示结果。下面是一个关于可视化查询功能的简要描述:
界面设计: 可视化查询功能应该具有用户友好的交互式界面,包括输入框、下拉框、复选框等控件,可以方便用户进行数据查询和筛选。同时,界面还应该有一定的美观性和易用性,以提高用户的使用体验。
查询条件: 可视化查询功能应该提供多种查询条件,如时间范围、评论内容、商品类型、情感极性、评分等,使用户可以根据自己的需求进行筛选。查询条件还可以根据实际情况进行扩展和调整。
数据展示: 查询结果应以可视化方式呈现,如柱状图、折线图、饼图等,可以直观地展示数据的分布和趋势。同时,也可以提供表格或列表形式的展示方式,以方便用户查看更详细的数据信息。
交互式操作: 可视化查询功能还应该支持用户的交互式操作。例如,用户可以通过鼠标单击或拖动、缩放等方式对图表进行操作,以获得更精确的数据信息。同时,也可以提供导出数据、分享链接等功能,便于用户进行数据分析和共享。
6.2.2详细描述
图 6.3数据管理界面
6.3本章小结
本章主要分析了基于Flask的交通流量分析可视化系统的测试过程,包括系统架构各模块测试,用户登录测试,数据管理等功能测试等。
7 总结
7.1 结论
本文从整体框架出发,对交通数据分析系统进行了设计和实施。同时,为更好的完成此次的毕业设计和论文,我们也了解到很多的程序和程序代码。该交通数据分析系统具有以下优点:
(1)这个交通数据分析系统是以Flask开放源码系统结构为基础的,它的核心理念是分层,把所有的工程划分为不同的等级,分层的概念不仅可以简化业务过程的逻辑,降低了冗余的冗余,还可以促进工程具有更强的移植性。
(2)一个交通数据分析系统理制度定义了很多共同的控制单元,所有的单元都要包含一个共同的控制单元,如果在各个单元的代码中都有一个共同的控制单元,那么这个单元就会给人一种代码多余的感觉,这样就可以将所有的控制单元分开。
(3)在先前的实施系统的基础上,采用分页技术来完成多个页面的显示。
7.2 展望
近年来,我国的交通数据分析系统已具有相当大的发展空间,只要能够扩大规模,做好相关的相关业务,其发展前景不可低估。该系统具有良好的视觉效果、运行稳定、易于维修等特点。不过,因为自己的编程水平,这套系统还是需要完善的。
参 考 文 献
[1]刘宗明.交通流量管理平台系统的设计与实现[J].科学技术创新,2023,(05):105-108.
[2]骆京铭.城市交通流量管理系统设计与实现[J].自动化技术与应用,2019,38(06):171-175.
[3]张津凡,王鸿鹏.交通流量管控平台重点车辆管理系统的设计与实现[J].电子技术与软件工程,2018,(24):160-161.
[4]张林闯.城市交通流量管理系统的设计与实现[J].现代经济信息,2015,(24):281-282.
[5]Xun Y ,Wujie Z ,Weiqing Y , et al.CAGNet: Coordinated attention guidance network for RGB-T crowd counting[J].Expert Systems With Applications,2024,243122753-.
[6]杨晓光,胡仕星月,张梦雅.智能高速公路交通应用技术发展综述[J].中国公路学报,2023,36(10):142-164.DOI:10.19721/j.cnki.1001-7372.2023.10.013
[7]孙中廷.基于神经网络交通流量的控制系统设计[J].电脑与信息技术,2023,31(06):1-4.DOI:10.19414/j.cnki.1005-1228.2023.06.026
[8]刘文杰.“交通流量系统”课程思政教学思考与实践[J].时代汽车,2023,(24):40-42.
[9]孙跃男.交通流量系统在道路设计中的应用[J].黑龙江科学,2023,14(22):141-143.
[10]Adnan Z ,Shiyao Z ,Xuetao W , et al.A generalized feature projection scheme for multi-step traffic forecasting[J].Expert Systems With Applications,2024,244122962-.
[11]孟爱琴.基于交通流量系统的物流配送路径规划研究[J].中国航务周刊,2023,(46):55-57.
[12]贾云飞.交通流量系统中的行人检测与行为分析[J].中国信息化,2023,(09):85-86.
[13] 刘明珠, 姜波, 黄峻. 大数据时代下的社会健身房管理[C]// 建设与文化强国相匹配的"健身房强国". 2014.