神经网络项目一般分为以下3个模块,数据处理,模型搭建,参数设置
数据处理部分
class CovidDataset(Dataset): def __init__(self, file_path, mode): # 打开指定路径的文件,以只读模式读取 with open(file_path, "r") as f: # 使用csv.reader读取文件内容,并转换为列表 ori_data = list(csv.reader(f)) # 将读取的数据转换为numpy数组,去掉第一行(表头)和第一列,再转换为float类型 csv_data = np.array(ori_data)[1:, 1:].astype(float) # 根据不同的模式(train、val、test)对数据进行划分 if mode == "train": # 训练集:选取索引不是5的倍数的数据 indices = [i for i in range(len(csv_data)) if i % 5 != 0] elif mode == "val": # 验证集:选取索引是5的倍数的数据 indices = [i for i in range(len(csv_data)) if i % 5 == 0] elif mode == "test": # 测试集:选取所有数据 indices = [i for i in range(len(csv_data))] # 根据选取的索引获取特征数据X,这里取前93列作为特征 X = torch.tensor(csv_data[indices, :93]) if mode != "test": # 如果不是测试集,获取标签数据Y,这里假设最后一列是标签 self.Y = torch.tensor(csv_data[indices, -1]) # 对特征数据X进行标准化处理,使其均值为0,标准差为1 self.X = (X - X.mean(dim=0, keepdim=True)) / X.std(dim=0, keepdim=True) self.mode = mode def __getitem__(self, item): if self.mode == "test": # 如果是测试集,只返回特征数据X return self.X[item].float() else: # 如果不是测试集,返回特征数据X和标签数据Y return self.X[item].float(), self.Y[item].float() def __len__(self): # 返回数据集的长度,即特征数据X的数量 return len(self.X)