网络流量预测入门(三)之LSTM预测网络流量
网络流量预测入门(三)之LSTM预测网络流量
在上篇博客LSTM机器学习生成音乐中,介绍了如何使用LSTM生成音乐,而在上上篇网络流量预测入门(二)之LSTM介绍中,介绍了LSTM的基本原理
在这篇博客中,将介绍如何使用SVR和LSTM对网络流量进行预测。
环境版本信息:
- keras:2.4.3
- numpy:1.19.2
- tensorflow:2.4.1
- sklearn:0.23.2
数据集介绍
数据集来自欧洲11个城市的ISP互联网流量(用ec_data表示)和英国学术网流量(用uk_data表示),数据集见Github。
ec_data统计了从2005年7月6号至2005年7月28号共计14772组网络流量数据,uk_data统计了从2004年11月19号至2005年1月27号共计19888组网络数据。ec_data和uk_data都是以5分钟为间隔进行采样得到的数据,数据见下图。由图中可以看出,ec_data和uk_data具有很强的周期性以及规律性,因此可以大胆的搏一搏单车变摩托:LSTM在预测的时候能够有着比较好的结果。
预测流程
在这篇博客中,使用前10个序列去预测下一个时间序列的网络流量值。当然,也可以如同简单明朗的 RNN 写诗教程一样,通过前10个序列去预测后面\(N\)个序列的网络流量值,如下图所示。
数据集准备
流量预测的目的是使用前\(K\)个序列去预测后面\(N\)个序列(这篇博客\(K=10,N=1\)),从机器学习训练的角度去看,前\(K\)个序列为\(X\),后面\(N\)个序列则为\(Y\)。因此,需要从网络流量数据中构建数据集。构建数据集的过程原理在简单明朗的 RNN 写诗教程详细说过,以诗为例,过程如下:
通过上面的操作,就可以将网络流量序列变成X_Data和Y_Data,部分代码如下:
# all_data 即为数据集,sequence_len即为K
sequence_len = 10
X = []
Y = []
for i in range(len(all_data)-sequence_len):
X.append(all_data[i:i+sequence_len])
Y.append(all_data[i+sequence_len])
X = np.array(X)
Y = np.array(Y)
SVR预测
SVR使用sklearn提供的默认参数,默认参数设置如下:
超参数 | 取值 |
---|---|
kernel | rbf |
gamma | scale |
tol | 0.001 |
C | 1.0 |
代码见:Github,使用SVR进行预测还是挺简单的,看看代码就能够看懂了。
预测结果图如下图所示:
ec_data:MAPE=0.095
uk_data:MAPE=0.084
LSTM 预测
LSTM的模型结构如下图所示,是一个很简单的双层LSTM网络,并没有加入一些特殊的结构。
代码见:Github
预测结果:
ec_data:MAPE=0.040
uk_data:MAPE=0.035
优化点
可以将uk_data和ec_data进行小波变换,然后将小波变换后的结果进行训练。在预测的过程中,将预测结果进行反小波变换恢复成网络流量时间序列,可以有效的消除网络流量突变造成的影响。如果有兴趣,值得试一试。
网络流量预测入门(三)之LSTM预测网络流量的更多相关文章
- 网络流量预测入门(二)之LSTM介绍
目录 网络流量预测入门(二)之LSTM介绍 LSTM简介 Simple RNN的弊端 LSTM的结构 细胞状态(Cell State) 门(Gate) 遗忘门(Forget Gate) 输入门(Inp ...
- 网络流量预测入门(一)之RNN 介绍
目录 网络流量预测入门(一)之RNN 介绍 RNN简介 RNN 结构 RNN原理 结构原理 损失函数$E$ 反向传播 总结 参考 网络流量预测入门(一)之RNN 介绍 了解RNN之前,神经网络的知识是 ...
- 脑残式网络编程入门(三):HTTP协议必知必会的一些知识
本文原作者:“竹千代”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.前言 无论是即时通讯应用还是传统的信息系统,Http协议都是我们最常打交 ...
- 通过房价预测入门Kaggle
今天看了个新闻,说是中国社会科学院城市发展与环境研究所及社会科学文献出版社共同发布<房地产蓝皮书:中国房地产发展报告No.16(2019)>指出房价上涨7.6%,看得我都坐不住了,这房价上 ...
- 第十三节,卷积神经网络之经典网络LeNet-5、AlexNet、VGG-16、ResNet(三)(后面附有一些网络英文翻译文章链接)
一 实例探索 上一节我们介绍了卷积神经网络的基本构建,比如卷积层.池化层以及全连接层这些组件.事实上,过去几年计算机视觉研究中的大量研究都集中在如何把这些基本构件组合起来,形成有效的卷积神经网络.最直 ...
- 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战
前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...
- Web技术的发展 网络发展简介(三)
在上一篇文章中,对TCP/IP通信协议进行了简单的介绍 通信协议是通信的理论基石,计算机.操作系统以及各种网络设备对通信的支持是计算机网络通信的物质基础 而web服务则是运行于应用层,借助于应用层的协 ...
- python网络爬虫之入门[一]
目录 前言 一.探讨什么是python网络爬虫? 二.一个针对于网络传输的抓包工具fiddler 三.学习request模块来爬取第一个网页 * 扩展内容(爬取top250的网页) 后记 @(目录) ...
- IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁
[来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<中国通信的百年沉浮>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时内容有 ...
随机推荐
- 使用deepin连接罗技k380
1,刚开始总是连不上,连上了就断开了,以为是deepin系统的问题. 2,首先在华为论坛上找到这样的一片解决方案:https://cn.ui.vmall.com/thread-21831568-1-1 ...
- GraphPad Prism 9.0安装破解教程
graphpad prism 9.0是一款强大的科学软件,拥有大量分析图表,prism是回归分析的著名软件之一,非常适用于科研生物医学等领域.本文提供其破解版,激活码,序列号,破解教程等,可以完美激活 ...
- 还不了解一下 Java 8 Predicate 函数接口
同学你好,这里有一份你的未读代码,等你查收. 这篇文章属于 Java 8 教程(LTS)系列教程,点击阅读更多相关文章. Predicate 函数接口同之前介绍的 Function 接口一样,是一个函 ...
- 原来select语句在MySQL中是这样执行的!看完又涨见识了!这回我要碾压面试官!
大家好,我是冰河~~ MySQL作为互联网行业使用最多的关系型数据库之一,与其免费.开源的特性是密不可分的.然而,很多小伙伴工作了很多年,只知道使用MySQL进行CRUD操作,这也导致很多小伙伴工作多 ...
- 配置 Nvidia GPU 主机的运行环境
在 Linux 主机上配置了很多次 Cuda/CuDNN 的运行环境,在此记录下用到的脚本命令以复用. 特别提醒,先了解清楚 GPU 卡的型号,查清与主机 Linux 内核兼容的驱动程序.Cuda 和 ...
- Git基本理论---重点
Git本地有三个工作区域: 工作目录(Working Directory): 存放项目代码 暂存区(Stage/Index) : 临时存放文件的改动,保存的是文件列表信息 资源库 (Repositor ...
- LeetCode通关:数组十七连,真是不简单
分门别类刷算法,坚持,进步! 刷题路线参考:https://github.com/chefyuan/algorithm-base https://github.com/youngyangy ...
- Java基础——JavaDoc生成文档
JavaDoc生成文档 package Top1; /** * @author lwt * @version 1.0 * @since 1.8 * */ public class ...
- 一专属SRC - XSS - Bypass长亭Waf
bypass是预言表哥绕的,擦,我这篮子玩xss什么都绕不过 https://www.cnblogs.com/yuyan-sec 这博客我直接倒背如流 主要记录下这次挖掘的过程 先说下 bypass姿 ...
- PTui又加全景图 佳田未来城 of 安阳
今天我又拍了张360°无死角全景,因为我发现这种照片非常具有纪念意义,一个全景能胜过一千张照片. 我上一次的全景的地址:http://www.dushangself.site/dslab/?id=8 ...