python 用LSTM预测时间序列之预测新冠肺炎疫情

用到的模块

import numpy
import matplotlib.pyplot as plt
from pandas import read_csv
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.metrics import mean_squared_error
from keras.callbacks import ReduceLROnPlateau
from sklearn.preprocessing import MinMaxScaler

载入数据

dataframe = read_csv('china.csv',encoding='utf-8' ,usecols=[6],skiprows=5)
dataset = dataframe.values

plt.plot(dataset)#查看趋势
plt.show()


m = numpy.argmax(dataset)#找到异常值位置
dataset[m] = 0.5*(dataset[m-1]+dataset[m+1])#平均插值

dataset_or = dataset

为后续lstm的输入创建一个数据处理函数

def create_dataset(dataset, look_back=1):#look_back为滑窗
    dataX, dataY = [], []
    for i in range(len(dataset)-look_back):
        a = dataset[i:(i+look_back), 0]
        dataX.append(a)
        dataY.append(dataset[i + look_back, 0])
    return numpy.array(dataX), numpy.array(dataY)

设置随机种子,标准化数据

numpy.random.seed(7)

scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)

train = dataset

设置时间滑窗,创建训练集

look_back = 7
trainX, trainY = create_dataset(train, look_back)

对训练集x做reshape
trainX = numpy.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))

搭建lstm网络
model = Sequential()
model.add(LSTM(25, input_shape=(1, look_back)))#输出节点为25,输入的每个样本长度为look_back
model.add(Dense(1))#添加一个全连接层,输出维度为1
model.compile(loss='mean_squared_error', optimizer='adam')#使用均方差做损失函数。优化器用adam
reduce_lr = ReduceLROnPlateau(monitor='val_loss', patience=10, mode='max')
model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2, callbacks=[reduce_lr])#训练模型,100epoch,批次为1,每一个epoch显示一次日志,学习率动态减小

 预测
trainPredict = model.predict(trainX)#预测训练集

预测后7天

testx = [0.]*(7+look_back)
testx[0:look_back] = train[-look_back:]
testx = numpy.array(testx)
testPredict = [0]*7
for i in range(7):
    testxx = testx[-look_back:]
    testxx = numpy.reshape(testxx, (1, 1, look_back))
    testy = model.predict(testxx)
    testx[look_back+i] = testy
    testPredict[i] = testy

testPredict = numpy.array(testPredict)
testPredict = numpy.reshape(testPredict,(7,1))

反标准化
trainPredict = scaler.inverse_transform(trainPredict)
trainY = scaler.inverse_transform([trainY])
testPredict = scaler.inverse_transform(testPredict)

输出训练RMSE
trainScore = math.sqrt(mean_squared_error(trainY[0,:], trainPredict[:,0]))
print('Train Score: %.2f RMSE' % (trainScore))

画图查看模型预测结果

trainPredictPlot = numpy.reshape(numpy.array([None]*(len(dataset)+7)),((len(dataset)+7),1))
trainPredictPlot[look_back:len(trainPredict)+look_back, :] = trainPredict

testPredictPlot = numpy.reshape(numpy.array([None]*(len(dataset)+7)),((len(dataset)+7),1))
testPredictPlot[:, :] = numpy.nan
testPredictPlot[len(dataset):(len(dataset)+7), :] = testPredict

plt.plot(dataset_or,label='true')
plt.plot(trainPredictPlot,label='trainpredict')
plt.plot(testPredictPlot,label='testpredict')
plt.legend()
plt.show()

其实总体来说效果一般,而且这么少的数据其实不适合用lstm,我是看着钟南山院士在论文中用了lstm来做预测我才用的,不过钟院士用了sas的数据做了预训练。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44408.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于self-attention-TCN时间序列预测Python程序

