• 杂记(3):在Pytorch中如何操作将数据集分为训练集和测试集?


    在Pytorch中如何操作将数据集分为训练集和测试集?

    0. 前言

    数据集需要分为训练集和测试集! 其中,训练集单纯用来训练,优化模型参数;测试集单纯用来测试,评价模型效果。然而,如何将数据集分为训练集和测试集这个简单的问题网上的回答也是五花八门,明明有简单的方法,当然不想用麻烦的方法啦!因此,这里做一下简单记录!

    1. 手动切分

    这里所言的手动切分指的是:将数据集前面一部分分为训练集,后面一部分分为测试集。具体代码而言如下:

    # 假设所有数据极为数组a 标签为b
    train_X = a[:int(0.8*len(a))]
    test_X = a[int(0.8*len(a)):]
    
    train_Y = b[:int(0.8*len(a))]
    test_Y = b[int(0.8*len(a)):]
    
    train_dataset= Data.TensorDataset(torch.FloatTensor(train_X ), torch.FloatTensor(train_Y ))
    test_dataset= Data.TensorDataset(torch.FloatTensor(test_X), torch.FloatTensor(test_Y))
    
    trainLoader = DataLoader(dataset = train_dataset,batch_size = 18,num_workers = 0,shuffle = True)
    testLoader = DataLoader(dataset = test_dataset,batch_size = 18,num_workers = 0,shuffle = True)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2. train_test_split方法

    使用机器学习中的 train_test_split 方法!在机器学习中切分数据集一般都用该方法,但是在Pytorch中还是需要进行转换后方可输入模型。

    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(a, b, test_size=0.33, random_state=42)
    
    train_dataset= Data.TensorDataset(torch.FloatTensor(X_train), torch.FloatTensor(y_train))
    test_dataset= Data.TensorDataset(torch.FloatTensor(X_test), torch.FloatTensor(y_test ))
    
    trainLoader = DataLoader(dataset = train_dataset,batch_size = 18,num_workers = 0,shuffle = True)
    testLoader = DataLoader(dataset = test_dataset,batch_size = 18,num_workers = 0,shuffle = True)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3. Pytorch自带方法

    Pytorch中自带的有将数据集随机切分的方法 ( torch.utils.data.random_split ),不需要额外的操作!!!!具体代码如下:

    import torch.utils.data as Data
    
    dataset = Data.TensorDataset(torch.FloatTensor(a), torch.FloatTensor(b))
    batch_size = 16
    # 将数据集分为训练集和测试集
    trainLoader, testLodaer = Data.random_split(dataset,
                                                lengths=[int(0.9 * len(dataset)),
                                                len(dataset) - int(0.9 * len(dataset))],
                                                generator=torch.Generator().manual_seed(0))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4. 总结

    到此,使用 在Pytorch中如何操作将数据集分为训练集和测试集已经介绍完毕了!!! 如果有什么问题欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的方法也可以在评论区提出,后续会对其进行添加!!!!

    如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。

  • 相关阅读:
    【c#】adapter.fill(dt)报错specified cast is not valid
    某猫投诉app逆向 【一鱼多吃app逆向】
    算法模型总结:哈希
    Angular 项目升级需要注意什么?
    python 如何自动读取含“xx”关键字的excel文件,并返回一个DataFrame
    【React】第八部分 react脚手架安装以及react脚手架配置代理
    Web3开发者技术选型:前端视角(next.js)
    双非本科是如何逆袭的?这位同学有点东西
    灯具类产品各站点上架TEMU平台需要提供什么认证?
    神经网络的基本工作原理——机器学习
  • 原文地址:https://blog.csdn.net/qq_36758270/article/details/134261653