LSTM实战:基于PyTorch的新冠疫情确诊人数预测

本文介绍了如何使用Python和LSTM模型分析COVID-19全球确诊数据,包括数据清洗、预处理、模型构建与训练,以及对未来30天的预测。尽管模型性能一般,但展示了基本的数据分析和预测流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

引言

一、探索数据集

1、导入相关库文件

2、导入每日确诊人数数据集

3、清洗每日确诊人数数据集

4、每日累计确诊的人数及其数据集可视化

5、每日撤消累计后的确诊人数及其数据集可视化

6、查看总共有多少数据量

二、数据预处理

1、训练和测试数据集

2、数据放缩

三、建立模型

1、封装训练模型

2、辅助训练模型

四、训练模型

五、预测模型 

1、局部数据预测

 2、全部数据预测


引言

在 Python 中使用 LSTM 预测新型冠状病毒每日确诊病例。参考原文


一、探索数据集

确诊人数数据网址下载该文件 time_series_covid19_confirmed_global.csv

1、导入相关库文件

import torch  # 导入PyTorch库,用于构建和训练深度学习模型
import os  # 导入os库,用于与操作系统交互
import numpy as np  # 导入NumPy库,用于数值计算
import pandas as pd  # 导入Pandas库,用于数据处理和分析
from tqdm import tqdm  # 导入tqdm库,用于显示进度条
import seaborn as sns  # 导入Seaborn库,用于数据可视化
from pylab import rcParams  # 导入rcParams对象,用于设置图形参数
import matplotlib.pyplot as plt  # 导入Matplotlib库,用于绘图
from matplotlib import rc  # 导入rc对象,用于自定义Matplotlib的默认配置
from sklearn.preprocessing import MinMaxScaler  # 导入MinMaxScaler,用于数据标准化
from pandas.plotting import register_matplotlib_converters  # 导入register_matplotlib_converters,用于处理时间序列数据
from torch import nn, optim  # 导入神经网络和优化器模块

# 设置Matplotlib使用的后端为TkAgg
import matplotlib
matplotlib.use('TkAgg')

# 设置Seaborn的样式和调色板
sns.set(style='whitegrid', palette='muted', font_scale=1.2)

# 自定义颜色调色板
HAPPY_COLORS_PALETTE = ["#01BEFE", "#FFDD00", "#FF7D00", "#FF006D", "#93D30C", "#8F00FF"]

# 设置Seaborn的调色板
sns.set_palette(sns.color_palette(HAPPY_COLORS_PALETTE))

# 设置Matplotlib图形的大小
rcParams['figure.figsize'] = 14, 10

# 注册Matplotlib转换器
register_matplotlib_converters()

# 设置随机种子,以确保结果可复现
RANDOM_SEED = 42
np.random.seed(RANDOM_SEED)
torch.manual_seed(RANDOM_SEED)

2、导入每日确诊人数数据集

读取COVID-19全球累计确诊病例数据集

# 数据集包含省、国家/地区、纬度和经度以及病例数是累积的。
df = pd.read_csv('./data/time_series_covid19_confirmed_global.csv')
print(df.head())

3、清洗每日确诊人数数据集

去除前四列无用数据,保留每日累计确诊病例数据 

# 去掉前四列我们不需要的数据,通过切片直接获取第五列之后的数据
df = df.iloc[:, 4:]
print(df.head())

4、每日累计确诊的人数及其数据集可视化

对每日累计确诊病例进行求和,转换索引为日期时间格式 

# 我们对所有行求和,这样就得到了每日累计案例
daily_cases = df.sum(axis=0)
daily_cases.index = pd.to_datetime(daily_cases.index)
print(daily_cases.head())

plt.plot(daily_cases)
plt.title("Cumulative daily cases")
plt.show()

5、每日撤消累计后的确诊人数及其数据集可视化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞雪兆我心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值