基于self-attention-TCN时间序列预测Python程序 特色:1、单变量,多变量输入,自由切换 2、单步预测,多步预测,自动切换 3、基于Pytorch架构 4、多个评估指标(MAE,MSE,R2,M…

Kaggle_Titanic生存预测 -- 详细流程吐血梳理

作者: 大树先生 博客: http://blog.csdn.net/koala_tree 知乎:https://www.zhihu.com/people/dashuxiansheng GitHub:https://github.com/MrLeeTree 2017 年 12 月 5 日 一直想在Kaggle上参加一次比赛,奈何被各种事情所…

python攻陷米哈游《元神》数据?详情请看文章。。

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 《原神》是由米哈游自研的一款全新开放世界冒险RPG。 里面拥有许多丰富得角色,让玩家为之着迷~ 今天,我们就来用python探索一下原神游戏角色信息! 标题大家看看就好了哈~&#xff08…

米哈游技术总监详解《原神》画面效果的技术实现

11月17日,中国Unity线上技术大会游戏专场迎来米哈游技术总监弋振中的分享,此次他围绕“从手机走向主机-《原神》主机版渲染技术”为主题,细致地讲解了《原神》在主机上渲染技术实现的重点内容。 以下是演讲内容(有节选&#xff09…

原神反调试分析

打开CE,打开原神启动器。 至此,游戏未加载驱动。启动器可以被CE正常读写。 打开原神,CE中选择YuanShen.exe,发现原神并不能被读写。 尝试分析不能读写的原因。 CE调用的读取内存函数是NtReadVirtualMemory 猜测有三种可能 1.NtReadVirtu…

关于原神抽奖概率的简要分析

序言 最近迷上了原神这款游戏,趁着保研完,肝了两个星期,也氪了一些金。先不谈这款游戏可玩性有多高,但论氪金强度算是我从小到大玩的游戏中,能排得上第一的了。 对于这种寸卡寸金的游戏,如何在无穷无尽的…

CAD教程:如何将Excel数据快速导入CAD图纸

在平时的设计工作中,为了图纸内容的丰富性,通常会在里面添加一些元素,使得数据更加的完善,那我们想在CAD图纸中添加一份Excel数据表,徒手绘制那就肯定是太过于麻烦了,那怎么才能省时省事呢?这个…

CAD绘图软件中如何将图纸分享给其他人

当我们在CAD绘图软件中打开一张图纸进行查看的时候,查看完成后,在CAD绘图软件中如何将图纸分享给其他人,具体要怎么来进行操作呢?相信很多的小伙伴们都想要知道,那下面小编就来教教大家具体的操作方法吧。 第一步&…

怎么将手机上保存的CAD图纸发送给好友

现在有很多的工作我们也可以在手机中完成,就比如说我们再收集中将图纸进行查看之后保存了下来,之后同事需要使用到这张CAD图纸文件。那么我们就可以将图纸发送给好友。怎么将手机上保存的CAD图纸发送给好友,下面我们一起来看看。 步骤一&…

dat文件导入cad画图步骤_图说CAD|多文件、多布局图纸批量打印设置的8个关键步骤...

在AutoCAD中,Publish(发布)功能具有批量打印图纸的功能:1. 以读取预设页面设置的方式进行打印,可直接打印为一套图纸电子文件,也可以打印为单张图纸电子文件。2. 支持批量自定义图纸名称指定。3. 可对发布图纸内容进行增减、排序。…

怎么把CAD表格转换成Excel表格?CAD表格导出教程

有些小伙伴在使用CAD软件绘制图纸的过程中,想要将CAD表格导出为Excel表格时不知道该如何操作,浩辰CAD软件中提供了CAD表格转Excel功能,可以快速将CAD中由线和文字构成的表格转换成Excel表格。下面就让小编来给大家介绍一下浩辰CAD给排水软件中…

计算机接口cad图,管道接口CAD平面图怎么画

回答: CAD怎么画钢琴平面图 CAD怎么画出钢琴的平面图呢?很简单的,有需要的朋友动手试试吧。 1、启动中望CAD软件,执行“矩形”命令(rec),绘制1575mmX230mm和1575X50mm的直角矩形。 2、执行矩形命令和移动命令(M),绘制出…

cad快速看图软件免费版(手机在线cad快速看图)

很多机械设计师日常工作过程中涉及到多种格式的cad图纸,cad图纸大多都需要cad设计软件才能打开,然而很多小伙伴并没有下载相应的cad设计软件,这种情况下如何进行cad快速看图呢? 今天小编为大家推荐一款cad快速看图软件免费版&…

CAD批量打图精灵10.0入门教程

简介 在工程制图中,往往有大量的图纸需要打印或转为PDF,可能是一个dwg文件里有多张图纸,或是多张图纸分散于多个dwg文件。常规的打印方法是,逐个手工框选打印,操作单调且费时。有没有更好的方法呢?CAD批量…

这样的图像在CAD怎么画呢?

这期来说一下用CAD怎么绘制这样的图形。 目标图 操作工具 操作系统:Windows10 CAD软件:CAD梦想画图 步骤 1.首我们使用圆(C)命令画一个半径为50的圆,如下图所示: 画圆 2.然后使用多边形命令画一个以圆…

CAD制图初学入门教程:一键解决CAD图纸杂乱

纵横交错的线条,星罗棋布的图形,错综复杂的标注…一看到复杂的CAD图纸,就感到头晕眼花,不知所措。哪位大神能指点迷津?如何让复杂的CAD设计「简单化」?新人设计师在面对复杂的CAD图纸项目时,时常…

cad看图怎么看?一键查看方法说明

CAD怎么看图?CAD是我们日常办公学习中经常接触到的软件之一,越来越多的人即使非相关专业也在学习CAD使用的方法技巧。有时我们接收到CAD文件后,没有合适的软件可以打开它就有点麻烦,今天给小伙伴们说一个快速看图的方式。 一些CAD…

不会画建筑CAD图纸?建筑CAD设计全流程解析打包送给你!

建筑CAD图纸通常比较复杂,但千里之行始于足下,当我们要绘制一张建筑CAD图纸时,应当怎么着手呢?本CAD教程整理了相关绘图流程解析打包送给你! 从建筑CAD图纸内容上来划分,图纸的空间设计包括平面图、立面图、…

cad查看_微信接收图纸dwg怎么打开?如何手机查看CAD图纸,三步免费教你

如果微信上接收到CAD图纸,第一想法是什么? 如何进行打开? 都知道CAD图纸文件难以打开更是难以进行编辑,很多情况下都是必须要使用电脑才能够进行打开,想要在手机上打开dwg图纸文件应该怎么操作呢? 今天这里…

CAD手机看图中怎么将编辑好的图纸文件微信发送给其他的人?

CAD手机看图中怎么将编辑好的图纸文件微信发送给其他的人?现在有了手机相关的CAD辅助软件,我们可以轻松的进行查看编辑图纸,就算是没有电脑,也不会存在限制,那么在手机上,我们要是将图纸编辑好之后&#xf…