【Pytorch】从0开始的数据集制作,从numpy数组到Dataset,再到Dataloader

本文介绍了如何使用Pytorch从numpy数组构建自定义数据集,包括数据预处理、Dataset类的创建以及Dataloader的使用,以实现序列预测任务的数据加载。内容涵盖数据生成、切分、Dataset类定义以及Dataloader实例化。
摘要由CSDN通过智能技术生成

【Pytorch】从0开始的数据集制作,从numpy数组到Dataset,再到Dataloader

所需import的库

import torch
import numpy as np
from torch.utils.data import Dataset, DataLoader
import matplotlib.pyplot as plt

1.首先收集想要解决问题的场景下的数据,这里我是自己生成了一组数据(1000个点的sin函数带有噪声)

'''
首先生成一个sin函数,作为伪时间序列数据
'''
T = 1000
x = torch.arange(1, T + 1, dtype=torch.float32)
y = torch.sin(0.01 * x) + torch.normal(0, 0.1, (T,))#每个y加上一个0到0.2(左闭右开)的噪声
plt.plot(x, y)
plt.show()

数据绘制的图为:
在这里插入图片描述
2.我的场景是利用序列的前8个数,预测第9个数,所以在上面数据的基础之上,我要自己切分数据,形成数据集的基本特点(features-target对)

def data_prediction(data, num_features):
    '''
    准备数据集的函数
    '''
    features, target = [], []
    for i in range(len(data)-num_features):
        f = data[i:i+num_features]
        t = data[i+num_features]
        features.append(list(f))
        target.append(t)

    return np.array(features), np.array(target)

下面就是直接调用写好的函数,返回features和target数据包

    '''
        第一步,创建好数据集,即对应好训练数据与目标数据#
             我们的目标是用前面序列前面八个值的大小预测第9个值
             第一条feature-target应该为 features:(y0, y1, y2...,y7),target:(y8)
             最后一条feature-target应该为 features:(y991, y992, y993...,y998),target:(y999)
    '''
    dataset_features, dataset_target = data_prediction(y, 8)

3.数据集的拆分,我是精确地拆成了四个数组,分别是训练集的特征,训练集的target,测试集的特征,测试集的target

def dataset_split(data_features, data_target, ratio=0.8):
    '''
    功能:训练集与测试集的特征与target分离
    ratio:表示训练集所占的百分比
    '''
    split_index = int(ratio*len(data_features))
    train_features = data_features[:split_index]
    train_target = data_target[:split_index]
    test_features = data_features[split_index:]
    test_target = data_target[split_index:]
    return train_features, train_target, test_features, test_target

然后将步骤2的输出调用拆分成我们需要的几个数据包:

    
  • 16
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值