目 录

摘 要 I
Abstract III
插图清单 IX
附表清单 XI
1引 言 1
1.1研究背景及意义 1
1.2研究内容与方法 2
1.3本文组织内容 2
2文献综述 4
2.1交通预测概述 4
2.2核密度估计概述 5
2.3交通预测中的机器学习方法 5
2.3.1传统交通预测方法 5
2.3.2基于机器学习的预测方法 6
3基于核密度估计算法的城市车流密度提取模型 8
3.1车辆轨迹时空数据概述 8
3.1.1GPS 数据描述 8
3.1.2Open Street Map 10
3.1.3研究区域概述 10
3.2车辆轨迹时空数据预处理 11
3.3基于时空轨迹数据的核密度估计算法 12
3.3.1核密度估计算法 12
3.3.2核密度估计最适带宽计算 13
3.4北京市出租车热点信息提取 14
3.4.1实验环境 14
3.4.2时空数据密度挖掘 15
3.4.3模型参数设置 17
3.4.4实验结果与分析 17
3.5本章小结 22
4基于支持向量回归的热点预测模型 23
4.1基于滑动窗口的热点信息数据处理 23
4.1.1滑动窗口模型 23

  • V -
    4.1.2训练数据集构造 24
    4.1.3数据的归一化处理 26
    4.2支持向量回归预测 27
    4.2.1支持向量回归 27
    4.2.2支持向量回归参数 30
    4.3支持向量回归热点预测 31
    4.3.1实验环境 31
    4.3.2模型参数设置 31
    4.3.3预测评价标准 32
    4.3.4实验结果与分析 33
    4.4本章小结 39
    5基于神经网络的热点预测模型 40
    5.1神经网络概述 40
    5.1.1神经网络构成 40
    5.1.2损失函数与正则化 42
    5.1.3前向传播与反向传播 43
    5.1.4激活函数 44
    5.2优化方法 46
    5.3循环神经网络 47
    5.4MLP 热点预测 50
    5.4.1实验环境 50
    5.4.2模型参数设置及评价标准 50
    5.4.3实验结果与分析 51
    5.5LSTM 热点预测 56
    5.5.1实验环境 56
    5.5.2参数设置 56
    5.5.3实验结果与分析 57
    5.6本章小结 60
    6不同时间尺度下模型性能分析 61
    6.1不同时间尺度预测模型 61
    6.1.1短时预测模型 61
    6.1.2长时预测模型 61
    6.2不同时间尺度预测模型性能对比 62
    6.2.1实验参数设置 62
    6.2.2模型对比与分析 62
    6.3本章小结 63
    7结论与展望 64
    参考文献 67
    在学取得成果 73
    致 谢 75

6不同时间尺度下模型性能分析
本章主要研究思路:从一个新的视角观察预测效果,前述的实验主要从某一时刻采样时间点或采样地点的角度去观察模型的效果,本章分析不同时间尺度下各种预测模型的性能体现。
6.1不同时间尺度预测模型
6.1.1短时预测模型
时间序列数据预测采用的是滑动窗口的方法,如前所述,通过将数据集分为训练集和测试集,在使用测试集验证时,属于短时预测模型,即输入的数据是数据集已知的,实际预测的数据是输入数据的下一时间点的预测,即模型训练好后,必须输入预测时间点前窗口步长长度的历史数据,上述预测采用的均为短时预测,也称为实时预测,需要不断向模型输入数据,这样预测未来不同时间尺度上车流密度的精度跟时间尺度的关联性必然不会很强, 更多的取决于训练出的模型的性能和输入的窗口数据。为此,提出长时预测模型的概念,为大尺度时间下预测提供一种方式。
6.1.2长时预测模型

