根据美国一项COVID-19的调查40个州,4种COVID可能的症状,8个日常的行为,5个心里方面的状况,和是否呈阳性。现在有连续三天的调查资料作为训练资料,测试资料为根据前两天的资料预测第三天的阳性情况。
训练资料如图:
测试资料:缺第三天的阳性情况,需要进行预测
1.构建神经网络
# 导入torch神经网络工具包
import torch
import torch.nn as nn
# 构建一个简单神经网络
# torch.nn.Sequential是一个Sequential容器,模块将按照构造函数中传递的顺序添加到模块中。
def myModel(input_dim):
model=nn.Sequential(
nn.Linear(input_features=input_dim,output_features=64),
nn.Relu(),
nn.Linear(input_features=64,out_features=1)
)
这样就构建了一个三层的神经网络,其中的64是依据经验设定,第一层为线性层,根据模型的输入特征值,输出64个特征值,第二层为普通的激活函数层,第三层为线性层,输入64个特征值,输出为1,这里指输出为第三天的阳性情况,因此必须是1个特征。
2神经网络的输入
pytorch数据读取的核心是torch.utils.data.DataLoader类。即如果使用pytorch构建神经网络时,那么DNN中传入的数据类型就是DataLoader类。
from torch.utils.data import Dataloader
import torch.utils.data as data
def pre_Dataloader():
dataloader=Dataloader(
dataset=dataset, batch_size=batch_size,
shuffle=(mode == 'train'), drop_last=False,
num_workers=0, pin_memory=True)
# 这里直接输入表格内的数据是有问题的因此,需要先构建一个数据预处理方法使其能够满足于dataloader的数据输入,因此需要继承dataset作为父类,才能输入到dataloader中
# 在训练集和测试集的数据略有不同,因此加一个mode,使下面方法同时都适用
# 字典型数据集是指实现了__getitem__()和__len__()协议,表示从索引到数据样本的映射。
# 需要初始化三个协议
class COVID19Dataset(data.Dataset):
def __int__