基于深度学习的人数预测

基于深度学习的人数预测

目录

前言

一、定义一个数据集类

二、是否使用所有特征

三、创建深度学习模型

四、定义用于训练和验证模型的函数

五、定义用于测试模型的函数

六、准备训练数据必要的参数并且开始训练数据

七、对模型进行测试

运行结果

前言

本文仅为个人学习中的体会,非专业人士

一、定义一个数据集类

代码如下(示例):

class CovidDataset(Dataset):
    def __init__(self,file_path,mode="train",all_feature=True,feature_dim=6):
        with open(file_path,"r") as f:
            ori_data = list(csv.reader(f))#打开并读取csv文件,并将内容存储在ori_data中
            column = ori_data[0]#column中存储csv文件的第一行
            csv_data = np.array(ori_data[1:])[:,1:].astype(float)#把ori_data转化为矩阵,去除第一行和第一列的数据,把数据转换为浮点数,存储在csv_data中
        feature = np.array(ori_data[1:])[:,1:-1]#提取除了最后一列之外的所有特征
        lable_data = np.array(ori_data[1:])[:,-1]#提取最后一列作为标签
        if all_feature:
            col = np.array([i for i in range(0,93)])#如果all_feature为True,则使用所有特征(假设总共有93个特征)
        else:
            _,col = get_feature_importance(feature,lable_data,feature_dim,column)#如果all_feature为False,则使用feature_dim个特征
        col = col.tolist()#把col转换为列表
        self.mode = mode
        if mode == "train":#每5个样本中取4个作为训练集。
            indices = [i for i in range(len(csv_data)) if i % 5 != 0]
            data = torch.tensor(csv_data[indices, :-1])#取出指定行中除了最后一列的所有数据
            self.y = torch.tensor(csv_data[indices, -1])
        elif mode == "val":#每5个样本中取1个作为验证集。
            indices = [i for i in range(len(csv_data)) if i % 5 == 0]
            data = torch.tensor(csv_data[indices, :-1])#取出指定行中除了最后一列的所有数据
            self.y = torch.tensor(csv_data[indices, -1])
        else:#使用所有样本作为测试集。
            indices = [i for i in range(len(csv_data))]
            data = torch.tensor(csv_data[indices])#选择指定行的所有数据
        data = data[:,col]#选择特征列
        self.data = (data - data.mean(dim=0,keepdim=True))/data.std(dim=0,keepdim=True)#对数据进行标准化处理,使每个特征的均值为0,标准差为1。


    def __getitem__(self, idx):
        if self.mode != "test":#如果是训练模式或验证模式,返回第idx个样本的特征和标签
            return self.data[idx].float(),self.y[idx].float()
        else:
            return self.data[idx].float()#如果是测试模式,则只返回第idx个样本的特征

    def __len__(self):
        return len(self.data)#返回数据集的长度

二、是否使用所有特征

代码如下(示例):


  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值