LSTM实战:新冠病毒美国确诊人数预测

LSTM是RNN容易梯度消失的改进,是一种特殊的RNN方法, 和标准的RNN模块不同, LSTM模块中主要包括一个状态结构和三个门结构,可以解决长时间依赖问题。
那LSTM是如何解决长时间依赖问题的呢 ? 通过三个门结构

  1. “遗忘门”控制之前信息的输入程度
  2. “输入门”控制当前信息的输入程度
  3. “输出门”控制最终的输出

为什么LSTM可以解决梯度消失问题呢,当前的单元信息是通过输入门控制之后叠加的,而RNN是叠乘 。
在这里插入图片描述

这是经典的LSTM结构图,之前一直对LSTM一知半解,其实就没有明白是怎样运算的,为什么这样可以有很好的效果,当我自己手动计算一遍之后,抽象的连接变成具体的计算,感觉有那味了 ,下面是具体的数据计算流程图,参数初始化全部为0.1 。

下面看具体代码, 根据美国前十天的疫情信息预测感染人数

import numpy as np 
import pandas as pd 
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM
# 流程如下: 数据处理(读取,清洗, 标准化, 重塑 ,分割) ,模型构建, 训练 ,预测, 可视化
data = pd.read_csv('./pythonwd/05_lstm/Convid_19_american.csv')
data = data.iloc[:, 1:]
# 数据质量较好,不用清洗
# 标准化 
mean = data['total_confired_count'].mean(); std = data['total_confired_count'].std() 
data = (data - data.mean(axis=0))/ data.std(axis=0)
data = data.values
# 用十天的数据预测当前感染人数,构建训练数据
def data_gen(step=10, start_loc=0, end_loc=142):
    x, y =[], []
    for i in range(len(data)-step):
        x_temp = data[i:i+step, :-1]
        y_temp = data[i+step:i+step+1,-1]
        x.append(x_temp.tolist())
        y.append(y_temp.tolist())
    x = np.array(x) ; y=np.array(y)
    return x,y
train_x, train_y = data_gen()

# 构建模型 
model = Sequential()
model.add(LSTM(128, input_shape=(10, 4), dropout= 0.5, recurrent_dropout=0.2, return_sequences=False))
model.add(Dropout(0.5))
model.add(Dense(1))
model.compile(loss= 'mse', optimizer='Adam', metrics=['accuracy'])
print(model.summary()) 

# 训练
LSTM = model.fit(train_x, train_y, batch_size=10, epochs=100,
                 validation_data =(train_x, train_y)) 
# 预测 
predict_y = model.predict(train_x)

#可视化
import matplotlib.pyplot as plt
train_y =  train_y * std + mean
predict_y = predict_y*std + mean 
plt.figure()
plt.plot(range(len(train_y)), train_y, label="true numbel", color = 'red')
plt.plot(range(len(train_y)), predict_y, label="predict numbel", color = 'green')
plt.xlabel('Date')
plt.ylabel('Number of infections in USA')
plt.legend()
plt.show()
         

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43705953/article/details/107418717