2023/11/12周报

摘要

本周阅读了一篇基于深度学习时间序列分析的北方红河水位预测模型的文章,文章通过季节性自回归积分移动平均、随机森林、长短期记忆等方法对水位进行预测,有效减少洪水带来的破坏和经济损失。此外,还深入学习了CNN的原理。CNN通过卷积和池化等操作,逐步减小图像尺寸,从而大大减少了参数量。

Abstract

This week, an article about the water level prediction model of the Red River in North China based on the deep learning time series analysis is readed. The article predicts the water level by means of seasonal autoregressive integral moving average, random forest, long-term and short-term memory, etc., which effectively reduces the damage and economic losses caused by floods. In addition, I also studied the principle of CNN in depth. Through convolution and pooling, CNN gradually reduces the image size, thus greatly reducing the number of parameters.

文献阅读

题目

Water Level Forecasting Using Deep Learning Time-Series Analysis: A Case Study of Red River of the North

引言

北部的红河易发洪水,给居民造成重大破坏和经济损失。更好的货物事件预测能力对于决策者规划减少货物损失策略至关重要。在过去的几十年里,经典的统计方法和机器学习(ML)算法极大地促进了数据驱动的预测系统的发展,这些系统提供了具有成本效益的解决方案,并提高了使用数学表达式模拟复杂物理过程的性能。为了改进北方红河的洪水预测,本文提出了利用经典统计方法、经典ML算法和最先进的深度学习方法的有效方法。这些方法分别是季节性自回归积分移动平均(SARIMA)、随机森林(RF)和长短期记忆(LSTM)。

预测河流和湖泊的水位对于洪水预警和水资源管理至关重要。由于水文站的水位数据通常具有时间序列结构,研究人员通常采用时间序列水文预测模型来预测未来的数据。隐藏的信息可以通过使用过去的数据来预测未来的水位(未来的行为),这对于减轻洪水影响,减少或预防灾害以及管理水资源非常重要。

方法

季节性自回归移动平均(SARIMA)
SARIMA是ARIMA的扩展,通常被称为季节性ARIMA。ARIMA模型又称非季节性ARIMA模型,不适用于包含季节性成分的时间序列数据。因此,通过添加季节性项,提出了ARIMA的扩展版本,称为季节性ARIMA或简称为SARIMA。ARIMA(p,d,q)可以用以下公式表示:
在这里插入图片描述

其中,∆是(1-B),其中B表示“backward”运算符, 在这里插入图片描述表示时间t的数据样本,c表示常量,α1,.的符号。定义为自回归参数,t时刻的白色噪声定义为∈(t),β1,…,βq是移动平均系数。
Random Forest(随机森林)
随机森林(RF)模型是用于多个去相关决策树的集成监督ML算法技术。选择RF是因为其简单性;调整几个参数可以比其他ML模型更好地评估准确性。在这项研究中,我们评估了Python的scikit-learn包。RF算法值工作的系统性简要解释如下:系统选择一组独立值对每个树响应产生影响,这是初始数据集的预测值的子集。最佳子集预测器值从log(M+1)2计算,其中M是输入。现在,我们可以计算RF的均方误差(RMSE):
在这里插入图片描述
其中ε、V observed和V response分别是MSE、来自observed的变量和结果。此外,可以计算树的平均预测:
在这里插入图片描述
其中S和t分别是RF预测和森林中的树的数量。

在分类中,在定义了一组随机树和预测之后,该算法将超额投票数与其他类别的平均投票数进行比较。虽然在回归算法中,从平均分布中为每棵树随机选择预测器集,但每棵树可以添加数值响应以形成RF。
LSTM
在这里插入图片描述
使用RNN的变体LSTM,是为了为水文时间序列构建一个强大的多对一模型,类似于RNN存储单元的输入,自循环连接,遗忘和输出门的结构。假设it,ot,ft是t时刻的输入,输出和遗忘门。其中xt和ht显示了时间t的输入和状态。类似地,我们有h和x在时间t − 1和t + 1等等。Ct和ht被定义为这个细胞中的长期和短期(隐藏)记忆。以下公式对过程中第t步的ht和Ct进行计算:
在这里插入图片描述