短时预测能够充分体现模型通过喂入数据展现出的优越性能,长时预测则需要模型具有很强的预知能力,以及预测偏差后的纠正能力。长时预测即需要利用训练集训练出的模型来不停预测下一时刻的预测值,然后将预测值作为下一时刻预测的输入数据,即后续的预测数据都取决于已预测出来的历史数据,这样就不需要像实时预测那样不停的喂入历史数据。长时预测和短时预测的对比如图 6-1 所示。
本小节对长时预测模型的概念进行解释,从原理上来看,长时预测通过预测出的数据作为下一次预测的输入数据,每次预测会产生一定的预测偏差, 导致下一次输入数据与真实数据产生细微偏差,不断累积,随着时间尺度增加,预测的误差也会累积,导致时间尺度过大时预测误差较大。长时间的预测会导致预测失效的现象。而针对这一问题可以提出两个解决办法:(1)通过增加数据集时间线长度,本文转载自http://www.biyezuopin.vip/onews.asp?id=14875将一天的数据扩充到一周甚至一个月,然后相应增加输入数据采样时间点的间隔,本文数据采用 100 秒的间隔,可以通过增加采样间隔,将长时预测转化为预测精准的短时预测,但是要求原始数据的时间线足够长;(2)通过一些非线性的方法,实现模型对长时间跨度预测的优化,克服或减小误差累计的影响。

