深度学习打乱数据的方法

在深度学习中,我们对数据集进行处理,放到神经网络之前,往往需要先打乱数据集,如果数据集是ndarray(numpy)数据,属性(features)和标签(labels)在同一个array的话,也就是labels是在数据的最后一个维度,前几个维度均为数据的属性,这样我们可以通过numpy来打乱数据集。
代码如下:

import numpy as np
dataset = np.load(filename)
np.random.shuffle(dataset)
features = dataset[:,:-1]
labels = dataset[:,-1]

注意这里的np.random.shuffle() 是没有返回值的。加入代码是dataset = np.random.shuffle(dataset),代码是会报错的。

如果features 和labels是分开的ndarray,那么可以使用一下代码来打乱数据集。

import random 
random_index = random.sample(list(range(dataset.shape[0])),dataset.shape[0])
train_size = int(dataset.shape[0] * 0.6)
train_index = random_index[:train_size]
test_index = [i for i in train_index if i not in train_index]
train_features = features[train_index]
test_labels = labels[test_index]
test_features = features[test_index]
test_labels = labels[test_index]

注意这里的random.sample 采样的数据必须是list格式的。可以注意到在得到test_index的方法中,我使用了表达式的方法得到train_index的补集。这样求补集的方法在数据量小的时候还能凑活用,但是数据量大的话迭代判断会非常慢。用下面的方法可以快速求得train_index的补集。

test_index = list(set(random_index).difference(set(train_index)))

这种方法速度狂快无比,哈哈哈。。。。。。。。。。。。。。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值