其中Ui和Wi是权重矩阵; bi是偏差; σ是S形激活函数, 在这里插入图片描述是单元状态值的候选。
基于两个标准,我们评估了模型的准确性:(i)均方根误差(RMSE)和(ii)ENS(Nash-Sutcliffe效率系数)。利用这些参数是常见的水文领域,以评估预测和观测结果之间的相关性。计算公式如下:
在这里插入图片描述
其中,Oi、Pi和N分别是时间i的观测值、时间i的预测值和几个观测值。

实验结果

作为经典的统计方法,经典的ML算法和最先进的深度学习方法,这些方法分别是季节性自回归积分移动平均(SARIMA),随机森林(RF)和长短期记忆(LSTM),这些方法是广泛使用的有效预测模型,已在水文时间序列上提出和测试。
图2和图3显示了这三个选定台站的月度和年度数据。我们通过将收集的数据分为两部分进行训练和测试来评估和比较所有测试的ML方法。从2007年1月1日至2017年6月3日,Pembina站,从2007年1月1日至2017年2月7日,Drayton站,从2007年1月1日至2017年8月5日,大福克斯站以不同的频率采集样本。
如前所述,研究数据涉及70%的数据作为训练集,15%作为验证集,15%作为测试集。所有模型都在训练数据集上进行训练,然后训练好的模型用于在测试集上的不同时间进行预测。在将上述算法应用于三个不同的采样站之后,提取模型以供进一步评估,并在表2中列出。该表给出了所有测试方法在五个不同时间间隔的平均预测结果的详细信息:6小时,12小时,1天,3天和1周,针对Pembina,Drayton和大福克斯数据集。较低的RMSE值表明所选模型的预测精度较高。每个预测范围的最佳结果以粗体突出显示。通过检测SARIMA,RF和LSTM模型的结构,验证了LSTM比其他两个模型更准确。将LSTM与Pembina站的RF和SARIMA模型进行比较,RMSE值分别低77.22%和78.70%。当使用LSTM时,Drayton站的RF和SARIMA模型之间的RMSE分别降低了26.31%和31.71%。最后,LSTM的大福克斯站的RMSE值比RF模型低83.70%,比SARIMA模型低96.39%。图5-7展示了使用经典统计方法SARIMA、经典ML算法RF和深度学习方法LSTM预测彭比纳、德雷顿和大福克斯一周水位的所有方法的视觉比较。绿色线表示用作测试数据的观测数据,红线表示作为模型输出的预测数据。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

深度学习

手写数字识别

构建CNN模型:

from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), 
          activation='relu', 
          input_shape=(28, 28, 1))
          )
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dropout(0.25))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

卷积神经网络接收形状为(image_height, image_width, image_channels)的输入张量(不包括批量维度)。本例中设置卷积神经网络处理大小为(28, 28, 1) 的输入张量,这正是MNIST 图像的格式。我们向第一层传入参数input_shape=(28, 28, 1) 来完成此设置。
图片下载与查看:

from keras.datasets import mnist
from keras.utils    import to_categorical
from keras          import datasets
(train_images,train_labels), (test_images,test_labels)  = mnist.load_data()
dir(datasets)
#可以看看内置的所有数据集

查看图片

import matplotlib.pyplot as plt
plt.imshow(train_images[200] , cmap=plt.cm.binary)
plt.show()

在这里插入图片描述

模型训练和准确率评估

train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype('float32') / 255
train_labels = to_categorical(train_labels)

test_images  = test_images.reshape((10000, 28, 28, 1))
test_images  = test_images.astype('float32') / 255
test_labels  = to_categorical(test_labels)