import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow.keras.layers import Dropout, Dense, LSTM
from sklearn import preprocessing
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
from sklearn.metrics import explained_variance_score
from sklearn.metrics import mean_absolute_error# 加载数据
data = np.load('./TrainData/all_point_data_3.npz')# 所有数据aa
# 维度说明:采样点个数*时间序列数*(Link_Num+1)
Data_ALL = data['all_point_data']
# print(Data_ALL.shape)# 采样点个数
Point_Num = len(Data_ALL[:])
# 时间序列长度
Time_Num = len(Data_ALL[0, :])# ----------------每次运行前注意预测长度是否修改-------------------------
def Get_LinkNum():return 3# 训练集测试集分类
Split = 700# 评价指标数组,包含每个Point的预测指标
MAE_ALL = []
MSE_ALL = []
R2_ALL = []Data_ALL_Trans = Data_ALL.copy()
Data_ALL_Test = Data_ALL.copy()for point in range(Point_Num):# 进度print(point, '/9999')# 对每个采样点进行归一化处理# MinMaxScaler():# X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))# X_scaled = X_std * (max - min) + minmin_max_scaler = preprocessing.MinMaxScaler()# for i in range(0, Point_Num):Data_ALL_Trans[point, :, :] = min_max_scaler.fit_transform(Data_ALL[point, :, :])X_data = Data_ALL_Trans[:, :, :Get_LinkNum()]Y_data = Data_ALL_Trans[:, :, Get_LinkNum()]# print(X_data.shape, Y_data.shape)X_train_data = X_data[point, :Split, :]X_train_data = np.expand_dims(X_train_data, 2)Y_train_data = Y_data[point, :Split]X_test_data = X_data[point, Split:, :]X_test_data = np.expand_dims(X_test_data, 2)Y_test_data = Y_data[point, Split:]print(X_train_data.shape, Y_train_data.shape)# 建立LSTM模型tf.random.set_seed(1)model = tf.keras.Sequential([# LSTM(100, return_sequences=True),# Dropout(0.1),LSTM(100),Dropout(0.1),Dense(1)])model.compile(optimizer=tf.keras.optimizers.Adam(0.001), loss='mean_squared_error')  # 损失函数用均方误差clf = model.fit(X_train_data, Y_train_data, batch_size=64, epochs=50, validation_data=(X_test_data, Y_test_data),validation_freq=1)# model.summary()y_train_hat = model.predict(X_train_data)y_test_hat = model.predict(X_test_data)print(y_test_hat.shape)# score = clf.score(X_test_data, Y_test_data)# print("score:", score)X_test_data = np.squeeze(X_test_data)X_train_data = np.squeeze(X_train_data)print(X_test_data.shape)# 归一化还原test_data_trans = np.c_[X_test_data, y_test_hat]train_data_trans = np.c_[X_train_data, y_train_hat]data_all_trans = np.concatenate((train_data_trans, test_data_trans))# 数据还原data_all = min_max_scaler.inverse_transform(data_all_trans)# print(data_all.shape, data_all)y_raw = Data_ALL[point, :, Get_LinkNum()]y_train_raw = Data_ALL[point, :len(X_train_data), Get_LinkNum()]y_test_raw = Data_ALL[point, len(X_train_data):, Get_LinkNum()]y_train_hat = data_all[:len(X_train_data), Get_LinkNum()]y_test_hat = data_all[len(X_train_data):, Get_LinkNum()]# 评价指标# 训练集# Mean squared error(均方误差)MSE_Train = mean_squared_error(y_train_hat, y_train_raw)# Mean absolute error(平均绝对误差),给定数据点的平均绝对误差,一般来说取值越小,模型的拟合效果就越好。MAE_Train = mean_absolute_error(y_train_hat, y_train_raw)# R2,R方可以理解为因变量y中的变异性能能够被估计的多元回归方程解释的比例,它衡量各个自变量对因变量变动的解释程度,其取值在0与1之间,其值越接近1,# 则变量的解释程度就越高,其值越接近0,其解释程度就越弱。一般来说,增加自变量的个数,回归平方和会增加,残差平方和会减少,所以R方会增大;# 反之,减少自变量的个数,回归平方和减少,残差平方和增加。R2_Train = r2_score(y_train_hat, y_train_raw)# print("Train ERROR(MSE) = ", MSE_Train)# print("Train MAE = ", MAE_Train)# print("Train EVS = ", EVS_Train)# print("Train R2 = ", R2_Train)# 计算测试集MSE_Test = mean_squared_error(y_test_hat, y_test_raw)MAE_Test = mean_absolute_error(y_test_hat, y_test_raw)R2_Test = r2_score(y_test_hat, y_test_raw)# print("Test ERROR(MSE) = ", MSE_Test)# print("Test MAE = ", MAE_Test)# print("Test EVS = ", EVS_Test)# print("Test R2 = ", R2_Test)MSE_ALL = np.append(MSE_ALL, MSE_Test)MAE_ALL = np.append(MAE_ALL, MAE_Test)R2_ALL = np.append(R2_ALL, R2_Test)# DataALLTest异常点处理,小于0的值按0计算
Data_ALL_Test[Data_ALL_Test < 0] = 0# 异常值剔除
R2_ALL = [element for element in R2_ALL if element >= 0]print("MAE:", np.mean(MAE_ALL))
print("MSE:", np.mean(MSE_ALL))
print("R2 Score:", np.mean(R2_ALL))# 评价指标数据汇总
Sum_eva = np.array([[Get_LinkNum(),np.mean(MSE_ALL), np.max(MSE_ALL), np.min(MSE_ALL),np.mean(MAE_ALL), np.max(MAE_ALL), np.min(MAE_ALL),np.mean(R2_ALL), np.max(R2_ALL), np.min(R2_ALL)]])Sum_eva = pd.DataFrame(data=Sum_eva)
save_data_path = 'NNPredictData/LSTM_Sum_Params.csv'
Sum_eva.to_csv(save_data_path, index=False, mode='a', header=0)save_name = './NNPredictData/all_y_hat_lstm_' + str(Get_LinkNum())
np.savez(save_name + '.npz', all_y_hat=Data_ALL_Test)






