model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5, batch_size=64)

test_loss, test_acc = model.evaluate(test_images, test_labels)
test_acc
 0.9914000034332275

#看看预测是否准确

y_pred = model.predict(test_images)
import numpy as np
pred = np.argmax(y_pred, axis=1)
import matplotlib.pyplot as plt
#看第2990个数字,预测是8,图片也是8,正确 
steps = 2990
print('pred: ',pred[steps])
pred:  8
plt.imshow(test_images[steps] , cmap=plt.cm.binary)
plt.show()

在这里插入图片描述

预测自己的手写数字
需要用自己的数据进行测试,打开自己在画图板里面随便写几个数字,然后单个截图保存后进行预测。
在这里插入图片描述

分别截图后保存成img3、img4、img5…,下面进行预处理,处理成和模型训练一样的数据才能预测。
在这里插入图片描述

from keras.preprocessing.image import load_img,img_to_array
import matplotlib.pyplot as plt
import numpy as np
path = 'C:/Users/52253/Desktop/img5.jpg'
#读取图片、调整图片大小,转换成灰度 help(load_img)
img = load_img(path, target_size=(28, 28),color_mode="grayscale")
#255-为了调成白底,系统灰度转换自动给处理成黑底了
img = 255-img_to_array(img)
#查看自己加载的图片
plt.imshow(img , cmap=plt.cm.binary)
plt.show()
#进行数据预测
img = img.astype('float32')/255
img = img.reshape((1, 28, 28, 1))
y_pred = model.predict(img)
print('预测数字:',np.argmax(y_pred, axis=1)[0]
 

在这里插入图片描述
在这里插入图片描述

从测试的结果来看,预测效果还是非常不错的。

总结

本周阅读了一篇基于深度学习时间序列分析的北方红河水位预测模型的文章,对时序模型进行了进一步的学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我之前的回答并没有提及具体的开发时间表格。以下是根据您提供的项目阶段和预计用时的时间表格: | 项目阶段 | 开始时间 | 完成时间 | 预计用时 | 实际用时 | | -------------------------- | ---------- | ---------- | -------- | -------- | | 园区网络设计 | 2023/7/1 | 2023/7/1 | 1周 | 1周 | | - 需求分析和规划 | 2023/7/1 | 2023/7/1 | 1周 | 1周 | | - VLAN和子网配置 | 2023/7/2 | 2023/7/15 | 2周 | | | 楼宇的智能化管理 | 2023/7/16 | | 12周 | | | - 人脸识别和指纹识别系统安装 | 2023/7/16 | 2023/7/29 | 2周 | 2周 | | - 学生卡识别系统安装 | 2023/7/30 | 2023/8/5 | 1周 | 1周 | | - 空调管理系统安装 | 2023/8/6 | 2023/8/12 | 1周 | | | - 消防管理系统安装 | 2023/8/13 | 2023/8/26 | 2周 | | | - 监控管理系统安装 | 2023/8/27 | 2023/9/16 | 3周 | | | 停车场的智能化管理 | 2023/9/17 | | 6周 | | | - 停车场入门管理系统安装 | 2023/9/17 | 2023/9/30 | 2周 | 2周 | | - 剩余车位管理系统安装 | 2023/10/1 | 2023/10/7 | 1周 | 1周 | | - 收费管理系统安装 | 2023/10/8 | 2023/10/21 | 2周 | | | - 停车位提示和路径引导系统安装 | 2023/10/22 | 2023/10/28 | 1周 | | | 办公区的使用智能化管理 | 2023/10/29 | | 10周 | | | - 申请办公室系统开发和部署 | 2023/10/29 | 2023/11/19 | 3周 | | 请注意,实际用时可能会因各种因素而有所变化,以上时间表仅供参考。在项目实施过程中,及时进行进度跟踪和调整是必要的,以确保项目按时完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值