基于车辆轨迹时空数据的城市热点预测模型研究相关推荐

  1. 北京市优秀毕业论文—基于车辆轨迹时空数据的城市热点预测模型研究

    写在前面 本科毕业设计论文开源,论文与代码地址:Github 基于车辆轨迹时空数据的城市热点预测模型研究 摘要 智能交通在近年得到了学术界和产业界的广泛重视.尤其是随着道路网的不断完善,交通车流越来越 ...

  2. CBNData:骑行大数据寻找城市热点之购物中心篇

    近日,第一财经商业数据中心(CBNData)联合ofo小黄车发起了"骑行大数据寻找城市热点"主题系列研究,通过对北京.上海.广州.深圳.成都.西安.杭州.天津8个一.二线城市的共享 ...

  3. 土地利用结构信息熵_科研成果快报第163期:基于市政用水时序数据的城市混合土地利用感知与分析...

    基于市政用水时序数据的城市混合土地利用感知与分析 Sensing Mixed Urban Land-Use Patterns Using Municipal Water Consumption Tim ...

  4. 轨迹时空数据存储对比分析

    轨迹时空数据存储对比分析 背景 最近有一批车辆的轨迹数据需要用postgresql管理起来.数据格式相对比较简单,就是一堆csv文件,每行一个点,包括x,y,t和其他的一些速度,方向属性信息. 方案对 ...

  5. 基于百度时空大数据的城市计算(讲座精华笔记)

    基于百度时空大数据的城市计算(讲座精华笔记) THU数据派 2017-05-27 23:24 [导读]本文整理自2017年5月24日,百度自动驾驶事业部创始团队成员.高级技术顾问秦伟俊博士在清华大数据 ...

  6. 基于人工智能与大数据的城市治安防控体系建设方案-2022-01版

    下载地址:基于人工智能与大数据的城市治安防控体系建设方案-2022-01版 - 风云社区点券价格:399 下载地址:基于人工智能与大数据的城市治安防控体系建设方案-2022-01版 文件类型:ppt ...

  7. 用matlab生成srtm,基于MATLAB的SRTM数据完善方法的实验研究

    第 36 卷第 6 期 2011 年 11 月 测绘科学 Science of Surveying and Mapping Vol. 36 No. 6 Nov. 作者简介: 董春来( 1963-) , ...

  8. 神经网络预测模型算法_MATLAB Elman神经网络的数据预测—电力负荷预测模型研究...

    点击上方蓝字关注"公众号" MATLAB  Elman神经网络的数据预测-电力负荷预测模型研究 负荷预测的核心问题是预测的技术问题,或者说是预测的数学模型. 传统的数学模型是用显示 ...

  9. matlab流量预测模型,基于MATLAB工具箱的BP神经网络年径流量预测模型研究——以塔城地区乌拉斯台河为例...

    水 文 JOURNAL OF CHINA HYDROLOGY 第28卷第1期 2008年2月 Vol.28 No.1 Feb., 2008 塔城地区位于新疆维吾尔自治区西北边陲, 地处中纬, 虽属内陆 ...

最新文章

  1. 广东时代互联---网络管理面试
  2. linux查找日志技巧
  3. centos 7 忘记密码
  4. android给数组添加新元素_重磅!超详细的 JS 数组方法整理出来了
  5. 脚本不得关闭非脚本打开的窗口。_selenium自动化测试:2.录制和导出脚本
  6. 进程缓存和缓存服务,如何抉择?
  7. soapui直接下载响应内容为本地的文件
  8. OSChina 周一乱弹 ——东京12G
  9. 关于使用SpringBoot导出Pdf(itextpdf)
  10. 中文.com域名如何申请 什么是.com域名过期
  11. 计算机60分分值分配,计算机二级分值分配 多少分及格
  12. echarts饼图南丁格尔玫瑰图属性设置
  13. iOS中获取NSError错误信息汇总
  14. 10.敏捷估计与规划——Financial Prioritization笔记
  15. c语言既是素数又是回文数的三位数,编写程序,找出所有既是素数又是回文数的三位正整数.例如:131等...
  16. clover安装黑苹果10.15.3常见问题集合
  17. matplotlib-10 title添加标题
  18. 2015年中国青年生活形态调查报告
  19. ubuntu开机画面的修改
  20. eclipse在资源管理器中打开文件

热门文章

  1. c语言程序设计实践教程谢丽霞答案,C语言程序设计实用实践教程
  2. 计算机技术未来发展趋势
  3. 51单片机:proteus仿真1602LCD的显示
  4. spark法律服务大数据智能推荐(自己动手做的,完整过程+源码)
  5. MySQL存储大数据报错的解决方法
  6. Windows 2003 架设Radius服务器
  7. android x fragment,Androidx-fragment1.1.0版本实现懒加载
  8. ubuntu16.04解决Built-in Display问题
  9. C语言strcpy()函数
  10. 昇腾宠粉嘉年华︱爆款豪礼送不停!